• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

xCode Problem

Registriert
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ß
 

svn

Prinzenapfel
Registriert
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 :)
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
svn, hat alles gesagt.

Mein qualitativ wertvoller Beitrag dazu: Xcode!

Viele Grüße
 
  • Like
Reaktionen: below

Poljpocket

Salvatico di Campascio
Registriert
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
 
Registriert
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!
 

Poljpocket

Salvatico di Campascio
Registriert
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
 

Poljpocket

Salvatico di Campascio
Registriert
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 :)
 
Registriert
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ß