Wie befüllt man in C arrays ohne for Schleife?
Hallo, ich bearbeite gerade eine Aufgabe, ich habe zu dieser schon gestern hier eine Frage gestellt, habe erst gedacht, dass es funktioniert, bis ich heute gemerkt habe, dass die arrays nicht gespeichert werden, sondern sich ständig überschreiben.Das Ziel ist es Zahlen einzulesen bis die 0 eingegeben wird, ab da soll das array verschlossen werden damit ich später den median z.B ausrechnen kann. Hier mein code:
int eingabe = 0; int a[eingabe]; int i = -1;
do
{
printf("Bitte geben Sie eine oder mehrere ganze Zahlen ein ( 0 beendet )",i++);
scanf("%d", &a[i]);
}
while (a[i] != 0);
printf("Die Werte lauten: %d", a[i]);
Wenn ich jetzt aber das Programm laufen lasse erhalte ich als Ergebnis nur 0, obwohl ich vorher z.B 1,2,3,4,5 eingegeben habe und mit 0 das Array geschlossen habe. Ich komme an diesem Schritt nicht weiter, normalerweise löse ich sowas mit einer for schleife aber die kann man ja in dieser Aufgabe nicht verwenden, da das Array ende ja nicht feste bestimmt ist.
Kann mir jemand sagen, was ich falsch mache? LG
2 Antworten
Nach while(); hat der Index i den höchsten / letzten Wert, also hat a[i] im letzten printf den Wert 0.
Um alle Werte des Arrays auszugeben, muss natürlich auch der printf() in einer Schleife laufen
i = 0;
do
{
printf("Die Werte lauten: %d", a[i]);
}
while (a[i] != 0);
Du hast doch ein festes Ende die "0". Du setzt den Zähler deiner for schleife auf max wenn eine 0 eingegeben wird und schon ist sie beendet.
also z.b.:
for i=0 to maxLengthArray{
deine verarbeitung
wenn eingabe = 0 dann i= maxLengthArray
}
(sorry für den Pseudocode, ich kenne mich mit C überhaupt nicht aus :P)
Den Gedanken hatte ich auch schon, habe sowas ähnliches in Java vor kurzem gemacht, da gibt es ja den Befehl a.length, in C geht das aber glaube ich nicht. :/