hilfe
-
ja so sieht es schon besser aus nur wenn ich einen verkäufer eingebe erscheint auch Verkäufer 1 nur wenn ich 2 verkäufer eingebe erscheint der Verkäufer2 2* bei jedem
for(i = 0; i < AnzahlEingaben; i++) { for(int pos=0;pos<AnzahlEingaben;++pos) { printf("VERKAEUFER %i \n", AnzahlEingaben); } printf("\n"); printf(" Vorname :%s \n",Verkaeufer[i].Vorname); printf(" Name :%s \n",Verkaeufer[i].Nachname); printf(" 1.Quartal:%s \n",Verkaeufer[i].Quartal1); printf(" 2.Quartal:%s \n",Verkaeufer[i].Quartal2); printf(" 3.Quartal:%s \n",Verkaeufer[i].Quartal3); printf(" 4.Quartal:%s \n",Verkaeufer[i].Quartal4);
-
Beschäftige dich doch erstmal mit den Grundlagen der Schleifenprogrammierung - so wie du verschachtelst, blickst du irgendwann selbst nicht mehr durch. Zur Ausgabe des gesamten Arrays benötigst du EINE Schleife, die von 0 bis AnzahlEingaben durchläuft:
for(i = 0; i < AnzahlEingaben; i++) { printf("VERKAEUFER %i \n\n", AnzahlEingaben); printf(" Vorname :%s \n",Verkaeufer[i].Vorname); printf(" Name :%s \n",Verkaeufer[i].Nachname); printf(" 1.Quartal:%s \n",Verkaeufer[i].Quartal1); printf(" 2.Quartal:%s \n",Verkaeufer[i].Quartal2); printf(" 3.Quartal:%s \n",Verkaeufer[i].Quartal3); printf(" 4.Quartal:%s \n",Verkaeufer[i].Quartal4); }
-
Das ist genau das problem wie ich es beschrieben hab geb ich 2 Verkäufer ein kommt bei der Ausgabe die Anzahl dahinter soviele verkäufer ich eingegeben habe.
-
Sorry, mein Fehler - richtiger wäre printf("VERKAEUFER %i\n\n",i+1); anstelle der ersten Ausgabe (i ist die Nummer des gerade betrachteten Datensatzes, AnzahlEingaben die Gesamtanzahl).
-
Super Danke genau so hab ich mir das vorgestellt.
Weißt du vielleicht auch noch wie ich es mit dem anderen Programm schreiben kann damit ich genau so viele Zeilen hab wie Verkäufer.
-
Ja, genauso - nur daß du halt die Ausgabe etwas anders formatierst.
btw, die Schleifen "for(count=0;count<11;count++)" sehen grauenhaft aus - das geht wesentlich eleganter mit einem "printf("%11s",Verkaeufer[i].Nachname);"
-
also anstatt der ganzen for einfach printf und das funktioniert dann genau so?
-
hast du vielleicht icq oder ähnliches...
-
C2345 schrieb:
also anstatt der ganzen for einfach printf und das funktioniert dann genau so?
Sogar noch besser, weil du damit keine undefinierten Werte auf den Bildschirm schreibst (alles nach dem '\0' im String ist undefiniert und könnte mit irgendwelchen Mülldaten belegt sein).
PS: Nein, ich habe kein ICQ.
-
Aber wie soll ich das genau schreiben
-
for/i=0;i<AnzahlEingaben;++i) { printf("%c%11s",LinksRechts,Verkaeufer[i].Vorname); printf("%c%11s",LinksRechts,Verkaeufer[i].Nachname); ... }
PS: Eventuell wäre es eine gute Idee, die Namensfelder etwas kleiner zu machen (256 Zeichen sind doch etwas viel - 12 dürfte ausreichen) und die Zahlenfelder (Quartal1 bis Quartal4) als int (notfalls als long) zu definieren.
(letzteres wird spätestens dann nützlich, wenn du noch den Gesamtumsatz des Verkäufers ausrechnen willst)
-
Also einfach die For durch die Sachen ersetzen ...... bist du nachher auch noch da muss jetzt mal kurz weg.... oder hast du eine Email adresse.
-
Falls ich noch fragen hab oder bist du länger hier....
Meine Email daniel230881@web.de
-
C2345 schrieb:
oder hast du eine Email adresse.
Ja, habe ich - aber die gebe ich nicht jedem
(wenn du Fragen hast, einfach hier stellen)
-
Wie genau schreibt man das den mit
for/i=0;i<AnzahlEingaben;++i) { printf("%c%11s",LinksRechts,Verkaeufer[i].Vorname); printf("%c%11s",LinksRechts,Verkaeufer[i].Nachname); ... }
blick da nicht so ganz durch wie das Funktionieren soll
-
Am besten anstelle deiner bisherigen Ausgabeschleife:
for(AnzahlEingaben=0;AnzahlEingaben<10;AnzahlEingaben++) { printf("%c", LinksRechts); for(count=0;count<11;count++) { printf("%c", Verkaeufer[AnzahlEingaben].Nachname[count]); }printf("%c",LinksRechts); for(count=0;count<11;count++) { printf("%c", Verkaeufer[AnzahlEingaben].Vorname[count]); }printf("%c",LinksRechts); ... }
(btw, kleinere Tipfehler lasse ich dir zur Übung stehen :))
-
Ok das mit den Fehlern ist nicht schlecht?
Aber hab es jetzt so gemacht und mit einem Verkäufer haut es ja hin aber 2 -10 da will es nicht so ganz?#include <stdio.h> #include <stdlib.h> struct { char Vorname[256]; char Nachname[256]; char Quartal1[256]; char Quartal2[256]; char Quartal3[256]; char Quartal4[256]; } Verkaeufer[10]; int main(int argc, char *argv[]) { int AnzahlEingaben = 0; int ObenLinks = 218, UntenLinks = 192, UntenRechts = 217, ObenRechts = 191, ObenUnten = 196, LinksRechts = 179, ObenSpalte = 194, LinksZeile = 195, MitteSpZe = 197, RechtsZeile = 180, UntenSpalte = 193, i,d,e,count; while(AnzahlEingaben < 10) { printf("\nVERKAEUFER %i \n", AnzahlEingaben+1); printf("\nBitte geben sie den Vornamen des Verkaeufers ein: "); scanf("%s", Verkaeufer[AnzahlEingaben].Vorname); printf("\nBitte geben sie den Nachnamen des Verkaeufers ein: "); scanf("%s", Verkaeufer[AnzahlEingaben].Nachname); printf("\nBitte geben sie die Umsaetze des 1.Quartals ein: "); scanf("%s", &Verkaeufer[AnzahlEingaben].Quartal1); printf("\nBitte geben sie die Umsaetze des 2.Quartals ein: "); scanf("%s", &Verkaeufer[AnzahlEingaben].Quartal2); printf("\nBitte geben sie die Umsaetze des 3.Quartals ein: "); scanf("%s", &Verkaeufer[AnzahlEingaben].Quartal3); printf("\nBitte geben sie die Umsaetze des 4.Quartals ein: "); scanf("%s", &Verkaeufer[AnzahlEingaben].Quartal4); AnzahlEingaben++; if(AnzahlEingaben != 10) { printf("Wollen sie einen weiteren Verkaeufer eingeben? (j/n)\n"); char c; scanf("%s", &c); if(c == 'n') { break; } } } printf("Sie haben %i Verkaeufer \n", AnzahlEingaben); printf("%c",ObenLinks ); for(d=1;d<=6;d++) { for(e=1;e<=11;e++) { printf("%c",ObenUnten); } if(d<6) printf("%c",ObenSpalte); else { printf("%c\n",ObenRechts); } } printf("%c Nachname %c",LinksRechts,LinksRechts); printf(" Vorname %c",LinksRechts); printf(" Umsatz %c",LinksRechts); printf(" Umsatz %c",LinksRechts); printf(" Umsatz %c",LinksRechts); printf(" Umsatz %c\n",LinksRechts); printf("%c %c",LinksRechts,LinksRechts); printf(" %c",LinksRechts); printf(" 1.Quartal %c",LinksRechts); printf(" 2.Quartal %c",LinksRechts); printf(" 3.Quartal %c",LinksRechts); printf(" 4.Quartal %c\n",LinksRechts); printf("%c",LinksZeile); for(d=1;d<=6;d++) { for(e=1;e<=11;e++) { printf("%c",ObenUnten); } if(d<6) printf("%c",MitteSpZe); else { printf("%c\n",RechtsZeile); } } for(i=0;i<AnzahlEingaben;i++) { printf("%c%11s",LinksRechts,Verkaeufer[i].Vorname); printf("%c%11s",LinksRechts,Verkaeufer[i].Nachname); printf("%c%11s",LinksRechts,Verkaeufer[i].Quartal1); printf("%c%11s",LinksRechts,Verkaeufer[i].Quartal2); printf("%c%11s",LinksRechts,Verkaeufer[i].Quartal3); printf("%c%11s",LinksRechts,Verkaeufer[i].Quartal4); } printf("\n"); if(AnzahlEingaben<9) { printf("%c",LinksZeile); for(d=1;d<=6;d++) { for(e=1;e<=11;e++) { printf("%c",ObenUnten); } if(d<6) printf("%c",MitteSpZe); else { printf("%c",RechtsZeile); } } } else { printf("%c",UntenLinks); for(d=1;d<=6;d++) { for(e=1;e<=11;e++) { printf("%c",ObenUnten); } if(d<6) printf("%c",UntenSpalte); else { printf("%c\n",UntenRechts); } } }printf("\n"); return 0; }
-
Was hat den die 11s zu bedeuten?
printf("%c%11s",LinksRechts,Verkaeufer[i].Vorname);
-
C2345 schrieb:
Aber hab es jetzt so gemacht und mit einem Verkäufer haut es ja hin aber 2 -10 da will es nicht so ganz?
Was stimmt denn noch nicht bei 2..10 Verkäufern? Wenn du noch Trennzeilen zwischen den einzelnen Angaben willst, mußt du sie in der for()-Schleife dazwischenschreiben.
Was hat den die 11s zu bedeuten?
man: printf - s=String=Zeichenkette, 11 ist die Ausgabebreite für das Feld.
-
Versteh ich nicht ganz? Gib mir halt mal einen kleinen Tip sitze schon seit gestern abend an dem programm ....