Frage zu Array
-
jumper schrieb:
Ich würde aber gerne wissen, wie ich es in einer Zeile einlesen kann.
Genau das habe ich in meinem ersten Post ja auch angenommen und dir dafür ein Beispiel geschrieben
Sorry, das ich gerade kein goldenes Tablett mit Rotlicht und Hinweissirene parat habe
-
jumper schrieb:
Kannst du ein bischen genauer erklären was du damit meinst?
Wenn du mit scanf() nicht zurecht kommst (soll passieren), kannst du die Zeile stattdessen auch einfach mit fgets() in einen Puffer einlesen, und dann mit strtol() oder strtok() recht bequem durchlaufen und konvertieren.
-
Jolka schrieb:
Bei mir übernimmt er dann nur die erste Zahl des zweiten Feldes und packt dann die letzten beiden des ersten feldes hintendran. Ohne Bindestriche passiert das nicht. Übrigens: Was sollen die Bindestriche überhaupt bewirken?
Die Bindestriche bewirken nichts. Das ist das Format der Eingabe:
Ganze Zahl Bindestrich Ganze Zahl Bindestrich Ganze Zahl usw.Jolka schrieb:
In diesem Code aber nicht. Da tippst du doch eine Zahl ein, machst ein Leerzeichen, tippst die nächste Zahl eine, machst wieder ein Leerzeichen, dann tippst du wieder die nächste Zahl ein unddrückst Enter.
Ja, wie denn sonst *g*
-
#include <stdio.h> int main(void) { int i, array[10]; printf("Eingabe: "); scanf("%d %d %d %d %d %d %d %d %d %d", &array[0], &array[1], &array[2], &array[3], &array[4], &array[5], &array[6], &array[7], &array[8], &array[9]); printf("array:\n"); for(i=0;i<10;i++) { printf("%d ", array[i]); } fflush(stdin); getchar(); return 0; }
Das dürfte glaube ich alle deine Ansprüche erfüllen.
Big Brother schrieb:
Jolka schrieb:
Bei mir übernimmt er dann nur die erste Zahl des zweiten Feldes und packt dann die letzten beiden des ersten feldes hintendran. Ohne Bindestriche passiert das nicht. Übrigens: Was sollen die Bindestriche überhaupt bewirken?
Die Bindestriche bewirken nichts. Das ist das Format der Eingabe:
Ganze Zahl Bindestrich Ganze Zahl Bindestrich Ganze Zahl usw.Jolka schrieb:
In diesem Code aber nicht. Da tippst du doch eine Zahl ein, machst ein Leerzeichen, tippst die nächste Zahl eine, machst wieder ein Leerzeichen, dann tippst du wieder die nächste Zahl ein unddrückst Enter.
Ja, wie denn sonst *g*
Du verstehst garnicht was ich damit sagen will...
Der TS meinte, dass er immer nach einer Zahl Enter drücken muss und da habe ich ihm geantwortet, dass es bei diesem Code eben nicht so ist, sondern durch Leerzeichen getrennt wird und erst ganz am Ende einmal Enter gedrückt wird und fettisch.
-
Jolka schrieb:
Das dürfte glaube ich alle deine Ansprüche erfüllen.
Und was ist daran jetzt anders als in meiner Version, abgesehen davon, dass ich zu faul war und nur 3 statt 10 integer einlese?
-
Nicht besonders viel, wenn auch noch was anderes. Ist das ein Problem für dich?
-
Jolka schrieb:
Nicht besonders viel, wenn auch noch was anderes. Ist das ein Problem für dich?
Nöööö.
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39349.html
-
Jolka schrieb:
Der TS meinte, dass er immer nach einer Zahl Enter drücken muss und da habe ich ihm geantwortet, dass es bei diesem Code eben nicht so ist, sondern durch Leerzeichen getrennt wird und erst ganz am Ende einmal Enter gedrückt wird und fettisch.
Okee das hat mir jetzt schonmal sehr sehr weitergeholfen
-
Jolka schrieb:
... for(i=0;i<10;i++) { printf("%d ", array[i]); } ...
wer bringt euch sowas bei? ich hab ja schon mehr formatierungen gesehen aber die noch nie, finds jetzt auch spontan nicht mega schlecht, aber da wirst du probleme haben jemanden zu finden der da auf die schnelle durchblickt, da das so gut wie keiner gewohnt ist...
also entweder
Jolka schrieb:
... for(i=0;i<10;i++) { printf("%d ", array[i]); } ...
oder
Jolka schrieb:
... for(i=0;i<10;i++){ printf("%d ", array[i]); } ...
oder
Jolka schrieb:
... for(i=0;i<10;i++) { printf("%d ", array[i]); } ...
das sind alle die mir jetzt auf die schnelle einfalle evtl. ist da ja eine für dich dabei
-
Meinst du die Klammer? lol
Was gibt's da nicht durchzublicken? Da wird eine Klammer geöffnet und auf der selben Ebene wieder geschlossen. Da sieht man wenigstens was in die Schleife gehört und was außerhalb von ihr steht, wenn ich zum Beispiel etwas komplexeres habe wie...while(Antwort[0] == 'j' || Antwort[0] == 'J') { i=i+1; printf("\n\n\nSummand %d\n\n", i); printf("Minuten: "); scanf("%d", &min); while(min>=60) { sumh+=1; min-=60; } summin+=min; printf("Sekunden: "); scanf("%d", &sec); while(sec>=60) { summin+=1; sec-=60; } sumsec+=sec; printf("\n\nNoch einen Summanden addieren? (j/n)"); scanf("%s", &Antwort); }
...dann blicke ich da super durch. Ich sehe auf welcher Ebene eine Klammer geöffnet wurde und sehe dann auch auf einen Blick wo sie wieder geschlossen wird.
Wobei ich finde finde, dass gerade dein zweites Beispiel äußerst unübersichtlich ist, da die Klammer direkt hinter dem for geöffnet wird und dann irgendwo unten wieder geschlossen wird. Da sieht man garnicht, dass das dazugehört, wenn es etwas komplexer wird. Mal ganz davon abgesehen, dass dein erstes und drittes Beispiel identisch sind und dass die Anweisung nur eine Zeile tiefer steht als bei mir. Wenn dich das zur Verzweiflung treibt, dann gute Nacht.
-
ja also über coding standards kann man ja ewig diskutieren ich denke die von mir aufgeführten beispiele sind mehr oder weniger standard also von leerzeichen mal abgesehen...
dein stil seh ich heut zum ersten mal, das ist kein gutes zeichen, aber ok ich wollte dir nur andere zeigen und evtl. gefällt dir ja auch einer ich tippte spontan auf den ersten, darum steht er auch ganz oben, aber schreib das wie du willst mir ist das wurscht
lg lolo
-
Jolka schrieb:
Meinst du die Klammer? lol
Was gibt's da nicht durchzublicken? Da wird eine Klammer geöffnet und auf der selben Ebene wieder geschlossen.^^ich bin ganz deiner meinung. öffnende und die dazugehörige schliessende geschweifte klammer gehören in dieselbe spalte. alles andere ist grausam.
-
;fricky schrieb:
^^ich bin ganz deiner meinung. öffnende und die dazugehörige schliessende geschweifte klammer gehören in dieselbe spalte. alles andere ist grausam.
ja super dann spricht doch nichts dagegen das so zu machen oder? dann bist du nicht der einzige der das so macht und andere finden das dann auch toll wenn sie deine sachen lesen
... for(i=0;i<10;i++) { printf("%d ", array[i]); } ...
-
Jolka schrieb:
Mal ganz davon abgesehen, dass dein erstes und drittes Beispiel identisch sind
evtl. waren die beispiele zu kurz ums korrekt zu machen sollte man auch eine identische einrückung von 4 leerzeichen verwenden....
while(1) { while(1) { printf("hi"); } pintf("hi1"); } pintf("hi2");
im kontrast zu
while(1) { while(1) { printf("hi"); } pintf("hi1"); } pintf("hi2");
so sollte der unterschied schon deutlich werden,
btw. ich hab deinen stil schon aufgenommen in meine stil datenbank, mal schauen wann mir das wieder unter die griffel kommt