Programm schreiben: Zahl (n) eingeben, 1+1/n+2/n+3/n+....+n/n

  • Themenstarter Themenstarter Gelöschtes Mitglied 61081
  • Beginndatum Beginndatum
G

Gelöschtes Mitglied 61081

Gast
Guten Abend!


Ich bin wirklich ein absoluter Anfänger und habe mich gerade hier erst angemeldet um mir Hilfe für mein Problem zu suchen.

Im Anhang befindet sich die Aufgabe, die ich bearbeiten muss (+ die Ausgabe, die ich mit meinem Code erhalte)

Meinen Ansatz könnt ihr im Verlauf auch entnehmen, jedoch frage ich mich, wie ich meine Ergebnisse summieren kann.

Ich habe als Lösung die einzelnen Werte einzeln ausgegeben, anstatt die einzelnen Werte summiert als eine Zahl ausgegeben wie in der Aufgabe verlangt.

Bekomme ich es irgendwie hin die Schleife die ich aufgebaut habe, mit einer Summenbildung zu verbinden? Dass das Programm sich bei jedem durchlaufen der Schleife das aktuelle Ergebnis merkt und dieses mit dem Ergebnis des nächsten Schleifendurchlaufs addiert?

Lösungsansätze bitte verständlich für einen noch fachfremden erklären.

Ich danke euch!

Mein Versuch:

Java:
package übung5;

public class scanner {

    public static void main(String[] args) {

            java.util.Scanner eingabe = new java.util.Scanner(System.in);
        

            System.out.println("Bitte Geben sie ihre Zahl ein ");
        
        
int n = eingabe.nextInt();

double zähler = 1;

double hochzahl=1;


double Ergebnis;



while (hochzahl<=n)
    
{ Ergebnis = (hochzahl/n--);


  
   System.out.println("Ergebnis:" +  Ergebnis);
  
}
 

}

    }
 

Anhänge

  • Bildschirmfoto 2019-10-26 um 23.11.56.png
    Bildschirmfoto 2019-10-26 um 23.11.56.png
    90,9 KB · Aufrufe: 44
  • Bildschirmfoto 2019-10-26 um 23.12.19.png
    Bildschirmfoto 2019-10-26 um 23.12.19.png
    37,7 KB · Aufrufe: 48
Ich bekomme auf meinem Wege quasi die einzelnen richtigen Bruchergebnisse zwar raus, jedoch als einzelne Ausgabe und nicht wie in der Aufgabe gefordert addiert zu einem Gesamtwert. Gibt es einfachen Weg, mein Programm so beizubehalten und meine Ausgaben zu addieren? Ich hoffe meine Fragestellung ist klar 🙂
 
Also so? Da ändert sich bei mir aber nichts :/


Java:
package übung5;

public class scanner {


    public static void main(String[] args) {

        
        java.util.Scanner eingabe = new java.util.Scanner(System.in);
        

        System.out.println("Bitte Geben sie ihre Zahl ein ");
int n = eingabe.nextInt();

double zähler = 1;


double hochzahl=1;


double Ergebnis;

double gesamtergebnis = 0.0;

while (hochzahl<=n)
    
{ Ergebnis =(hochzahl/n--);

gesamtergebnis += Ergebnis;
 
   System.out.println("Ergebnis:" +  Ergebnis);
 
}
 

}

    }
 
Es gibt da einen Trick um das genauer zu rechnen aber iwas habe ich vergessen:
Java:
	public static double a(int n) {
		double b = 1;
		for (int i = 2; i <= n; i++) {
			b += 1.0 / i;
		}
		return b;
	}

	public static double b(int n) {
		long b = n * 2;
		for (int i = 2; i <= n; i++) {
			b += n * 2 / i;
		}
		return (double) b / (n * 2);
	}

	public static void main(String[] args) {
		for (int i = 1; i <= 10; i++) {
			System.out.println(a(i));
			System.out.println(b(i));
		}
	}
 
So geht es jetzt. Danke!

Frage: Die Weitere Aufgabestellung lautet:
"Wenn Ihr Programm fehlerfrei läuft, erweitern Sie dieses so, dass das Programm immer wieder nachfragt, ob die Summe noch einmal für eine neue n-Eingabe berechnet werden soll."

Das soll ich mit Stringvergleichen und den Equal Befehlen machen. Ich komme einfach auf keine Lösung oder Ansatz :/



Java:
package übung5;

public class scanner {


    public static void main(String[] args) {

        
        java.util.Scanner eingabe = new java.util.Scanner(System.in);
        

        System.out.println("Bitte Geben sie ihre Zahl ein ");
        
int n = eingabe.nextInt();


double hochzahl=1;



double Ergebnis;


double gesamtergebnis = 0.0;

while (hochzahl<=n)
    
{ Ergebnis =(hochzahl/n--);

gesamtergebnis = gesamtergebnis + Ergebnis;
  
   System.out.println("Ergebnis:" +  Ergebnis);
  
}
  System.out.println("Gesamtergebnis" + gesamtergebnis);
 
 

{
 
 

}
        
      
}

    }
 

Zurück
Oben