Veröffentlicht 20. November 200321 j Hallo! Ich möchte gerne ein Programm schreiben was eine Summenfunktion beinhaltet: Das heisst ich gebe einen Startwert ein, zb. 2 und einen Endwert ein z.b 6. und jetzt will ich das das programm 2 +3+4+5+ 6 rechnet ! Das geht doch bestimmt mit einer Zählschleife oder ??? Bitte schnell antworten!!! Daaaanke !
20. November 200321 j Original geschrieben von Mani Das geht doch bestimmt mit einer Zählschleife oder ??? Unter anderem ja. Wie sieht denn dein Ansatz aus?
20. November 200321 j Na ja mein Ansatz is bis jetzt nur die zählschleife, eine if bedingung hab ich auch schon drin, das der sw kleiner als der ew sein muss:) wie geht es denn noch????
20. November 200321 j das sollte doch eigentlich reichen. Zählerschleife und die Überprüfung. Mehr solltest Du nicht brauchen, mal abgesehen von einer Ausgabe. greetz
20. November 200321 j Ja das hab ich mir auch gedacht, jedoch weis ich nit wie man das realisiert in C
20. November 200321 j Dann solltest du dir am Besten ein Buch oder eBook besorgen und erstmal die C Basics lernen.
20. November 200321 j nun, Du liest also eine Start- und einen Endwert ein. Vergleich: st<ew -> Ja -> weiter sonst Ende. Is klar, ne If - Anweisung. Die Summe der Zahlen ist erst Null. also Summe=0 Dann die Schleife. der Zaehler beginnt mit dem SW. Bei jedem Durchlauf wird die Summe jeweils um den Zeahler erhöht. Der Zaehler wird in jedem Durchlauf um 1 erhöht. Schleife läuft solange, bis der EW erreicht ist. Dann Ausgabe der Summe. Sorry, aber ich wollte jetzt nicht den Quellcode aufschreiben... Das überlasse ich Dir. Aber der Ablauf ist soweit klar ? greetz EDIT: Ist noch einer vor mir gekommen ... Aber stimmt eigentlich. Haste denn überhaupt schon mal mit C programmiert ?
20. November 200321 j #include <stdio.h> #include <math.h> #include <conio.h> #include <iostream> main () { int sw, ew, ergebnis ; printf ("\nDieses Programm berechnet die gesamte Summe eines Anfangswert.\n"); printf ("bis zu einem beliebeigen Endwert\n"); do{ printf ("\nBitte geben Sie einen ganzzahligen, positiven Startwert ein.\n"); scanf ("%i", &sw); printf ("\nBitte geben Sie einen ganzzahligen, positiven Endwert ein.\n"); scanf ("%i", &ew); if (sw >= ew) system ("cls"); printf ("\nDer Endwert muss logischerweise groesser als der Startwert sein!\n"); getch(); system ("cls"); }while (sw >= ew); for (ergebnis = 0; sw <= ew; sw++) { } printf ("Ergebnis %i", ergebnis); }
20. November 200321 j So jetzt nur noch die for schleife füllen, und das war eigentlich auch mein problem! Na ja ich glaub ich bin zum programmieren einfach nit geboren
20. November 200321 j nun, die Schleife kann so nix werden. probier mal sowas: int summe=0; for (int zaehler=sw; zaehler>=ew; zeahler++) { summe+=zaehler; } greetz
20. November 200321 j Hallo, das geht auch einfacher, da Du hier die Gauss-Methode einsetzen kannst: http://www.linux-related.de/coding/alg_gauss.htm Nic
24. November 200321 j Vor allem gehts mit der Gauss-Methode deutlich schneller, wenn sehr viele Zahlen addiert werden sollen!
24. November 200321 j Original geschrieben von sunday united nun, die Schleife kann so nix werden. probier mal sowas: int summe=0; for (int zaehler=sw; zaehler>=ew; zeahler++) { summe+=zaehler; } greetz so kann die Schleife aber auch nichts werden.... es muss heißen zaehler <= ew MfG Roman
25. November 200321 j Bitte schön int summe = 0; summe = ((UG + OG)/2)*(UG - OG) Geht viel schneller als ne Zählschleife!
26. November 200321 j Original geschrieben von CrazyRay so kann die Schleife aber auch nichts werden.... es muss heißen zaehler <= ew MfG Roman Es handelt sich zwar "nur" um einen Tippfehler, aber dennoch hast Du natürlich recht, Roman. Danke für den Hinweis. greetz
26. November 200321 j Original geschrieben von MasterC summe = ((UG + OG)/2)*(UG - OG) Ausprobiert hast du das aber nicht summe = ((UG + OG)/2)*(OG - UG + 1)
27. November 200321 j Hi hab mal versucht dein Problem zu lösen! Vielleicht kann ich dir damit weiterhelfen! ------------------------------------------------------------------------------------------------------ #include <stdio.h> void main (void) { int zahl1,zahl2; int i=1; printf("Bitte geben sie den Startwert ein!"); scanf("%i",&zahl1); printf("Bitte geben sie den Stoppwert ein!"); scanf("%i",&zahl2); fflush(stdin); for(i=zahl1;i<=zahl2;i++) { if(i==zahl2) { printf("%i",i); } else { printf("%i,",i); } } fflush (stdin); getchar (); return 0; } ------------------------------------------------------------------------------------------------------- Ich hoffe der Quelltext stimmt!Bei mir funzt es! Mfg Red Cap
27. November 200321 j Hallo, ehrlich gesagt, kann ich nicht nachvollziehen was Dein Programm mit der Fragestellung zu tun hat. Es gibt die Zahlen zwischen "zahl1" und "zahl2" auf dem Bildschirm auf (die if-Abfrage ist überflüssig, da der "if" und "else" Fall identisch sind). Ein paar generelle Anmerkungen noch zum Code: "main" liefert _immer_ ein int zurück, ein flush auf "stdin" liefert nicht definierbare Ergebnisse. Nic
27. November 200321 j Sorry dann hab ich es falsch verstanden!Tut mir sorry! Bin im Programmieren noch ein Anfänger! Sorry! Kannst du vielleicht meine Frage im forum beantworten? (Programm)
3. Dezember 200321 j Ein paar generelle Anmerkungen noch zum Code: "main" liefert _immer_ ein int zurück Ich würde hierzu gerne nocheinmal darauf verweisen, dass der Standard (ISO/IEC 9899:1999) dies fuer sogenannte "Freestanding Environments" _nicht_ zwingend vorschreibt. Auszug: ... In a freestanding environment (in which C program execution may take place without any benefit of an operating system), the name and type of the function called at program startup are implementation-defined... Nachzulesen in ISO/IEC 9899:1999 Kapitel 5.1.2 "Execution Environments"
3. Dezember 200321 j Hallo, das ist zwar richtig, aber wohl eher theoretischer Natur, da üblicherweise in einem Hosted Environment mit Betriebssystemunterstützung gearbeitet wird. Bei Freestanding Environments existieren noch Reihe weiterer Unterschiede insbesondere in Bezug auf die Kommunikation mit dem Betriebssystem (Programmtermination, File IO, Umgebungsvariablen, etc.). Wenn ich mich richtig entsinne, gabs da auch im Annex eine entsprechende Liste. Nic
9. Dezember 200321 j Hallo, ich muss nochmal meinen Senf dazugeben. 1. Ich wuerde die Zahl der "freestanding environments" nicht unterschätzen. (Waschmaschinen wollen auch programmiert werden ) 2. freestanding environments kommunizieren nicht mit einem OS, weil es normal keines gibt. (Oder ein RTOS ist direkt in das Programm integriert) 3. Der von dir angesprochene Zusatz lässt sich hauptsächlich über Systeminitilisierung und Libraries aus.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.