1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

xCode Problem

Dieses Thema im Forum "OS X-Developer" wurde erstellt von scheffieldtunes, 03.06.09.

  1. scheffieldtunes

    Dabei seit:
    12.01.07
    Beiträge:
    55
    Habe da ein kleines Problem mit xCode. Ich schreibe grade ein paar kleine C Programme die ich aus einem lehrbuch entnehme. Das Prob ist das xCode komischer weise seit heute falsch rechnet.

    Dieses kleine Programm hier:

    Code:
    #include <stdio.h>
    
    main ()
    {
        int n,x,summe=0;
        printf("\nBitte geben Sie den Wert für n ein :");
        scanf ("%i", &n);
        for (x=1; x<=n; x=x+1);
            summe=summe+x;
        printf("\nDie Summe aller ungeraden Zahlen von 1 bis %i lautet : %i",n,summe);
    }
    sollte wenn es richtig ausgeführt wird die ungeraden Zahlen von 1 bis n addieren. Allerdings macht xCode das nicht mehr. (Gestern hat ers noch gemacht) Jetzt nimmt er einfach n und addiert immer 1 drauf. Das macht er komischerweise nicht nur bei dem Programm so sondern auch bei allen anderen die mit einer Berechnung zu tun haben.

    Hat jemand vielleicht ne Ahnung wodran das liegen könnte ? Hab ich eventuell ohne es zu wissen was verstellt was das hervorruft ?

    Danke im vorraus!

    Gruß
     
  2. svn

    svn Prinzenapfel

    Dabei seit:
    20.01.06
    Beiträge:
    553
    Wo ist deine Bedingung, dass er die gerade Zahlen ignoriert?
    Ich sehe die nicht, wird denke ich mal was mit % 2 sein.
    Oder du musst x = x + 2 machen :)
     
  3. LittlePixel

    LittlePixel Strauwalds neue Goldparmäne

    Dabei seit:
    09.07.08
    Beiträge:
    641
    svn, hat alles gesagt.

    Mein qualitativ wertvoller Beitrag dazu: Xcode!

    Viele Grüße
     
    below gefällt das.
  4. Poljpocket

    Poljpocket Salvatico di Campascio

    Dabei seit:
    07.01.07
    Beiträge:
    432
    Erstens mal: Der Xcode macht gar nix, der kompiliert deinen Code nur, was ein ausführbares Progrämmchen als Resultat erzeugt. Also die Schuld liegt nicht bei Xcode, sondern bei deinem Code.

    Lösung: Schreib anstatt x=x+1 einfach x=x+2. Hat ja svn schon erwähnt. Weiter gibt es eine schöne Formel zur Berechnung der ersten n natürlichen, ungeraden Zahlen, ist also noch einfacher :)

    Die Formel:

    s = m^2 mit n = (2m - 1), n ist deine oberste Zahl

    Irgendwie musst du aber dann noch prüfen, dass nur ungerade Zahlen eingegeben werden.
    Zum Beispiel so:

    if (n % 2 == 0)
    n--;

    dabei ist n-- dasselbe wie n=n-1 !

    Gruss ppocket
     
  5. scheffieldtunes

    Dabei seit:
    12.01.07
    Beiträge:
    55
    Sorry, das war falsch. Da habt ihr recht. Aber es ändert sich trotzdem nichts.

    Hier nochmal der richtige Code:

    Code:
    #include <stdio.h>
    
    main ()
    {
        int n,x,summe=0;
        printf("\nBitte geben Sie den Wert für n ein :");
        scanf ("%i", &n);
        for (x=1; x<=n; x=x+2);
            summe=summe+x;
        printf("\nDie Summe aller ungeraden Zahlen von 1 bis %i lautet : %i",n,summe);
    }
    Gebe ich 4 ein, gibt er mir 5 aus, obwohl es eigentlich 4 sein müsste da 1+3=4 sind ... auch bei einem anderen Programm bei der er die Fakultäten verschiedener Zahlen ausrechnen soll macht er genau das selbe. Er nimmt n und addiert 1 drauf und gibt das als Ergebnis aus.

    Ich brauche dringend Hilfe ich verstehe das einfach nicht. Unter Geany auf Linux/Windows funktionieren die Programme einwandfrei. Allerdings funktioniert Geany auf Mac Os nicht einwandfrei. Deshalb nutze ich ja xCode.

    Danke nochmals für eure Hilfe!!!

    Gruß

    edit: Komischerweise addiert er jetzt schon 2 auf den n Wert. Vielleicht liegt es doch iwie am Programm nur komm ich da noch nicht so dahinter!
     
  6. Poljpocket

    Poljpocket Salvatico di Campascio

    Dabei seit:
    07.01.07
    Beiträge:
    432
    Ein Beispiel zur Formel:

    n = 15

    das heisst weiter, dass m = 8 (2*8 - 1 = 15)

    die Summe ist in dem Fall 8^2 = 64

    voilà, so einfach ists :)

    Gruss ppocket
     
  7. Poljpocket

    Poljpocket Salvatico di Campascio

    Dabei seit:
    07.01.07
    Beiträge:
    432
    ohhhhh ohhhhh...

    Das kleinste Ding überseh ich...

    Code:
    for (x=1; x<=n; x=x+2);
            summe=summe+x;
    das ist der Fehler, richtig wäre: (du musst dem compiler sagen, was alles in die for-Schleife gehört, deine ist einfach leer und die Addition einfach nur ein weiterer Befehl!)

    Code:
    for (x=1; x<=n; x=x+2) {
            summe=summe+x;
    }
    oder

    Code:
    for (x=1; x<=n; x=x+2)
            summe=summe+x;
    unterstes funktioniert, weil die for-Schleife nur eine Befehlszeile enthält. Bei mehreren musst du das erste richtige Beispiel nehmen. Ist übrigens auch bei if-Verzweigungen so :)

    In deiner falschen for-Schleife definierst du x = 1, und 4 + 1, das gibt nun mal 5 :)
     
    Jamsven und bezierkurve gefällt das.
  8. scheffieldtunes

    Dabei seit:
    12.01.07
    Beiträge:
    55
    Au man. Ich depp. :eek: Viele vielen dank. Das ich das ums verrecken nich selber gesehen habe. Omg.
    Danke, danke, danke, danke, danke!!!!!

    Naja damit wäre meine Frage beantwortet!

    Gruß
     

Diese Seite empfehlen