Seite 1 von 3

Allgemeines Array, Erklärung erbeten!! tut.at

Verfasst: Do Jan 28, 2010 1:13 pm
von dragonfloez
Hallo Leute,
ich bin imTut.at bei dem Thema Array angekommen und verstehe nur Bahnhof. Kann mir jemand das erklären so das man das versteht, bitte.

Beispiel:

Code: Alles auswählen

#include <stdio.h>
 
#define ANZAHL 50
 
int main()
{
  int eingaben[ANZAHL], i;
 
  for (i = 0; i < ANZAHL; i++)
    eingaben[i] = 0;  /* jedes Element mit 0 initialisieren */
 
  for (i = 0; i < ANZAHL; i++) /* Werte einlesen */
  {
    printf ("%d. Element: ", i);
 
    scanf ("%d", &eingaben[i]);
 
    if (eingaben[i] == 0)
    {
      printf ("\n--------- Ihre Eingabe: ---------\n");  /* dann schaut es übersichtlicher aus */
      break; /* bei 0 die Schleife abbrechen */
    }
  }
 
  for (i = 0; i < ANZAHL; i++) /* Werte ausgeben */
  {
    if (eingaben[i] != 0)  /* nur dann, wenn der Wert nicht Null ist, diesen ausgeben */
      printf ("%d. Element: %d\n", i, eingaben [i]);
    else   /* ansonsten Schleife abbrechen */
      break;
  }
 
  return 0;
}
Vielen Dank!



Also was ich soweit verstanden habe:

Initzialisiert wird erst "Eingaben" mit 50 und die Variable i mit integer.

1 for Schleife:
i wird mit 0 inizialisiert. Und wenn i kleiner als 50 ist wird der wert immer um eins nach durchlaufen der Schleife erhöht bis 50 erreicht ist.

dann Komt ein großes ????? bei mir. ( eingaben = 0;)

2 for Schleife:
i wird mit 0 initzialisiert, wenn i kleiner als 50 ist wird der Wert immer um eins erhöt beim durchlaufen der Schleife bis 50 erreicht ist.

dann erfolgt die eingabe der Werte.

eingaben wird definiert.

if anweisung:
wenn eingaben(i) dem Wert 0 entspricht wird die Schleife abgebrochen.

3 for schleife:
i wird mit 0 Initzialisiert. wenn i kleiner als 50 ist wird immer beim durchlaufen der Schleife der Wert um 1 erhöht bis 50 erreicht ist.

if Anweisung:
wenn eingaben (i) ungleich 0 ist.

Dann wieder großes ? ( printf ("%d. Element: %d\n", i, eingaben );)

ansonsten wird die Schleife abgebrochen.


Stimmt das soweit??

Re: Allgemeines Array, Erklärung erbeten!! tut.at

Verfasst: Do Jan 28, 2010 1:55 pm
von stampuhh
In der for-Schleife:

Code: Alles auswählen

eingaben[i] = 0;
Jedes Element des Arrays (Feldes) bekommt den Wert 0 damit überall etwas drin steht.

Code: Alles auswählen

printf ("%d. Element: %d\n", i, eingaben [i]);
Das i-te Element des Arrays wird ausgegeben.

Was der Code insgesammt macht: Es wird ein Feld mit 50 Werten erstellt und diesem werden 50 Werte zugewiesen solange man eine 0 eingibt (2. for-Schleife) und dann ausgegeben (3. for-Schleife) bis zur ersten 0.

mit eingaben greift man auf die i-te Stelle des Arrays "eingaben" zu. eingaben[0] ist zum Beispiel die erste Stelle, in diesem Fall der erste int-Wert den du eingegeben hast. Ein Array beginnt immer bei 0 zu zählen. Dein letztes Element ist in diesem Fall also eingabe[49]. Daher läuft die Schleife auch nur bis <50 und nicht bis <= 50.

Ansonsten hast du ja alles verstanden oder?

gruß stampuhh

Re: Allgemeines Array, Erklärung erbeten!! tut.at

Verfasst: Do Jan 28, 2010 2:00 pm
von Kerli

Code: Alles auswählen

int eingaben[ANZAHL], i;
dragonfloez hat geschrieben:Initzialisiert wird erst "Eingaben" mit 50 und die Variable i mit integer.
Ich weiß nicht ob du das so ganz richtig meinst. Dabei wird nämlich keine Variable initialisiert sondern zwei Variablen deklariert (bzw. auch definiert). Einmal das Array 'eingabe' mit Platz für 50 Werte vom Typ 'int' und noch die 'int' Variable 'i'. Eine Definition mit einer Initialisierung einer Variable würde zum Beispiel so ausschauen:

Code: Alles auswählen

int i = 0; // mit 0 initialisieren...
dragonfloez hat geschrieben:dann Komt ein großes ????? bei mir. ( eingaben = 0;)

Mit dem Operator 'array_name' greifst du auf das i-te Element in dem Array 'array_name' zu, wobei man bei Null zu zählen beginnt. Schau dazu doch auch einmal ins Wiki:

http://proggen.org/doku.php?id=c:type:array

Code: Alles auswählen

scanf ("%d", &eingaben[i]);
dragonfloez hat geschrieben:eingaben wird definiert.


Nein, eingabe wird mit scanf ein Wert zugewiesen. Eine Definition ist die Stelle im Code an der man Platz für eine Variable vom Compiler verlangt (zb. 'int i;')

dragonfloez hat geschrieben:Dann wieder großes ? ( printf ("%d. Element: %d\n", i, eingaben );)

Das wirst du verstehen sobald du den Array Operator ([]) verstanden hast ;)

edit: Ich war wohl zu langsam :D

Re: Allgemeines Array, Erklärung erbeten!! tut.at

Verfasst: Do Jan 28, 2010 2:04 pm
von stampuhh
Naja dafür hast du Sachen erwähnt die ich übersehen habe ;)

gruß stampuhh

Re: Allgemeines Array, Erklärung erbeten!! tut.at

Verfasst: Do Jan 28, 2010 2:07 pm
von dragonfloez
Hallo

Also was ich soweit verstanden habe:

Deklariert wird erst "Eingaben" mit 50 und die Variable i mit integer.

1 for Schleife:
i wird mit 0 initzialisiert, solange i kleiner als 50 ist wird der Wert immer um eins nach durchlaufen der Schleife erhöht bis 50 erreicht ist.

eingaben = 0; Die komplette Variable wird als 0 deklariert. Also 1-49 mit 0.

2 for Schleife:
i wird 0 inizialisiert, solange i kleiner als 50 ist wird der Wert immer um eins nach durchlaufen der Schleife erhöht bis 50 erreicht ist.

dann erfolgt die eingabe der Werte.

eingaben Werte werden zugewiesen:

Also z.B.:
1 =16
2=3
3=2
4=1
5=2
bis 49

if anweisung:
wenn eingaben(i) dem Wert 0 entspricht wird die Schleife abgebrochen.

3 for schleife:
i wird mit 0 inizialisiert, solange i kleiner als 50 ist wird der Wert immer um eins nach durchlaufen der Schleife erhöht bis 50 erreicht ist.

if Anweisung:
wenn eingaben (i) ungleich 0 ist.

printf ("%d. Element: %d\n", i, eingaben ); heißt dann werden alle Werte werden aufeinmal ausgegeben.

ansonsten wird die Schleife abgebrochen.


Habe ich das Prinzip verstanden?

Re: Allgemeines Array, Erklärung erbeten!! tut.at

Verfasst: Do Jan 28, 2010 2:33 pm
von dragonfloez
Das Programm:

i wird immer der Wert 0 zugewissen, damit von 0-49 eine Zahlenreihe entsteht und i dient als eine art Zahlen Zuweiser.

Alle Werte 0-49 wird 0 zugewiesen.
Die erste Schleife
-------------------------------------------------------------


Dann beginnt das eigentliche Programm.

eingaben werden Werte zugewisen.
Will man keine Werte mehr eingeben oder kann man die Eingaben, mit der Eingabe mit 0 beenden. Oder das passiert wenn 49 erreicht wird.
Die zweite Schleife
--------------------------------------------------

Alle werte werden ausgegeben.

-------------------------------------------------
Schleife 3

Verstehe das noch nicht:

Code: Alles auswählen

  for (i = 0; i < ANZAHL; i++) /* Werte ausgeben */
      {
        if (eingaben[i] != 0)  /* nur dann, wenn der Wert nicht Null ist, diesen ausgeben */
          printf ("%d. Element: %d\n", i, eingaben [i]);
        else   /* ansonsten Schleife abbrechen */
          break;
      }
Wenn eingaben != 0 dann Textausgabe, wenn nicht dann Schleife beenden. Da kann man doch nirgendes 0 Eingeben umd die Textausgabe zu verhindern??





eingaben ist also eine Art großer Speicher und i in Verbindung mit eingaben holt die Daten aus dem Speicher.

Habe ich das Programm verstanden?

Re: Allgemeines Array, Erklärung erbeten!! tut.at

Verfasst: Do Jan 28, 2010 3:05 pm
von stampuhh
Wenn eingaben != 0 dann Textausgabe, wenn nicht dann Schleife beenden. Da kann man doch nirgendes 0 Eingeben??


Die Werte wurden ja auch in Schleife 2 an die Stelle geschrieben. Schleifen 1 und 2 speichern für jede Stelle im Array eingaben einen Wert. Dieser wird jetzt durch eingaben abgerufen. Es wird also geguckt ob der Wert der an der Stelle steht 0 ist oder nicht. Wenn er 0 ist, dann wird die Ausgabe beendet. Alle anderen Werte wurden vom Benutzer eingegeben und können daher auch ausgegeben werden.

eingaben ist also eine Art großer Speicher und i in Verbindung mit eingaben holt die Daten aus dem Speicher.

eingaben[] ist eine Art großer Speicher und i in Verbindung mit eingaben[] holt die Daten aus dem Speicher ;)
"eingaben" ist ein Feld mit 50 Werten. Eine Reihe mit 50 Werten, etc. "i" gibt an an welcher Stelle in dem Feld/der Reihe geguckt werden soll. Stell es dir als eine Art Schrank mit 50 Schubladen vor die von 0 bis 49 durchnummeriert sind. "eingabe" bedeutet dann "guck in der Schublade i"

Habe ich das Programm verstanden?

Das musst du doch am besten wissen :P

gruß stampuhh

Re: Allgemeines Array, Erklärung erbeten!! tut.at

Verfasst: Do Jan 28, 2010 3:26 pm
von dragonfloez

Code: Alles auswählen

if (eingaben[i] != 0)  /* nur dann, wenn der Wert nicht Null ist, diesen ausgeben */
          printf ("%d. Element: %d\n", i, eingaben [i]);
        else   /* ansonsten Schleife abbrechen */
          break;
Das else schaut also von 1-49 nach ob da irgenwo 0 einegeben wird, dann werden alle Werte bis auf den mit 0 (Programmende) ausgegeben?

Nochmal zum i:

Code: Alles auswählen

 printf ("%d. Element: ", i);

        scanf ("%d", &eingaben[i]);
i ist doch integer aber wie ist es möglich das wenn i eine Schublade ist, damit 49 Werte zu deklarieren?

Dann müßte 1, i=1; 2 i=1, usw. sein?? wenn man 1 eingibt.

ALSo:
scanf ("%d", &eingaben);

könnte dann z.B. 12, 12; als Eingabe sein, aber wie funktioniert das nun mit dem i??

Re: Allgemeines Array, Erklärung erbeten!! tut.at

Verfasst: Do Jan 28, 2010 4:14 pm
von stampuhh
hä? sry aber jetzt versteh ich die Frage nicht mehr :D

i ist nur die Zählervariable. Die zählt von 0 bis 49 hoch. Das heißt: Lege (/schreibe) eine Zahl (/einen Integer) in Schublade i = 0, Lege (/schreibe) eine Zahl (/einen Integer) in Schublade i = 1, Lege (/schreibe) eine Zahl (/einen Integer) in Schublade i = 2, .... usw.
Was da jetzt für ein Integer-Wert drin steht hat mit i nichts zu tun. "i" zeigt nur an wo du gucken musst.

Code: Alles auswählen

if(eingaben[i] != 0)
//mache weiter
else
//sonst
Heißt: Guck in Schublade i nach, was da für ein Wert drin liegt. Ist der Wert, der in der Schublade liegt ungleich 0 dann "mache weiter". Wenn er 0 ist, dann "sonst".
i ist doch integer aber wie ist es möglich das wenn i eine Schublade ist, damit 49 Werte zu deklarieren?
"i" ist keine Schublade. "i" ist bloß die Nummer (/der Index) der Schublade (/des Arrays). eingaben ist der Inhalt der Schublade mit der Nummer i.
Bei "eingaben" liegen in den Schubladen Integer-Werte, die vorher eingelesen wurden ;)

gruß stampuhh

Re: Allgemeines Array, Erklärung erbeten!! tut.at

Verfasst: Do Jan 28, 2010 5:45 pm
von Xin
http://www.proggen.org/doku.php?id=c:type:array

Bitte lies Dir das durch und stelle Deine Fragen diesbezüglich.
Wir helfen gerne und allgemein, aber Deine Fragen zu unserem Wiki helfen unser Wiki zu verbessern, um bessere Erklärungen für alle zu schaffen.
Dich durch das Tutorial von tutorials.at zu geleiten ist sicherlich auch in Ordnung, aber dadurch verbessert sich tutorials.at nicht. Es nutzt also ausschließlich Dir, während Deine Frage zu Texten aus dem Wiki Dir, dem Wiki, wie auch den Leuten nutzt, die später das Wiki durchgehen.