Zahlen in array schreiben



  • Hallo,

    ich möchte gerne folgendes Program in C schreiben:

    Ich gebe in der Konsole eine Zahle ein z.b 100.

    Dann sollte das Programm die Zahlen von 1-100 fortlaufend in das array bubble schreiben. Anschließend sollte das array bubble in der Konsole ausgegeben werden. Hier ist mein Code. Aber aktuell wird in der Konsole gar nichts ausgegeben.

    #include <stdio.h>
    
    int main()
    {
        int x, a;
        int bubble[a];
    
        printf("Bitte geben Sie eine Zahl ein: ");
        scanf("%d",&a);
    
        for(x=1;x<=a;x++)
        {
            bubble[ x ] = x+1;
    
        }
    
    
    /* Array ausgeben*/
    
    for(x=1;x<a;x++)
    {
        printf("%d\t",bubble[x]);
        putchar('\n');
    }
    
    return(0);
    
    }
    
    

    Kann ich die größe des arrays mit meiner Eingabe festlegen? Also int bubble[a]? Oder muss die größe im Programm festlegen?


  • Mod

    @jasmin89 sagte in Zahlen in array schreiben:

    Kann ich die größe des arrays mit meiner Eingabe festlegen? Also int bubble[a]? Oder muss die größe im Programm festlegen?

    Nein. Nein. Ja.

    Es gibt aber andere Möglichkeiten, um zur Laufzeit passende Speicherblöcke zu bekommen, nämlich malloc und Konsorten. Das ist etwas kompliziert, aber das Lehrwerk, aus dem die Aufgabe stammt, sollte das vermittelt haben. Da das Speichern in einem Array verlangt wird, geht es bei der Aufgabe offensichtlich darum, malloc & Co. anzuwenden. Denn nur die Zahlen von 1 bis X auszugeben, dazu bräuchte man sie ja überhaupt gar nirgendwo zu speichern.



  • Ok, danke für die Information



  • @jasmin89 Der Index fängt bei Arrays bei 0 an und geht (bei dir) bis a-1

    Das Abbruchkriterium der for-Schleife ist dann < a



  • @SeppJ sagte in Zahlen in array schreiben:

    malloc

    Bei dem Inhalt malloc bin ich Buch bis jetzt noch nicht angekommen😅

    Ich habe mir das Beispiel allerdings selbst ausgedacht. Nach einigen herumprobieren bin ich nun trotzdem am Ziel angelangt. Es scheint zu funktionieren

    #include <stdio.h>
    
    
    int main()
    {
    unsigned seed;
    
        int r,i;
    
    
        printf("Bitte geben Sie die Anzahl an Zufallszahlen ein die in einem array gespeichert werden: ");
        scanf("%d",&r);
    
        int myArray[r - 1];
    
    
        srand((unsigned)time(NULL));
    
            for( i = 0; i < r; i++)
        {
            myArray[i] = rand()%10000;
            printf("%d\n", myArray[i]);
        }
    
    
        return(0);
    
    }
    
    


  • @jasmin89 sagte in Zahlen in array schreiben:

    printf("Bitte geben Sie die Anzahl an Zufallszahlen ein die in einem array gespeichert werden: ");
    scanf("%d",&r);
    
    int myArray[r - 1];
    

    Das ist ein Element zu wenig.
    Bei der Definition vom Array wird in den Klammern die Anzahl an Elementen angegeben.
    Beim Zugriff fängt der Index aber bei 0 an.
    Bei 2 Elementen wäre der gültige Index 0 und 1.

    Du benutzt VLA (Variable Length Arrays) die gibt es eigentlich nur in C99. Später wurde die optional.
    In C++ gibt es VLA als nicht standardisierte Erweiterung.


  • Mod

    @DirkB sagte in Zahlen in array schreiben:

    Du benutzt VLA (Variable Length Arrays) die gibt es eigentlich nur in C99. Später wurde die optional.
    In C++ gibt es VLA als nicht standardisierte Erweiterung.

    Und wie sie hier benutzt werden ist zudem auch noch genau, wie man VLAs nicht benutzen sollte. Gibt der Nutzer hier eine halbwegs große Zahl an (ca. eine Million sollte meist schon reichen) an, so stürzt das Programm direkt und nicht-abfangbar ab. Nicht gut, wenn ein Nutzer durch böswillige eingaben ein Programm zum Absturz bringen kann.


Log in to reply