C Programm - Forschleife die alle ungeraden Rahlen bis N addiert Hilfe
-
Hi,
hoffe jemand von euch kann mir weiterehelfen. Hab die Aufgabe bekommen ein Programm zu schreiben dass alle ungeraden Zahlen bis N adcdiert. Hab das nicht wirklich hinbekommen dadurch dann die Lösungen genutzt um einen Ansatz zu bekommen. Doch leider scheinen mit die Lösungen aus dem Buch "C - Programmieren vin Anfang an von Helmut Erlenkötter" falsch zu sein (kleiner hinweis).
Denn die Lösung lautet folgendermaßen (die kommentare sind von mir...):
main () {
//Deklaration
int n,x,summe=0;//Eingabe
printf("\nBitte geben Sie den Wert fuer n ein: ");
scanf("%i",&n);//Berechnung
for(x=1;x<=n; x=x+2)
summe=summe+x;//Ausgabe
printf("\n Die Summe aller ungeraden Zahlen von ");
printf("1 bis %i ist %i \n",n,summe);}
Eigentlich sollte das ganze so funktionieren , da die for schleife immer 2 hochgeht sprich automatisch alle ungeraden zahlen mitnimmt oder nicht?!
Gebe ich jetzt aber die Zahl 5 ein müsste ja 9 rauskommen denn 1,2,3,4,5 es wäre ja 1 + 3 + 5 = 9 .... bei dem Programm kommen aber nur 6 raus, sprich programm rechnet 2+4.
Ich finde den Fehler nicht und hoffe jemand von euch kann mit weiterhelfen , wäre echt klasseKeep rockng
edit : es liegt doch wahrscheinlich an dem x = 1 ... dass dieser befehl nicht erkennt wird denn das programm fängt nicht bei 1 sondern bei 0 an , oder liege ich da falsch
?!
Inselinc
-
Bei dem Programm, so wie du es hier gepostet hast, kommt bei einer Eingabe 5 auch 9 raus... (Monitor auf dem Kopf?
)
Übrigens ist C was anderes als C#, du bist hier also im falschen Forum gelandet. Hier wäre richtig: http://www.c-plusplus.net/forum/viewforum-var-f-is-10.html
-
Inselinc schrieb:
edit : es liegt doch wahrscheinlich an dem x = 1 ... dass dieser befehl nicht erkennt wird denn das programm fängt nicht bei 1 sondern bei 0 an , oder liege ich da falsch
?!Ja, da liegst du falsch. Wie kommst du darauf? Also ich kann kaum glauben, dass du beim Ausführen dieses Codes wirklich eine 6 als Ergebnis bekommst. Hast du den Code per Copy&Paste hier gepostet oder abgetippt? Ich würde mal letzteres (und einen Flüchtigkeitsfehler in dem Code, den du tatsächlich ausführst) vermuten.
-
lolololo ok ich hab mal kurz nen screenshot gemacht bei mir kommt 6 raus .....
http://i50.tinypic.com/23hopig.jpg
dass ich hier im falschen Forum gelandet bin sry, wird nicht wieder vorkommen
edit: wo könnte jetzt der fehler liegen? Hab das ganze mit codeblocks gemacht ... eigentlich funktioniert auch alles ... aber anscheinend liegt da ein kleines problem vor *_*^^ ansonsten hat jemand vll nen tipp für ein anderes programm um c übungen wie diese zu programmieren??
gruß
inselinc
-
In deinem Screenshot ist die Ausgabe des Programms. Schön. Aber der dazugehörige Code fehlt, denn der den du uns eingangs gepostet hast funktioniert einwandfrei.
-
der code im anfangspost erzeugt bei mir diese ausgabe .... darum geht es ja *_*
bei mir erkennt codeblocks nicht dass x = 1 ist ... sondern fängt bei 0 an ... deswegen ja auch die 6 aus ergebniss.
jetzt frage ich mich warum nur schleifen nicht funktionieren und der ganze rest schon (also was ich bisher getan habe).
und da das problem ja anscheinend nicht wirklich bekannt ist , ich ein einzelfall bin , ist die frage was ich jetzt tun soll. wahrscheinich auf eine andere entwicklungsumgebung umsteigen , doch da gibt es ja einige. kann da eine hervorgehoben werden, da sie ziemlich übersichtlich und einfach ist? oder muss ich ein paar durchprobieren ?^^
grüße
-
Inselinc schrieb:
Hi,
hoffe jemand von euch kann mir weiterehelfen. Hab die Aufgabe bekommen ein Programm zu schreiben dass alle ungeraden Zahlen bis N adcdiert. Hab das nicht wirklich hinbekommen dadurch dann die Lösungen genutzt um einen Ansatz zu bekommen. Doch leider scheinen mit die Lösungen aus dem Buch "C - Programmieren vin Anfang an von Helmut Erlenkötter" falsch zu sein (kleiner hinweis).nimm einfach n*n, das passt schon, die summe aller ungeraden n zahlen ist n^2
oder, wenn du die ungerade zahl selber als input nehmen willst, dann mach:int x = ... // <--- ungerade zahl int summe = (x*x + 2*x + 1)/4 // <-- summe aller ungeraden davor + x
^^ ganz ohne schleife.
-
hilft ihm ja aber nicht generell weiter, hast du schonmal versucht eine ausgabe schleife zu machen? einfach von 1 bis 5 mal ausgeben lassen, hast du auch schon andere zahlen als 5 probiert? was kommt denn da raus?
Ich kann mit nicht vorstellen das codeblocks das nicht annimmt, jedoch kannst du generell bei normaler Konsolenprogrammierung nicht sonderlich viel falsch machen, man kann sicherlich Visual Studio empfehlen.
-
Siraja schrieb:
hilft ihm ja aber nicht generell weiter...
hilft ihm zumindest bei seiner aufgabe weiter. ansonsten sollte er sich von den schnarchnasen-moderatoren hier endlich mal ins C-forum verschieben lassen.
-
Inselinc schrieb:
jetzt frage ich mich warum nur schleifen nicht funktionieren und der ganze rest schon (also was ich bisher getan habe).
Also ich bin 110%-ig sicher, dass Schleifen auch mit deinem Compiler funktionieren! Probier doch mal das hier aus:
int main() { int i=0; for(i=1;i<10;i+=2) { printf("%d\n",i); } }
Was kommt da bei dir raus? Poste bitte mal die Ausgabe.
-
Habe den Code auch getestet.
1 mal in DEV C++
1 mal in Visual Studio 2005.Code Block läuft bei mir nicht, keine Ahnung warum.
Aber es kommt immer die 9 als Ergebnis.
Versuch die Schleife mal so zu schreiben...
//Deklaration int n,x = 1, summe=0; //Berechnung for(;x<=n; x=x+2) { summe=summe+x; }
Schon merkwürdig das ganze....
-
Hallo,
welchen Compiler nutzt Du denn? CodeBlocks unterstützt ja da einige viele
Unter CB und gcc version 4.4.1 (Ubuntu 4.4.1-4ubuntu8) gibts keine Probleme.
for(x=1;x<=n; x=x+2) { sprintf(buff,"%d\n",x); printf(buff); summe=summe+x; } //Ausgabe printf("\n Die Summe aller ungeraden Zahlen von "); printf("1 bis %i ist %i \n",n,summe); }
bringt also Ausgabe
Bitte geben Sie den Wert fuer n ein: 5
1
3
5Die Summe aller ungeraden Zahlen von 1 bis 5 ist 9
Gruß
foodax
-
Dieser Thread wurde von Moderator/in CMatt aus dem Forum C# und .NET in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.