for schleife



  • Hallo zusammen,

    ich hab ein kleines problem, vll könnt ihr mir ja helfen.

    #include<stdio.h>

    void main()
    {
    int m;
    int const p=1;
    double n, s, x;

    printf("********************************\n");
    printf("**********for-schleife**********\n\n");

    printf("Bitte zahl eingeben! ");
    scanf("%d",&n);

    s=0;

    for(x=p/a^m; m<=n;m++)
    s+=x;

    printf("\nDas Ergebnis lautet: %d\n",s);
    }

    ich möchte das er die zahl: p/(a hoch m) nimmt und immer die potenz vom zähler um eins erhöht, die zwischensummer dann addiert. bis zu der zahl n.
    wenn ich das programm erstelle zeigt er keine fehler an. aber wenn ich dann debugge kommt ein fehler.

    kann mir jmd helfen?



  • ^ heißt bei C nicht Potenzieren, sondern Xor.

    Auch sonst passt das noch nicht ganz. x wird nur beim Eintreten in die Schleife gesetzt. Nach jedem Schleifendurchlauf wird nur der hintere Teil des Schleifenkopfs ausgeführt und dann der mittlere Teil überprüft, d. h. x bleibt bei seinem Wert.

    Dass der Compiler keine Fehler beim Erstellen bemängelt, kann ich mir nicht vorstellen, weil ich keine Definition von a sehe. Außerdem ist deine Berechnung für x wahrscheinlich falsch (kommt auf den Typ von a an, den ich wie gesagt nicht sehen kann), weil du Ganzzahlarithmetik betreibst. Beachte, dass 7/4 = 1 ist, weil der Rest hinter dem Komma einfach abgeschnitten wird.



  • Dein m ist default-initialisiert, da kann alles möglche drin stehen, aber garantiert nicht das was du meinst.
    Tip: Variablen immer erst da initialisieren, wo du sie brauchst.
    Außerdem ist dein Programm nicht standardkonform:
    😉 void main() -> int main()
    😉 stdio.h -> cstdio



  • Michael E. schrieb:

    ^ heißt bei C nicht Potenzieren, sondern Xor.

    hallo michael,

    danke bin dann schon mal ein schritt weiter, aber wie muss ich das dann richtig schreiben?



  • Zum potenziern nimmt man pow()



  • Du musst eine bereits vorhandene Funktion benutzen (im Header cmath zu finden) oder dir selber eine schreiben.

    Ich empfehle ersteres:
    http://www.cplusplus.com/reference/clibrary/cmath/pow/



  • gast 123 schrieb:

    danke bin dann schon mal ein schritt weiter, aber wie muss ich das dann richtig schreiben?

    Nette Übungsaufgabe: Schreibe dir eine Funktion, die ganze Zahlen potenziert.



  • Braunstein schrieb:

    Zum potenziern nimmt man pow()

    ja ich hab da schon einiges drüber gegoogelt. aber möchte das ohne pow machen. müsste doch auch funktionieren, glaube ich^^



  • l'abra d'or schrieb:

    Dein m ist default-initialisiert, da kann alles möglche drin stehen, aber garantiert nicht das was du meinst.
    Tip: Variablen immer erst da initialisieren, wo du sie brauchst.
    Außerdem ist dein Programm nicht standardkonform:
    😉 void main() -> int main()
    😉 stdio.h -> cstdio

    muss ich cstdio oder int main nehmen, oder kann ich die schleife iwie ändern damit es passt,
    mache gleich erstal pause, sitze seit stunden dran,^^



  • gast 123 schrieb:

    muss ich cstdio oder int main nehmen, oder kann ich die schleife iwie ändern damit es passt.

    Der Standard schreibt "int main" vor. Compiler die void main() in einem C++-Programm zulassen, sind nicht Standardkonform und/oder maßlos veraltet.
    Gleiches gilt für cstdio. stdio.h ist deprecated (unerwünscht), der Compiler sollte wenigstens ein Warning ausgeben.


  • Mod

    l'abra d'or schrieb:

    Gleiches gilt für cstdio. stdio.h ist deprecated (unerwünscht), der Compiler sollte wenigstens ein Warning ausgeben.

    Er macht offensichtlich C, nicht C++. Da ist das schon richtig.



  • Dieser Thread wurde von Moderator/in volkard aus dem Forum C++ (auch C++0x) in das Forum C (C89 und C99) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten