Werte einer Schleife speichern



  • Hallo!

    Gibt es in C eigentlich eine Funktion, mit der ich die einzelen Werte einer for-Schleife speichern kann, slso z.B. bei

    void main()
    {
    
    int i, result;
    
    for (i=0; i<5; i++)
    
    {
    result = 5+i;
    printf("Ergebnis: %i\n", result);
    }
    }
    

    result für alle i speichern?



  • Array.



  • so müsste es gehen:

    void main()
    {
    
    int i, result;
    int array[4];
    
    for (i=0; i<5; i++)
    
    {
    result = 5+i;
    printf("Ergebnis: %i\n", result);
    scanf("%i", %array[i]);
    }
    }
    


  • frat75 schrieb:

    so müsste es gehen:

    void main()
    {
    
    int i, result;
    int array[4];
    
    for (i=0; i<5; i++)
    
    {
    result = 5+i;
    printf("Ergebnis: %i\n", result);
    scanf("%i", %array[i]);
    }
    }
    

    Nö, du brauchst 5 Elemente (0-4 macht 5). So schreibst du über das Array hinaus...

    EDIT: Äh, und wieso scanf?? Er muss doch einfach statt in result in array den Wert wegspeichern. Entweder halbwegs richtig oder lieber gar nicht posten...
    EDIT2: Und auf die Einrückung verzichtet man gefälligst nicht. Die ist wichtig. Auch, wenn's nur ein paar Zeilen sind.



  • Habs hinbekommen, ist allerdings noch eine weitere Frage zu den Arrays aufgetaucht.

    Wenn ich wieder folgendes einfache Bsp. nehme:

    void main()
    {
    
    int i, result;
    int res [5];
    
    for (i=0; i<5; i++)
    
    {
    
    result = 5+i;
    
       if (result != 8 || 9)
           res[i]=result;
    
    }
    if (res[3] != 0)
        printf("Ergebnis: %i\n", res[3]);
    
    }
    

    Beim 4. Schleifendurchlauf (i=3) ergibt result 8, d.h. er speichert keinen Wert in den Array. Warum gibt er mir dann aber trotzdem 8 aus, obwohl der Wert res[3] doch 0 sein müsste?
    Oder speichert er bei i=3 nicht 0, sondern "nichts"? 🙂



  • Dann muss halt der PrettyPrinter ran!

    void main()
    {
       int i, result;
       int array[5];
    
       for (i = 0 ; i < 5 ; i++ )
       {
          result = 5 + i;
          printf ("Ergebnis: %d\n", result);
          scanf ("%d", &array[i]);
       }
    }
    

    Ich behaupte ganz keck, folgendes ginge ebenso:

    void main()
    {
       int i, array[5];
       for (i = 0 ; i < 5 ; i++ )
       {
          array[i] = 5 + i;
          printf ("Ergebnis: %d\n", array[i]);
       }
    }
    


  • if (result != 8 || 9)  // Diese If-Abfrage ist IMMER true, weil die Syntax nicht "abgekürzt" werden kann
    
    if (result != 8 || result != 9) // Hier würde womöglich eher das passieren, was Du erwartest
    


  • ja das ist mir klar, dass es auch so geht, aber mir geht es darum, was in den Array gespeichert wird bzw. wie ich die Bedingung setzen muss, damit er mir nur die Werte != 0 ausgibt.



  • Pretty schrieb:

    if (result != 8 || result != 9)
    

    nein, aich hier passiert nicht das, was ich erwarte 😉



  • kugie schrieb:

    .... Warum gibt er mir dann aber trotzdem 8 aus, obwohl der Wert res[3] doch 0 sein müsste?
    Oder speichert er bei i=3 nicht 0, sondern "nichts"? 🙂

    Wo steht denn, dass in res[3] etwas gespeichert werden soll?

    Das Array res[] ist nicht initialisiert. Da steht erstmal "Müll" drin.
    Der Müll kann auch aus Nullen bestehen, muss es aber nicht 🙂



  • DirkB schrieb:

    Wo steht denn, dass in res[3] etwas gespeichert werden soll?

    res[i]=result;
    

    ???



  • kugie schrieb:

    res[i]=result;
    

    ???

    Da wird in res[3] eine 8 geschrieben. (Oder wenn die if-Bedingung richtig geschrieben wird, wird der Befehl übersprungen)

    Warum soll da also eine 0 drin stehen?


Anmelden zum Antworten