array



  • 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!



  • Hallo, ich hab das programm soweit ich nur kann geschrieben.. um weiter zu machen fehlen mir die kenntnisse deswegen bitte ich irgendjemand um hilfe der mir hierbei helfen kann. Die Ausgabe muss einer Matrix erfolgen Sprich eine Spalte für Umsätze und für Die Monate + Jahr damit das auch alles gerade ist.

    hier mal eine Beispiel für ein Matrix.

    #include <stdio.h>
    
    void main (void)
    {
    int m[3][4];
    int z,s;
    
    for (z= 0; z < 3;z++)
    for(s = 0; s < 4; s++)
    m [z][s] = s+1+4*z;
    
    for (z= 0; z < 3;z++)
    { for(s = 0; s < 4; s++)
    
    printf("%10i",m[z][s]);
    printf("\n");
    }
    }
    

    Ab hier Mein Programm...

    #include <stdlib.h>
    #include <stdio.h>
    
    int main()
    {
    
    int i;
    int umsatz[12];
    int m1,m2;
    int summe=0; // char* monate [12]=...
    char monate[12][20] = { "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
    summe=summe+umsatz[i];
    
    } 
    printf("Ausgabe Umsaetze:");
    for (i=0;i<=11;i++)
    {
    printf("%i %s",umsatz[i],monate[i]);
    printf("\n");
    }
    printf("\n Die Summe ist:%i \n",summe);
    system("pause");
    }
    }
    

    Ich hoffe mir kann jemand helfen 🙄



  • Niemand ne ahnung wie man die Daten in Zeilen und Spalten bei der Ausgabe organisieren kann?

    gruß



  • Es ist kein Wunder, dass dir so langsam keiner mehr helfen will. Deine Eigeninitiative ist mangelhaft. Mit ein wenig Suche nach "C Ausgabe Tabelle" hättest du bestimmt früher oder später eine Lösung gefunden. Du solltest dringend mal ein gutes Buch über C durcharbeiten, dir fehlen scheinbar jede Menge Grundlagen.

    #include <stdio.h>
    
    int main()
    {
        // Variablen
        int i = 0;
        int auswahl = 0;
        int umsatz[12] = {0};
        int umsatz_summe = 0;
        char* monate[12] =
        {
            "Januar",
            "Ferbruar",
            "Maerz",
            "April",
            "Mai",
            "Juni",
            "Juli",
            "August",
            "September",
            "Oktober",
            "November",
            "Dezember"
        };
    
        printf("Handelsfirma A & B GmbH\n\n");
    
        // Menü
        printf("Menue:\n");
        printf("1: Umsaetze eingeben\n");
        // printf("2: ...\n");
        // ...
        printf("Auswahl: ");
        scanf("%i", &auswahl); // hier Eingabe auf Gültigkeit überprüfen
        printf("\n");
    
        if(auswahl == 1)
        {
            // Umsätze einlesen
            for(i = 0; i < 12; ++i)
            {
                printf("Bitte Umsatz fuer %s 2007 eingeben: ", monate[i]);
                scanf("%i", &umsatz[i]);
                umsatz_summe += umsatz[i];
            }
            printf("\n");
    
            // Umsätze in Tabellenform ausgeben
            printf("Umsatz fuer 2007: \n");
            printf("------------------------\n");
            for(i = 0; i < 12; ++i)
            {
                printf("%-14s", monate[i]); // linksbündig auf 10 Stellen aufgefüllt
                printf("%10i", umsatz[i]); // rechtsbündig auf 10 Stellen aufgefüllt
                printf("\n");
            }
            printf("------------------------\n");
            printf("%-14s%10i\n", "Gesamtumsatz: ", umsatz_summe);
        }
    
        return 0;
    }
    


  • OhneName schrieb:

    Es ist kein Wunder, dass dir so langsam keiner mehr helfen will. Deine Eigeninitiative ist mangelhaft.

    Dem muss ich leider zustimmen.



  • Tzz. meine Eigeninitiative ist mangelhaft.?
    Komisch das ich das Programm Schon fertig geschrieben habe!
    trozdem bin ich nett und danke dir für deine MÜHE!

    Welches Buch könntest du mir den außer C von anfang (Erlenkötter) an empfehlen?

    #include <stdlib.h> 
    #include <stdio.h> 
    
    int main() 
    { 
    
    int i; 
    int umsatz[12]; 
    int m1,m2; 
    int umsatz_summe=0; // char* monate [12]=... 
    char monate[13][20] = {"Januar", "Ferbruar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" }; 
    char jahr[13][30] = {"2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007"};
    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 %s \n",i+1,monate[i],jahr[i]); 
    printf("Eingabe:");scanf("%i",&umsatz[i]);//cls 
    umsatz_summe+=umsatz[i]; 
    
    } 
    
    printf("\n-----------------------------------------------\n");
    printf("\n:Eintrag:\t:Monat:\t:Jahr:\t\t:Umsatz:\n");
    for (i=0;i<=11;i++) 
    { 
    printf("%5i. %15s %10s %10i",i+1 ,monate[i],jahr[i],umsatz[i]);  //Ausgabe Umsatz, Monat, Jahr
    printf("\n"); 
    } 
    printf("\n-----------------------------------------------\n");
    printf("\nDie Summe ist:%i \n",umsatz_summe); // Ausgabe Summe
    system("pause"); 
    } 
    }
    

    gruß hasso 🕶



  • Wie wär's mal mit Einrückungen im Code!? So mag das keiner lesen 💡

    cheers, Swordfish



  • Hallo,

    Es ist ein problem bei meinen programm aufgetaucht, die Schleife läuft immer weiter und hört nicht auf . Obwohl ich die anweisung gegeben habe das die Schleife bis 12 Laufen soll. Es geht in diesem Programm darum Umsätze 2 Verschiedener Firmen einzulesen. Sitze schon ne ewigkeit dran find nicht den fehler. ich benötige einen kleinen denkanstoß um meine Eigenininstiative zu präsentieren!

    #include <stdlib.h> 
    #include <stdio.h> 
    #include<math.h>
    #include "conio.h"
    
    int main() 
    { 
    
    int min,max;
    int const n=11;
    int umsatz[12],umsatza[12],m1,m2,i,a; 
    int umsatz_summe=0; // char* monate [12]=... 
    float mittelwert=0;
    char monate[12][12] = {"Januar", "Ferbruar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" }; 
    char jahr[12][5] = {"2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007", "2007"};
    
    printf("\n\tHandelsfirma A & B GmbH\n"); 
    
    printf("Menue:\n"); 
    printf("1: - Umsaetze eingeben\n");
    printf("2: - Programm Wiederholen\n");
    printf("3: - Ermittlung kleinster Wert\n");
    printf("4: - Ermittlung groesster Wert\n");
    scanf("%i",&m1); 
    
    if(m1==1) 
    { 
    
    	for(a=0;a<=n;a++){
    		for(i=0;i<=n;i++){ 
    
    	printf("\nBitte %i -ten Umsatz fuer %s %s \n",i+1,monate[i],jahr[i]);  // Eingabe
    	printf("Eingabe:");scanf("%i",&umsatz[i]);
    	printf("Eingabe:");scanf("%i",&umsatza[a]);
    													umsatz_summe+=umsatz[i];  // Berechnung Summe
    													mittelwert=umsatz_summe/n; // Berechnung Mittelwert
    													//standtardabweichung=
    }
    	}
    printf("\n-----------------------------------------------\n");
    //printf("\n:Eintrag:\t:Monat:\t:Jahr:\t\t:Umsatz:\n");
    	for (i=0;i<=11;i++) 
    	{ 
    		printf("%5i. %10s %10s %10i",i+1 ,monate[i],jahr[i],umsatz[i]);  //Ausgabe Umsatz, Monat, Jahr
    		printf("%5i. %10s %10s %10i",i+1 ,monate[i],jahr[i],umsatza[a]);  //Ausgabe Umsatz, Monat, Jahr
    		printf("\n"); 
    } 
    	printf("\n-----------------------------------------------\n");
    
    printf("\nDie Summe ist:%i Mittelwert:%.2f",umsatz_summe,mittelwert); // Ausgabe Summe
    
    	}
    
    system("pause");
    
    }
    

    gruß hasso



  • hasso schrieb:

    Es ist ein problem bei meinen programm aufgetaucht, die Schleife läuft immer weiter und hört nicht auf.

    warum debuggst du nicht mal selber? im debugger kannst du deine programme im einzelschritt-modus abarbeiten lassen und dir alle variablen ansehen usw. dann findest du selbst leicht raus, was schief läuft und brauchst nicht für jeden banalen fehler das forum bemühen.
    🙂


Anmelden zum Antworten