Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Theoretische Informatik (http://www.informatikerboard.de/board/board.php?boardid=5)
--- array in c (http://www.informatikerboard.de/board/thread.php?threadid=1821)


Geschrieben von lilli. am 03.03.2014 um 14:59:

  array in c

Hey,
wir haben folgendes c code fragment gegeben und müssen die werte angeben. rauskommen soll: 0,1,2,42,42,42, ich verstehe die lösung leider nicht, wie kommt man überhaupt auf 42?

int i,j;
int counter = 0;
int array[2][3];
for (i = 0; i < 2; i++)
for (j = 0; j < 3; j++)
array[i][j] = ++counter;
array[i][j] = counter--;

Geben Sie die Werte der Feldelemente an nach Beendigung der Schleifen an.

array[0][0]=
array[0][1] =
array[0][2] =
array[1][0] =
array[1][1] =
array[1][2] =



Geschrieben von as_string am 03.03.2014 um 15:58:

 

Hallo,

also die Zahlenfolge stimmt so überhaupt nicht... Zuerst wird das array mit Werten von 1 bis 6 gefüllt (ohne 0) und dann wird in der Zeile:
code:
1:
array[i][j] = counter--; 

hinter das Array geschrieben, was im Normalfall zu einem Absturz führen müsste...

Also irgendwas stimmt da gar nicht. Vielleicht irgendwelche Klammern vergessen?

Gruß
Marco



Geschrieben von lilli. am 03.03.2014 um 16:30:

 

nein hab das schon richtig abgetippt. soll ja nu en Fragment darstellen.



Geschrieben von eulerscheZahl am 03.03.2014 um 17:34:

 

Ich habe das Programm ausgeführt, wie erwartet keine 42.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
#include <stdio.h>

int main()
{
	int i,j;
	int counter = 0;
	int array[2][3];
	for (i = 0; i < 2; i++)
		for (j = 0; j < 3; j++)
			array[i][j] = ++counter;
	array[i][j] = counter--; //schreiben in nicht reservierten Speicher

	printf("array[0][0] = %d\n", array[0][0]); //1
	printf("array[0][1] = %d\n", array[0][1]); //2
	printf("array[0][2] = %d\n", array[0][2]); //3
	printf("array[1][0] = %d\n", array[1][0]); //4
	printf("array[1][1] = %d\n", array[1][1]); //5
	printf("array[1][2] = %d\n", array[1][2]); //6
}



Geschrieben von lilli. am 03.03.2014 um 17:49:

 

aber was macht denn der counter--?
bringt er nicht alles auf 1?

array[0][0] =1
array[0][1] =1
array[0][2] =1
array[1][0] =1
array[1][1] =1
array[1][2] =1



Geschrieben von eulerscheZahl am 03.03.2014 um 17:54:

 

counter-- steht außerhalb der Schleife, daher auch die Frage von Marco, ob du eine Klammer vergessen hast.
So z.B.
code:
1:
2:
3:
4:
5:
6:
for (i = 0; i < 2; i++)
    for (j = 0; j < 3; j++)
    {
        array[i][j] = ++counter;
        array[i][j] = counter--; 
    }



Geschrieben von lilli. am 03.03.2014 um 17:58:

 

achso ne, da war wirklich keine klammer. ok danke sehr . smile


Forensoftware: Burning Board, entwickelt von WoltLab GmbH