array
-
hallo zusammen,
mein array funktioniert nicht fehler sei: zu viele Zeichen in Konstante.
Ich benötige aber soviele Zeichen, weil ich für jeden Monat ein umsatz eingeben möchte ..was muss gemacht werden damit das array die Fehlermeldung nicht mehr anzeigt?#include <stdlib.h> #include <stdio.h> int main() { int umsatz; int i; char umsatz_monat[12]; umsatz_monat[0]='Januar'; umsatz_monat[1]='Februar'; umsatz_monat[2]='Maerz'; umsatz_monat[3]='April'; umsatz_monat[4]='Mai'; umsatz_monat[5]='Juni'; umsatz_monat[6]='Juli'; umsatz_monat[7]='August'; umsatz_monat[8]='September'; umsatz_monat[9]='Oktober'; umsatz_monat[10]='November'; umsatz_monat[11]='Dezember'; printf("\nBitten geben Sie die Werte fuer Januar bis Dezember:\n"); for(i=1;i<12; i++) { scanf("%i",&umsatz); } system("pause"); }
-
... char* umsatz_monat[12]; ...
-
oooooooooooo schrieb:
... char* umsatz_monat[12]; ...
// vorher int umsatz[12];
-
hasso schrieb:
..was muss gemacht werden damit das array die Fehlermeldung nicht mehr anzeigt?
-
Und Stringliterale kommen in C in "" und nicht in ''.
-
nur mal so am rande,
wieviele zeichen passen z.b. in
umsatz_monat[0] ?wie viele zeichen sind z.b. in "Januar" enthalten ?
na, dämmerts ?
-
char aacMonate[12][20]={"Januar","Ferbruar", "März", "April","Mai", "Juni", "juli","August","September", "Oktober","November","Dezember"};
-
char* Monate[12] = { "Januar", "Ferbruar", "März", "April","Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" };
-
angeber^^;)
-
BorisDieKlinge schrieb:
char aacMonate[12][20]={"Januar","Ferbruar", "März", "April","Mai", "Juni", "juli","August","September", "Oktober","November","Dezember"};
char* Monate[12] = { "Januar", "Ferbruar", "März", "April","Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" };
Der Unterschied von beiden ist das bei einem [12] und [20] sich befindet und plus ein *, bei dem andren array nur [12]
wo ist der Unterschied, beides korrekt?
frage2)
bedeutet das char vor dem array das zeichen ausgegeben werden sprich bustaben und zeichenketten wird dadurch dass das char vor dem array steht nicht mehr nötig für die [12] ein größeren Wert einszusetzen weil die zeichen in der zeichenkette mehr sind als der array selbst?
lg hasso
-
Hallo,
hasso schrieb:
BorisDieKlinge schrieb:
char aacMonate[12][20]={"Januar","Ferbruar", "März", "April","Mai", "Juni", "juli","August","September", "Oktober","November","Dezember"};
char* Monate[12] = { "Januar", "Ferbruar", "März", "April","Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" };
Der Unterschied von beiden ist das bei einem [12] und [20] sich befindet und plus ein *, bei dem andren array nur [12]
wo ist der Unterschied, beides korrekt?
Ein char* ist ein Zeiger auf eine Zeichenkette. Zeichenketten kommen in " ". zum Beispiel char* Zeichenkette = "Zeichenkette"
char* ketten[12] Sind 12 Zeichenketten (array).char ist ein Zeichen. Zeichen kommen in ' '. zum beispiel char z = 'z'.
char mehrere_zeichen[6] ist eine kette von 6 Zeichen. Beispiel: char Hallo[6]="Hallo"char zeichenketten[5][20] ist ein array von 5 Zeichenketten mit jeweils 20 Zeichen.
hasso schrieb:
frage2)
bedeutet das char vor dem array das zeichen ausgegeben werden sprich bustaben und zeichenketten wird dadurch dass das char vor dem array steht nicht mehr nötig für die [12] ein größeren Wert einszusetzen weil die zeichen in der zeichenkette mehr sind als der array selbst?
lg hasso
Siehe oben
mfg kaffee
PS: Du solltest mal Variablen lernen
...
-
danke. kaffee
-
hasso schrieb:
aacMonate[12][20]={"Januar","Ferbruar", "März", "April","Mai", "Juni", "juli","August","September", "Oktober","November","Dezember"};
char* Monate[12] = { "Januar", "Ferbruar", "März", "April","Mai", "Juni",
"Juli", "August", "September", "Oktober", "November", "Dezember" };
wo ist der Unterschied, beides korrekt?beides ist korrekt, bis auf die rechtschreibfehler.
der unterschied ist der benutzte speicherplatz.
im ersten fall wird 12*20 byte speicherplatz verwendet. für jeden monat also 20 byte.
im zweiten fall berechnet der compiler für jedes feld den speicherplatz separat.
für Januar 6 byte, usw.
-
kurz noch ne frage könnte man das auch so schreiben
{
char* umsatz_monat[13][20];
umsatz_monat[1]="januar";
umsatz_monat[2]="februar";
umsatz_monat[3]="maerz";
umsatz_monat[4]="april";
umsatz_monat[5]="mai";
umsatz_monat[6]="juni";
umsatz_monat[7]="juli";
umsatz_monat[8]="august";
umsatz_monat[9]="september";
umsatz_monat[10]="oktober";
umsatz_monat[11]="november";
umsatz_monat[12]="dezember";}
Die geschweiften klammern sind pflicht nicht wahr?...können die weggelassen werden wenn sich das array innerhalb einer main() funktion befindet?
aja..wie wird ein array nun ausgegeben?
lg hasso
-
Hallo,
hasso schrieb:
danke. kaffee
Bitte
hasso schrieb:
wie wird ein array nun ausgegeben?
Du kannst das zum Beispiel mit einer for schleife machen.
char* Monate[12] = { "Januar", "Ferbruar", "März", "April","Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" }; for (int i=0;i<11;++i) { cout << Monate[i]; }
edit: Ups, cout (c++) Du musst das in c mit printf machen.
mfg kaffee
-
Hallo, ich hab das Programm nun zuende geschrieben. Nun wird gefordert tabbelarische Ausgabe der Umsätze.
jemand ne ahnung wie das funktionieren soll?
#include <stdlib.h> #include <stdio.h> int main() { int i; int umsatz; int m1; char* monate[12] = { "Januar 2007\n", "Ferbruar 2007\n", "März 2007\n", "April 2007\n","Mai 2007\n", "Juni 2007\n", "Juli 2007\n", "August\n", "September 2007\n", "Oktober 2007\n", "November 2007\n", "Dezember 2007\n" }; printf("\n\tHandelsfirma A & B GmbH\n"); printf("\nMenue Punkt 1: Eingabe ihrer Umsaetze taetigen Sie die Ziffer 1\n"); scanf("%i",&m1); if(m1==1) { for (i=0;i<=11;i++) { printf("\nBitte %i -ten Umsatz fuer %s",i+1,monate[i]); printf("Eingabe:");scanf("%i",&umsatz);//cls } } else { printf("\n\tDas Programm wurde Beendet\n"); } system("pause"); }
lg the hasso
-
im zweiten fall berechnet der compiler für jedes feld den speicherplatz separat.
für Januar 6 byte, usw.7
Wenn die tabellarische erst am Ende sein soll, was, wenn es eine Tabelle werden soll, so sein sollte, solltest du aus umsatz erstmal ein Array machen, momentan überschreibst du jeden Monat wieder den umsatz sodass du letzten Endes nur den vom Dezember behälst.
Was wird unter einer tabellarischen Ausgabe verstanden(also mit Linien, ohne u.s.w.) und was genau ist dabei dein Problem?
Wenn du umsatz dann zu einem Array gemacht hast kannst du einfach in einer Schleife den jeweiligen Monat und Umsatz ausgeben.
-
Hallo
Ich denke schon mit Linien anders kanich mir das nicht vorstellen.
Das an einer Spalte die Monate stehen und an einer anderen Spalte die umsätze.Ein weiterer Menüpunkt soll der tabellarischen Ausgabe aller Umsätze beider der Fialiale und ebenfalls von einem separaten Programm – Modul übernommen werden.
Das Problem: 0 ahnung wie man das machen kann. Noch nie gemacht.
#include <stdlib.h> #include <stdio.h> int main() { int i; int umsatz[12]; int m1; int summe=0; char* monate[12] = { "Januar 2007\n", "Ferbruar 2007\n", "März 2007\n", "April 2007\n","Mai 2007\n", "Juni 2007\n", "Juli 2007\n", "August\n", "September 2007\n", "Oktober 2007\n", "November 2007\n", "Dezember 2007\n" }; printf("\n\tHandelsfirma A & B GmbH\n"); printf("\nMenue Punkt 1: Eingabe ihrer Umsaetze taetigen Sie die Ziffer 1\n"); scanf("%i",&m1); if(m1==1) { for (i=0;i<=11;i++) { printf("\nBitte %i -ten Umsatz fuer %s",i+1,monate[i]); printf("Eingabe:");scanf("%i",&umsatz[i]);//cls } } else { summe=summe+umsatz[zi]; summe+=umsatz[i] // die Summe aller Monate Ist voll groß? printf("%i",&summe); } system("pause"); }
-
Besserwisser schrieb:
7
-
schon erledigt!