Arrays (50 Elemente)
-
Hallo Allerseits,
Ich habe eine folgende Frage:
Erstes Programm:
#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 */ } return 0; } 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; }
Der untere Abschnitt ist eigentlich überflüssig oder ?
denn mit Dem ersten Programm soll der Benutzer 50 Elemente eingeben und bei Eingabe 0 bricht das Programm ab.
und deswegen kann man doch den Programm ohne den unteren Abschnitt kompilieren oder ?Das ist der untere abschnitt:
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; }
Dann würde das zweite Programm so ohne das untere Abschnitt aussehen:
Zweites Programm:
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 */ } return 0; }
Bei den Zweiten Programm finde ich das es die gleiche Wirkung hat und bei Eingabe 0 bricht das auch ab.
Und jetzt zu meine Frage hat Das erste Programm die Gleichen Wirkungen wie das Zweite und sind da etwa winzige Unterschiede bzw Vorteile/Nachteile ?
Mfg soufian
-
Sehe ich das richtig, dass das "2. Programm" im Grunde das "1. Programm" ohne die anschließende Ausgabe der Werte ist, ja? Insofern besteht natürlich ein Unterschied, nämlich der dass in Variante 2 einfach nur die Eingabe, aber nicht die Ausgabe der Werte stattfindet. Oder habe ich was Wichtiges übersehen? Ich finde die Frage ein wenig seltsam...
Übrigens, alle Elemente eines Array mit 0 initialisieren kannst du auch so:
int eingaben[ANZAHL]={0};
Ist etwas kürzer als die Schleife...
EDIT: Bitte cpp-Tags statt code-Tags benutzen. Und deine Einrückung lässt auch zu wünschen übrig.
-
Ich finde das Erste Programm hat die Gleiche Wirkung wie das Zweite Programm
oder hat einen von den beiden Programmen etwas Vorteile?Von das erste Programm ist halt der untere Abschnitt bei den zweiten Programm weg. Deswegen denke ich das der untere Abschnitt überflüssig ist oder liege ich da falch ?
Der untere Abschnitt ist wie gesagt der hier :
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; }
Ich hoffe das mein Frage jetzt deutlich ist. :p
Sorry kann irgendwie meine Fragen nicht ordentlich formulieren.
-
Wie gesagt, dass erste Programm macht Folgendes:
- Werte einlesen
- Werte ausgebenDas zweite Programm macht dieses hier:
- Werte einlesen
Das ist doch ein Unterschied! Was meinst du mit Vorteilen? Der Vorteil beim zweiten Programm ist, dass man die Werte ausgegeben bekommt.
Nebenbei bemerkt ist das zweite Programm wirklich nur eine böse abgeschnittene Version des ersten. Es fehlen das "return 0" und sogar die schließende Klammer der main-Funktion...
-
aber wenn ich die beiden Programme kompiliere mach die das Gleiche.
50 Elemente eingeben und bei 0 brechen die beiden Programme ab.
-
soufian88 schrieb:
aber wenn ich die beiden Programme kompiliere mach die das Gleiche.
50 Elemente eingeben und bei 0 brechen die beiden Programme ab.
Nein, stimmt nicht. Das erste gibt im Anschluss noch die eingegebenen Werte aus, wie gesagt. Ich glaube ich weiß, wie du darauf kommst. Füge mal am Ende des ersten Programms unten vor dem "return 0;" noch ein "getchar();" ein. Dann wartet das Programm am Schluss noch auf eine Eingabe von dir und du siehst, was ich dir schon die ganze Zeit sage.
-
getchar(); ist doch für Windows oder ? ich habe Linux (Ubuntu).
-
getchar(); ist doch für Windows oder ? ich habe Linux (Ubuntu).
Siehe die Überschrift zu man: getchar.
-
Hast du's denn jetzt ausprobiert? Siehst du den Unterschied? In Zukunft solltest du versuchen, eigenen Code zu schreiben, den du dann auch verstehst. Was du da machst, hat irgendwie wenig Sinn.
-
hmm ok.
Aber das Programm ist nicht von mir
-
soufian88 schrieb:
hmm ok.
Aber das Programm ist nicht von mirGenau. Deshalb schrieb ich:
In Zukunft solltest du versuchen, eigenen Code zu schreiben, den du dann auch verstehst. Was du da machst, hat irgendwie wenig Sinn.
Programmieren lernt man nicht, indem man fremden Code ausführt. So kann man zwar auch was dazu lernen, aber grundsätzlich würde ich davon eher abraten (zumindest am Anfang). Man neigt schnell dazu, funktionierenden Code zu akzeptieren, anstatt ihn verstehen zu wollen...
-
Ich arbeite gerade an einen Tutorial.
Ich hab den Programm eigentlich verstanden aber nur der untere abschnitt FINDE ich überflüssig.
-
soufian88 schrieb:
Ich arbeite gerade an einen Tutorial.
Ich hab den Programm eigentlich verstanden aber nur der untere abschnitt FINDE ich überflüssig.So langsam glaube ich an einen trollreg...
Wie lange sollen wir uns denn noch im Kreis drehen? Du hast nach Unterschieden gefragt, da deiner Meinung nach der Ablauf beider Versionen gleich ist. Das ist nicht wahr und ich habe es dir erklärt.
Wenn du die Ausgabe eines Programms als überflüssig empfindest... tja, dann kann ich dir auch nicht helfen. Das ist wie ein Taschenrechner ohne Display. Wenn du das überflüssig findest, bitte...
-
War nicht so gemeint.
Danke für die Antwort
-
Ok.