---
title: "nestlade for satser i C#?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/166690-nestlade-for-satser-i-c"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "CatZ"
published: "2007-11-26T10:59:03.000Z"
updated: "2007-11-26T13:09:40.000Z"
replies: 8
views: 986
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/166690-nestlade-for-satser-i-c"
---

# nestlade for satser i C#?

## #1 — CatZ, 2007-11-26T10:59Z

Jag sitter och pillar lite på en övningsuppgift jag fick av en god vän i Belgien som läser C# programmering.

Jag har två arrayer 

```
static void ArrayExersis()
{
	int[] a = new int[5] { 1, 3, 5, 7, 9 };
	int[] b = new int[5] { 2, 4, 6, 8 };

	for (int i = 0; i != a.Length; i++)
	{
		Console.WriteLine(a[i]);
	}//end for
}//end ArrayExersis
```

Och vill få följande output 

```
1 
24 
135 
2468 
13579
```

Hur ska jag lösa det? Förra övningen lyckades jag lösa som följer nedan men jag lyckas inte applicera den lösningen på denna alls.

Kan man göra nestlade loopar eller ska man styra det på något annat vis?

```
static void ArrayOvning1()
{
	int[] a = new int[5] { 1, 2, 3, 4, 5 };
	int[] b = new int[5] { 10, 20, 30, 40, 50 };
	int[] c = new int[5] { 100, 200, 300, 400, 500 };
	int[] d = new int[9];

	//sets the value of the first 3 elements
	d[0] = (a.Sum());
	d[1] = (b.Sum());
	d[2] = (c.Sum());

	//sets the values of the 4th to the 8th element
	for (int i = 0; i < a.Length; i++)
	{
		d[i + 3] += (a[i] + b[i] + c[i]);
	}//end for

	//sets the value of the 9th element
	for (int i = 0; i != a.Length; i++)
	{
		d[8] += (a[i] * b[i] * c[i]);
	}//end for

	//write the numbers to console
	for (int i = 0; i != d.Length; i++)
	{
		Console.WriteLine(d[i]);
	}//end for  
}
```

Permalänk: https://www.webforum.nu/p/166690

## #2 — Gein, 2007-11-26T11:20Z

Vill du ha en lösning rätt ut eller vägledning?

Permalänk: https://www.webforum.nu/p/2054027

## #3 — headbug, 2007-11-26T11:27Z

**/red Gein är bättre lärare än vad jag är :)** 

Jag ser inte varför du behöver nästlade loopar alls.

Loopa från i = 1 till 5.

Om *i* är udda läs ut *i* element ur udda-vektorn, om *i* är jämn läs ut *i* element ur jämn-vektorn.

Att kolla jämn/udda gör man förslagsvis med modulo-operatorn %

```
if ( (i%2)==1) // Udda tal
{
  for (int k=0; k<i; k++)
  {
    Console.Write(a[k].ToString());
  }
 else // bör dom vara jämna :)
 {
   for (int k=0; k<i; k++)
  {
    Console.Write(b[k].ToString());
  }
  Console.Writeline("\n");
}
```

Verkar det rimligt?

Permalänk: https://www.webforum.nu/p/2054028

## #4 — Gein, 2007-11-26T11:29Z

Och eftersom en lösning kom så kan jag väl visa min med då.
Jag använde också modulo för att avgöra vilken array man skulle skriva ut ifrån men jag körde in modulo-svaret direkt in i en tredje array som höll reda på a och b:

```
            int[] a = new int[5] { 1, 3, 5, 7, 9 };
            int[] b = new int[4] { 2, 4, 6, 8 };
            
            int[][] numArray = new int[][] { a, b };

            for (int i = 0; i != a.Length; i++)
            {
                for (int j = 0; j != i+1; j++)
                {
                    Console.Write(numArray[i % 2][j]);         
                }
                Console.Write('\n');
            }//end for
```

Permalänk: https://www.webforum.nu/p/2054029

## #5 — headbug, 2007-11-26T11:30Z

Snyggt Gein!

Permalänk: https://www.webforum.nu/p/2054030

## #6 — sgtpepper, 2007-11-26T11:43Z

Jäklar, jag var lite sen (och gjorde min i Java). Ganska identisk med Geins :)

```
public class Foo {

	public static void main(String[] args) {
		int[] a = { 1, 3, 5, 7, 9 };
		int[] b = { 2, 4, 6, 8 };
		int[][] c = { a, b };
		
		for(int y = 0; y < a.length; y++) {
			for(int x = 0; x <= y; x++) {
				System.out.print(c[(y % 2)][x]);
			}
			System.out.println();
		}
	}
}
```

Permalänk: https://www.webforum.nu/p/2054035

## #7 — CatZ, 2007-11-26T11:56Z

tack allihop för svaren, det hade inte behövts hela lösningen jag ville egentligen bara veta det som Gein och sgtpepper skrev att man gör en tredje array som håller reda på vilken det är :)

Jag är dock lite nyfiken på koden 

```
int[][] numArray = new int[][] { a, b };
```

 om någon av er mästerkodare skulle kunna förklara den lite. Jag är med på int\[\] men att sedan lägga till \[\] direkt efter betyder det att numArray då kan ta 2st arrayer i sina 2 element?

Det trodde jag inte var möjligt :)

headbug: jag gjorde som du tidigare och det fungerar jättebra det också!

Permalänk: https://www.webforum.nu/p/2054039

## #8 — Gein, 2007-11-26T12:00Z

int\[\] är ju en array av integers. Då blir int\[\]**\[\]** rimligtvis en array av int-arrayer :)
Den behöver inte nödvändigtvis ta bara 2 arrayer som i vårat fall utan du kan pilla in flera stycken om du så önskar.

red/ För att förtydliga hur du lägger in fler än två arrayer. 
Alltså t.ex. 

```
            int[] a = new int[5] { 1, 3, 5, 7, 9 };
            int[] b = new int[4] { 2, 4, 6, 8 };
            int[] c = new int[3] { 4, 5, 6 };
            int[][] numArray = new int[][] { a, b, c };
```

Permalänk: https://www.webforum.nu/p/2054042

## #9 — sgtpepper, 2007-11-26T13:09Z

> **CatZ skrev:**
>
> Jag är dock lite nyfiken på koden 
>
> ```
> int[][] numArray = new int[][] { a, b };
> ```
>
>  om någon av er mästerkodare skulle kunna förklara den lite. Jag är med på int\[\] men att sedan lägga till \[\] direkt efter betyder det att numArray då kan ta 2st arrayer i sina 2 element?

Det är helt enkelt en flerdimensionell array, istället för en dimension så har den två dimensioner. Du kan ha hur många dimensioner som helst i en array.

```
int[] one = new int[] { 1, 2, [b]3[/b] };
int[][] two = new int[] { one, [b]one[/b], one };
int[][][] three = new int[] { [b]two[/b], two, two};

three[0][1][2] == 1
```

Permalänk: https://www.webforum.nu/p/2054050

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/166690-nestlade-for-satser-i-c
