Array (Verzweigung)

delphinhawe

Erfahrenes Mitglied
Code:
# include <stdio.h>

void main(void)
{
 int x[10],y;

 for(y=0;y<10;y++)
 {
 printf("%i \n",x[y]=y);
 }
}

Hallo Programmierer,

bisher habe ich das Variablenfeld ,, int x [10] , y; “ geübt und im C-Buch gut verstanden.
Es wird 10 mal ausgegeben, so dass ich nicht 10 mal Datentyp, Name und Inhalt schreiben muss.
Die Ausgabe sieht wie folgt aus: 0 1 2 3 4 5 6 7 8 9.

Nun steht im Buch ein zweites Beispiel wie folgt: ,,int x [6] = {5, -89, 3, 63, 0, -17}; " ,
zu lesen im Buch aber nicht die 2.Quellcode-Beispiel und keine Erklärung.
Wenn ich das 2.Variablenfeld betrachte, dann denke ich , dass das 2.Variablenfeld 6 mal ausgegeben wird.
Die Ausgabe sieht dann so aus: 5 –89 3 63 0 –17 anstatt 0 1 2 3 4 5!

Nun klappt mein 2. Quellprogramm nicht so ganz.
Ich würde mich freuen, wenn ihr mein Quellprogramm nachbessert! Danke schon mal im Voraus ;)

Gruß delphinhawe

Code:
# include <stdio.h>

void main(void)
{
 int x [6] = {5, -89, 3, 63, 0, -17};
 int y; 

 for(y=0;y<10;y++)     //?
 {
 printf("%i \n",x[y]=y); //?
 }
}
 
Verstehe dich nicht ;-)

Das 2te Beispiel zeigt eine Initialisierung des Arraay, also die Werte werden vorgegeben.
Möchtest du sie jetzt ausgeben ? Wenn ja dann ändere deine for-schleife das sie nur noch bis 5 zählt.
Dein 2ter Quellcode ist doch genau gleich dem ersten... Sinn ?
Was willst du eigentlich genau ? :)

mfg
 
Ja, ich möchte ausgeben! Ich habe die For-Schleife geändert, also auf 5.
Trotzdem bekomme ich die Fehlermeldung (siehe Bilder).

,,Dein 2ter Quellcode ist doch genau gleich dem ersten... Sinn ?“
Ja, aber wöfür steht ,, {5, -89, 3, 63, 0, -17};“?
Ich wollte wissen, wie die Ausgabe bewirkt.

Ich möchte nur wissen, was ,, {5, -89, 3, 63, 0, -17};“ macht?

Also, ich möchte die Ausgabe lesen, damit ich besser verstehen kann.

Ich habe bisher nur ,,int x [10] , y“ außer Verzweigung benutzt.
 

Anhänge

  • Bild3.jpg
    Bild3.jpg
    41,3 KB · Aufrufe: 16
  • Bild4.jpg
    Bild4.jpg
    56 KB · Aufrufe: 16
C++:
#include <stdio.h>

int main(void) {

   int x[6] = { 5, -89, 3, 63, 0, -17 };
   //das gleiche wäre:
   //x[0] = 5; 
   //x[1] = -89; 
   //x[2] = 3; 
   //x[3] = 63; 
   //x[4] = 0; 
   //x[5] = -17; 
   
   int y; 
   
   for( y = 0; y < 6; y++ )
      {
         //printf(" %i",x[y]=y);
         //die obere zeile ist eigentlich unsinnig weil
         //du das x[] mit dem wert y beschreibst 
         //(x[y]=y) und dann erst ausgibst. 
         //Ausgabe wäre dann: "0 1 2 3 4 5"
         
         printf( " x[%i] = %i\n", y, x[y] );
         //so wäre es in deinem Sinne
      }
   
   return 0;
}

edit:

wieder zu lang gebraucht bis ich geantwortet habe....
 
Zuletzt bearbeitet von einem Moderator:
@ _Van:
Ich kann immer wieder etwas neues lernen..super :)

Noch eine Frage:

Jetzt beschäftige ich mich mit Mehrdimensionalen Feldern
,, int x [4] [20]; " .

Ich möchte 4 Spalten und 20 Zeilen ausgeben.
Ich weiß nicht, wie es weiter geht,
anbei Quellprogramm:

Code:
# include <stdio.h>

void main(void)
{
 int x [4] [20];

 for(=0;<20;)    //?
 {
 printf("%i  %i \n",x[]=);   //?
 }
}
 
Nur mal so als Tip sowas sollte unter google zu finden sein aber sind wir mal nicht so :)
C++:
# include <stdio.h>

void main(void)
{
 int x[20][4];  // 20 Zeilen und 4 Spalten
 int i,j; 

 for(i=0; i<20; i++)    // Zeilen
 {
   for (j = 0; j < 4; j++)  // Spalten
     printf("x[%i][%i] = %i \n",i,j,x[i][j]);   // Ausgabe
 }
}

mfg
 
Eigentlich müsste das ja so sein:

C++:
#include <stdio.h>
#include <stdlib.h>

      int main(void) {
         const int intl = sizeof(int);
         int x[6] = { 5, -89, 3, 63, 0, -17 };
         int y;
         int xlen = (sizeof(x)/intl);

         for( y = 0; y < xlen; y++ )

            {

               printf( " x[%i] = %i\n", y, x[y] );

            }

         return 0;

      }
 
Naja sieht nach C-Sauerei aus, von d.h. sind ja Makros erlaubt:
C++:
#define SIZEOF_ARRAY_STACK(#) sizeof(#) / sizeof(#[0])

#include <stdio.h>

int main() 
{
    const int data[] = { 5, -89, 3, 63, 0, -17 };

    int y;
    for (y = 0; y < SIZEOF_ARRAY_STACK(data); ++y)
        printf("array[%i] = %i\n", y, data[y]);

    return 0;
}
...
 
Zurück