Programm 3er Summe

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Programm 3er Summe

    Hallo ihr Programmierer da draußen ;)
    Ich brauche einmal wieder eure Hilfe .....
    Habe hier ein Programm mit dem Namen Dreier Summer zu dem die Aufgaben Stellung lautet :

    Implementieren Sie eine Klasse DreierSumme, die die Summe aller positiven und durch
    3 teilbaren natürlichen Zahlen bis zu einer Zahl n berechnet. Dabei gelten folgende
    Regeln:

    • Lesen Sie n durch den Bediener ein.
    • Wenn n kleiner als 3 ist wird als Summe 0 ausgegeben.
    • Wenn n nicht durch 3 teilbar ist, wird die Summe nur bis zur nächst kleineren durch 3
    teilbaren Zahl berechnet. Beispiel: Wenn n = 14 wird als Ergebnis die Summe
    3+6+…+12 berechnet.

    Lassen Sie sich nicht nur die Summe ausgeben, sondern auch die Zahlen, die wirklich
    für die Addition verwendet werden.

    Das Programmausgabe sieht beispielhaft so aus:
    >n eingeben:
    12
    3 + 6 + 9 + 12
    summe = 30
    >n eingeben:
    2
    summe = 0
    >n eingeben:
    16
    3 + 6 + 9 + 12 + 15
    summe = 45

    Jetzt zur eigentlichen Aufgabe:
    a. Implementieren Sie das Programm durch Verwendung einer for-Schleife.
    b. Ändern Sie das Programm in a) so um, dass Sie eine while Schleife verwenden und die
    Ausgaben identisch sind.
    c. Ändern Sie das Programm in a) so um, dass Sie eine do-while Schleife verwenden und
    die Ausgaben identisch sind.


    Testen Sie insbesondere ihre Schleifen für n mit den Werten 12, 2, 16.

    So jetzt habe ich mich natürlich gleich in die Arbeit gestürtzt und rausgekommen ist dabei folgendes :

    Quellcode

    1. public static void main(String[] args)
    2. {
    3. int n = Console.readInt("Bitte geben Sie n ein ");
    4. int rest;
    5. if(n<3)
    6. {
    7. System.out.println("Summe: 0");
    8. }
    9. else if(((n%3)!=0))
    10. {
    11. rest=n%3;
    12. int grenze= n - rest;
    13. for ( int i=3; i<=grenze;i++)
    14. {
    15. System.out.println(i);
    16. {
    17. }
    18. }
    19. }
    20. }
    Alles anzeigen


    soweit so gut jetzt bin ich nun soweit das ich mir die einzelenen Schritte Ausgebenlasse aber jetzt müsste ich Ja noch die Summe brechnen aber wie tue ich das ??? ich muss ja sagen er soll 3 +4+5+6+7+8 bis zur letzten durch 3 teilbare zahl n jeden Einzelenen schritt addieren???

    ... hab schon einig komische konstrukte probiert z.b mit einer while schleife in der for und soweiter aber da kommt natürlich auch nichts gescheits bei raus ich bräuchte doch praktisch einen zwischen speicher für i also sagen wir

    Quellcode

    1. int result = i;

    und dann?.... wie komm ich nun dazu das er jeden schritt mit dem nächsten addiert ?
  • Also erstmal dein Code in etwas lesbarerer Form:

    Quellcode

    1. public static void main(String[] args) {
    2. int n = Console.readInt("Bitte geben Sie n ein ");
    3. if (n < 3) {
    4. System.out.println("Summe: 0");
    5. } else if ((n % 3) != 0) {
    6. int rest = n % 3;
    7. int grenze = n - rest;
    8. for (int i = 3; i <= grenze; i++) {
    9. System.out.println(i);
    10. }
    11. }
    12. }
    Alles anzeigen

    Manuchao schrieb:

    jetzt müsste ich Ja noch die Summe brechnen aber wie tue ich das ???

    Wie Seba sagte, mußt du für die Summe eine weitere Variable verwenden. Diese muß natürlich mit 0 initialisiert und in der Schleife um den jeweiligen Wert erhöht werden.

    Manuchao schrieb:

    ich muss ja sagen er soll 3 +4+5+6+7+8 bis zur letzten durch 3 teilbare zahl n jeden Einzelenen schritt addieren???

    Sicher? Schau dir nochmal die Anforderung in der Aufgabenstellung an.

    Manuchao schrieb:

    Wenn n nicht durch 3 teilbar ist, wird die Summe nur bis zur nächst kleineren durch 3 teilbaren Zahl berechnet. Beispiel: Wenn n = 14 wird als Ergebnis die Summe 3+6+…+12 berechnet.
  • ja mir war schon klar das das nur mit einer 2 Variable funzen kann.....
    meine Frage ist nur wie mach ich das (also habe mit der formulierung probleme)

    Quellcode

    1. DreierSumme {
    2. public static void main(String[] args)
    3. {
    4. int n = Console.readInt("Bitte geben Sie n ein ");
    5. int rest;
    6. int summe;
    7. if(n<3)
    8. {
    9. System.out.println("Summe: 0");
    10. }
    11. else if(((n%3)!=0))
    12. {
    13. rest=n%3;
    14. int grenze= n - rest;
    15. for ( int i=3; i<=grenze;i++)
    16. {
    17. System.out.println(i);summe= i+i; System.out.println(summe);
    18. {
    19. }
    20. }
    21. }
    Alles anzeigen


    habe nur oben die Variabel summe deklariert und mit 0 initialisiert unten in der For Schleife sage ich nun

    Quellcode

    1. System.out.println(i);summe= i+i; System.out.println(summe);

    was aber totaler Schwachsin ist kommt zumindest nur Schwachsin bei raus aber auch nach langem überlegen ist das das einzig logische für mich weil ich möchte ja i + i(um eins erhöt) bis zur 12 (habe den test mit 14 gemacht)müsste doch eigentlich passen ?????
    habe das ganze auch schon folgendermaßen geschrieben

    Quellcode

    1. summe=i+i++
    also i+i dann wird i um 1 erhöt und wieder auf addiert.... aber das ist noch größerer Schwachsinn als das davor;) Hab da wohl irgendwo einen Denkfehler steh echt aufen Schlauch hab mir jetzt schon ewigkeiten den kopf drüber zerbrochen wäre nett wenn mir jemand ein kurzes Beispiel geben kann oder vieleicht weiß ja auch jemand wo mein Denkfehler liegt ???

    Danke schonmal im Vorraus....
  • Mal ne andere Idee:

    Wie wärs wenn du die Schleife so umbaust:

    Quellcode

    1. for ( int i=0; i<=n;i+=3)
    2. {
    3. System.out.print(i+"+");
    4. summe+=i;
    5. }
    6. System.out.println("="+summe);


    Den ganzen anderen Quatsch in deiner main-Methode brauchst du dann auch nicht. Außerdem gehört die Zählvariable in einer for-Schleife zu manipulieren (sofern Java das überhaupt gestattet) in die gleiche Kategorie wie das goto-Statement :)
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]