addition der geraden zahlen bis x kleines problem



  • ich ja alles geraden habne will
    wie soll das denn mit addition ghen ?!



  • ich hab ein bisschne verändert :

    #include <stdio.h>

    int main (void)
    {
    float maximum, popel, summe;

    printf("Bitte die maximale Zahl eingeben:");
    scanf ("%f", &maximum);

    for (popel=0;popel=maximum;popel*=2)
    {
    summe==summe + popel;
    printf("%.2f", summe);
    }

    getchar();
    }

    wenn ich das prooggi nun audfähre gibt er immer 000.000.000.000.000.000.000.000

    aus



  • 1. Codetags verwenden
    2. summe wird nicht initialisiert
    3. 0*2 gibt 0
    4. Jetzt hast du den Zuweisungsoperator an der falschen Stelle ersetzt. Lies diese Operatoren nochmal im Buch nach.



  • kannst du bitte 1.-4. näher erläutern.

    das 2*0=0 ist doch auch gewollt



  • zu 1. http://www.c-plusplus.net/forum/viewtopic.php?t=129036
    zu 2. Der Variablen summe muss vor ihrer Verwendung ein definierter Wert zugewiesen werden, so wie es jetzt ist, kann summe jeden (zufälligen) Wert haben
    zu 3. So wie du das machst bleibt popel zur gesamten Laufzeit 0
    zu 4. Lies diese Operatoren nochmal im Buch nach.



  • nochmal ich schrieb:

    for (popel=0;popel=maximum;popel*=2)
    {
    summe==summe + popel;
    printf("%.2f", summe);
    }

    wieso uebergibst du bei jedem schleifendurchlauf den wert von maximum an popel?
    und wieso vergleichst du nun summe mit summe + popel??
    wenn du jede gerade zahl bis zum eingelesenen wert maximum addieren möchtest, wieso nimmst du dann bei jedem schleifendurchlauf popel(bekommt immer wert von maximum zugewiesen) mal 2?
    vielleicht meinst du ja popel+=2? (schau dir dazu aber lieber mal den '%' operator an ;))
    und wie TactX schon sagte: bitte codetags verwenden und "summe" einen wert zuweisen.

    ps. gibt dein compiler keine warnmeldung bei deinem code aus??



  • nein er gibt keinerlei fehlermeldungen aus

    was sind codetags ?

    wie groß muss summe denn sein ?

    kannst du das bitte mal zum code hinzufügen

    wi esoll ich denn sonst popel(kp wie ich drauf kam) und maximum in zusammenhang bringen ?

    thx



  • Was haltet ihr von:

    #include <stdio.h> 
    
    int main () 
    {
    int summe,maximum;
    printf("Bitte die maximale Zahl eingeben:"); 
    scanf ("%d", &maximum);
    summe = maximum * (maximum - 1);
    printf("%d", summe); 
    
    getchar(); 
    }
    

    ?

    Oder eure (Problem)Lösung

    int main (void) 
    { 
    int /* Ich nehme mir die Freiheit 
    "int" anstatt "float" zu nehmen */,maximum, summe = 0 /* Initialisierung berichtigt */ ; 
    
    for (int popel=0; popel <= maximum /* Zuweisung(=) <> Vergleich(==) berichtigt;
        zur sicherheit ">=" verwendet */
        ;popel+=2 /* Multipikation berichtigt
        (*2 erzeugt z.B. 2,4,8,16,32; +2 erzeugt gerade Zahlen */)
    {
        summe += popel; /* entspricht summe = summe + popel;
        Zuweisung berichtigt */
        printf("%d", summe); /* Was wolltest su mit
        zwei Nachkommastellen? */
    }
    getchar(); 
    }
    

    TactX schrieb:

    zu 2. Der Variablen summe muss vor ihrer Verwendung ein definierter Wert zugewiesen werden, so wie es jetzt ist, kann summe jeden (zufälligen) Wert haben

    Komisch - bei mir nicht! (Es werden bei mir immer die gleichen Werte angezeigt {auch bei jedem Starten}!!!):

    #include "stdafx.h"
    
    int main(int argc, char* argv[])
    { for(int c = 0; c < 100; c++) {
         float t; int a; double z;
         printf("%d:\t%f\t%d\t%f\t\n",c,t,a,z); } 
    getchar(); }
    


  • Rhombicosidodecahedron schrieb:

    TactX schrieb:

    zu 2. Der Variablen summe muss vor ihrer Verwendung ein definierter Wert zugewiesen werden, so wie es jetzt ist, kann summe jeden (zufälligen) Wert haben

    Komisch - bei mir nicht! (Es werden bei mir immer die gleichen Werte angezeigt {auch bei jedem Starten}!!!)

    Willkommen in der Welt des undefinierten Verhaltens. Lokale Variablen der Speicherklasse auto werden nicht automatisch initialisiert. Wenn das bei dir trotzdem der Fall sein sollte, ist das Glück (oder auch Pech, je nachdem wie man zu "crash early" steht).



  • wenn ich das programm so:

    #include <stdio.h>
    
    int main (void)
    {
        int maximum, summe = 0, popel = 0;
    
         printf("Bitte die maximale Zahl eingeben:");
         scanf ("%f", &maximum);
    
    for ( popel=0;popel>=maximum;popel+=2)
    {
    
        summe += popel;
        printf("%i", summe );
    }
    
    getchar();
    }
    

    ausführe wird nichts angezeigt d.h. nur bitte maximalen wert eingeben und dann meine eingegeben zahl
    das wars
    programm ende
    wo ist da bitteschön der fehler ich blick nicht durch !

    happy xmas !!



  • bananenbieger schrieb:

    wenn ich das programm so:

    #include <stdio.h>
    
    int main (void)
    {
        int maximum, summe = 0, popel = 0;
         
         printf("Bitte die maximale Zahl eingeben:");
         scanf ("%f", &maximum);
    
    for ( popel=0;popel>=maximum;popel+=2)
    {
        
        summe += popel;
        printf("%i", summe );
    }
    
    getchar();
    }
    

    ausführe wird nichts angezeigt d.h. nur bitte maximalen wert eingeben und dann meine eingegeben zahl
    das wars
    programm ende
    wo ist da bitteschön der fehler ich blick nicht durch !

    happy xmas !!

    Mein Fehler! Das Zuweisungsding (>=) war falsch (Richtig: <=)

    Mit freundlichen Grüßen und frohe Weihnachten wünschend
    Rhombicosidodecahedron

    P.S: (1) Was hälst du von meinen obrigen Code?
    P.S: (2) Fehler können bei jeden vorkommen... (sollten aber nicht)



  • DANke jetzt geht es

    alles gute

    DANKESCHÖN



  • bananenbieger schrieb:

    ...
        int maximum, summe = 0, popel = 0;
         
         printf("Bitte die maximale Zahl eingeben:");
         scanf ("%f", &maximum);
    ...
    

    Wieso liest du in maximum mit %f ein? maximum ist doch ein Integer. Bitte %d benutzen.


Anmelden zum Antworten