141016
22.10.2019
4164
23
0
Java: Problem bei Aufgabe
Hallo zusammen,
ich habe bereits einwenig an der Aufgabe gearbeitet. Habe aber ein Problem - solltet ihr anhand der Aufgabe erkennen können.
Ich bin dankbar für eure Lösungshilfen.
Gruß Felix
_______________________________
Die folgende Reihe ist mit einem Programm zu berechnen: 1² + 2² + 3² + ... + n²
Vor dem Start des Programms wird ein Grenzwert für die Reihe eingeben, welcher nicht überschritten werden darf. Das Programm gibt am Ende die Anzahl der Summanden aus. Anschließend fragt es, ob eine weitere Reihe berechnet werden soll. Gibt der Anwender das Zeichen 'j' ein, so darf er anschließend einen neuen Grenzwert eingeben und die Reihe wird berechnet. Erstellen Sie ein Struktogramm und anschließend den Javacode.
Beispiel: Grenzwert = 16
1² + 2² + 3² = 14 (liegt unter dem Grenzwert) 1² + 2² + 3² + 4² = 30 (liegt über dem Grenzwert)
Anzahl der Summanden: 3
___________________________________________
Lösungsansatz:
ich habe bereits einwenig an der Aufgabe gearbeitet. Habe aber ein Problem - solltet ihr anhand der Aufgabe erkennen können.
Ich bin dankbar für eure Lösungshilfen.
Gruß Felix
_______________________________
Die folgende Reihe ist mit einem Programm zu berechnen: 1² + 2² + 3² + ... + n²
Vor dem Start des Programms wird ein Grenzwert für die Reihe eingeben, welcher nicht überschritten werden darf. Das Programm gibt am Ende die Anzahl der Summanden aus. Anschließend fragt es, ob eine weitere Reihe berechnet werden soll. Gibt der Anwender das Zeichen 'j' ein, so darf er anschließend einen neuen Grenzwert eingeben und die Reihe wird berechnet. Erstellen Sie ein Struktogramm und anschließend den Javacode.
Beispiel: Grenzwert = 16
1² + 2² + 3² = 14 (liegt unter dem Grenzwert) 1² + 2² + 3² + 4² = 30 (liegt über dem Grenzwert)
Anzahl der Summanden: 3
___________________________________________
Lösungsansatz:
package aufg1_1;
import java.util.Scanner;
public class aufgabe1_1 {
public static void main(String args) {
int grenzwert = 0;
int anzSummand = 0;
char nochmal;
int ergebnis = 0;
int zahl = 1;
System.out.println("Berechnung von: 1² + 2² + 3²....n²");
System.out.println("Geben Sie einen Grenzwert ein: ");
Scanner scan = new Scanner(System.in);
grenzwert = scan.nextInt();
for(int i = 0; i < grenzwert; i++)
{
ergebnis = ergebnis + (zahl*zahl);
zahl++;
anzSummand++;
}
System.out.println("Ergebnis: " + ergebnis);
}
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 507266
Url: https://administrator.de/contentid/507266
Ausgedruckt am: 21.11.2024 um 19:11 Uhr
23 Kommentare
Neuester Kommentar
Hallo,
deine For-Schleife läuft 15 x durch bevor sie den Grenzwert erreicht. Eigentlich sollte die Anzahl der Iterationen gleich der Anzahl der Elemente in der Reihe entsprechen.
Lass dir einfach für jede Schleifen-Iteration die Werte in den Variablen ausgeben und du findest den Fehler selbst.
Und den zweiten Fehler direkt im Anschluss, sofern der Grenzwert nicht nur beliebig angenähert sondern auch tatsächlich erreicht wird.
Das ist ja gerade der Riesenspaß am Programmieren - es selbst herauszufinden
Gruß
Grinskeks
deine For-Schleife läuft 15 x durch bevor sie den Grenzwert erreicht. Eigentlich sollte die Anzahl der Iterationen gleich der Anzahl der Elemente in der Reihe entsprechen.
Lass dir einfach für jede Schleifen-Iteration die Werte in den Variablen ausgeben und du findest den Fehler selbst.
Und den zweiten Fehler direkt im Anschluss, sofern der Grenzwert nicht nur beliebig angenähert sondern auch tatsächlich erreicht wird.
Das ist ja gerade der Riesenspaß am Programmieren - es selbst herauszufinden
Gruß
Grinskeks
icih komm nicht ganz dahinter häng schon seit ein paar tagen an der aufgabe :D.....
Wie sieht denn das geforderte Struktogramm aus?Fragen die du dir stellen solltest:
Gegen was soll der Grenzwert geprüft werden? Gegen die Basis der Exponentialrechung? Gegen was prüfst du?
Und: was ist der Unterschied zwischen deinen Variablen i, zahl und anzSummand?
Hab es jetzt mal so gelöst
Es ist bei weitem nicht perfekt (man sollte noch die Eingaben abfragen ob der Nutzer das richtige eingiebt) und es geht auch deutlich schlanker aber es geht
public static void main(String args)
{
int grenzwert = 0;
int anzSummand = 0;
Scanner nochmal;
Scanner scan;
int ergebnis = 0;
int zahl = 1;
String weiter="j";
System.out.println("Berechnung von: 1² + 2² + 3²....n²");
while (weiter.equals("j") )
{
System.out.println("Geben Sie einen Grenzwert ein: ");
scan = new Scanner(System.in);
grenzwert = scan.nextInt();
for(int i = 0; i <= grenzwert; )
{
ergebnis = zahl*zahl;
System.out.println(zahl + " hoch "+ zahl + " ist gleich "+ ergebnis );
zahl++;
anzSummand++;
i=zahl*zahl;
}
System.out.println("Ergebnis: " + anzSummand);
System.out.println("Wollen Sie eine weitere Berechnung durchführen ?");
zahl=1;
ergebnis=0;
anzSummand=0;
nochmal =new Scanner(System.in);
weiter = nochmal.nextLine();
}
}
}
Es ist bei weitem nicht perfekt (man sollte noch die Eingaben abfragen ob der Nutzer das richtige eingiebt) und es geht auch deutlich schlanker aber es geht
public static void main(String args)
{
int grenzwert = 0;
int anzSummand = 0;
Scanner nochmal;
Scanner scan;
int ergebnis = 0;
int zahl = 1;
String weiter="j";
System.out.println("Berechnung von: 1² + 2² + 3²....n²");
while (weiter.equals("j") )
{
System.out.println("Geben Sie einen Grenzwert ein: ");
scan = new Scanner(System.in);
grenzwert = scan.nextInt();
for(int i = 0; i <= grenzwert; )
{
ergebnis = zahl*zahl;
System.out.println(zahl + " hoch "+ zahl + " ist gleich "+ ergebnis );
zahl++;
anzSummand++;
i=zahl*zahl;
}
System.out.println("Ergebnis: " + anzSummand);
System.out.println("Wollen Sie eine weitere Berechnung durchführen ?");
zahl=1;
ergebnis=0;
anzSummand=0;
nochmal =new Scanner(System.in);
weiter = nochmal.nextLine();
}
}
}
Mal abgesehen, das dem das reine Lösen der Aufgabe beim TO keinen Lerneffekt erzielt, und du nichtmal code Tags verwendest, löst dein Code nicht die gestellte Aufgabe!!
Zitat von @Reinartz:
Hab es jetzt mal so gelöst
Es ist bei weitem nicht perfekt (man sollte noch die Eingaben abfragen ob der Nutzer das richtige eingiebt) und es geht auch deutlich schlanker aber es geht
public static void main(String args)
{
int grenzwert = 0;
int anzSummand = 0;
Scanner nochmal;
Scanner scan;
int ergebnis = 0;
int zahl = 1;
String weiter="j";
System.out.println("Berechnung von: 1² + 2² + 3²....n²");
while (weiter.equals("j") )
{
System.out.println("Geben Sie einen Grenzwert ein: ");
scan = new Scanner(System.in);
grenzwert = scan.nextInt();
for(int i = 0; i <= grenzwert; )
{
ergebnis = zahl*zahl;
System.out.println(zahl + " hoch "+ zahl + " ist gleich "+ ergebnis );
zahl++;
anzSummand++;
i=zahl*zahl;
}
System.out.println("Ergebnis: " + anzSummand);
System.out.println("Wollen Sie eine weitere Berechnung durchführen ?");
zahl=1;
ergebnis=0;
anzSummand=0;
nochmal =new Scanner(System.in);
weiter = nochmal.nextLine();
}
}
}
Hab es jetzt mal so gelöst
Es ist bei weitem nicht perfekt (man sollte noch die Eingaben abfragen ob der Nutzer das richtige eingiebt) und es geht auch deutlich schlanker aber es geht
public static void main(String args)
{
int grenzwert = 0;
int anzSummand = 0;
Scanner nochmal;
Scanner scan;
int ergebnis = 0;
int zahl = 1;
String weiter="j";
System.out.println("Berechnung von: 1² + 2² + 3²....n²");
while (weiter.equals("j") )
{
System.out.println("Geben Sie einen Grenzwert ein: ");
scan = new Scanner(System.in);
grenzwert = scan.nextInt();
for(int i = 0; i <= grenzwert; )
{
ergebnis = zahl*zahl;
System.out.println(zahl + " hoch "+ zahl + " ist gleich "+ ergebnis );
zahl++;
anzSummand++;
i=zahl*zahl;
}
System.out.println("Ergebnis: " + anzSummand);
System.out.println("Wollen Sie eine weitere Berechnung durchführen ?");
zahl=1;
ergebnis=0;
anzSummand=0;
nochmal =new Scanner(System.in);
weiter = nochmal.nextLine();
}
}
}
Das Ergebnis müsste ergebnis = ergebnis + (zahl*zahl); sein.
Aber wie schon oben erwähnt wurde, die Hausaufgaben sollten ja zum Lernen sein und nicht damit wir sie für den TO lösen
Zitat von @141016:
Ich weiss ich werde jetzt gesteinigt, aber ich habe kein Struktogramm
Ich weiss ich werde jetzt gesteinigt, aber ich habe kein Struktogramm
Hast du dir den überhaupt irgendwelche Gedanken zu deiner Aufgabenstellung gemacht oder hast du schlicht keine Lust?
Sorry aber ich verstehe nicht wieso man in einem Forum Leute mit einer Aufgabenstellung konfrontiert wenn man sich nicht mal 1 Minute hingesetzt hat.
Zitat von @141016:
habe ich
habe auch den großteil der aufgabe schon gelöst gehabt nur gabs ein kleines problem
von keine lust ist hier nicht die rede, da die aufgaben auch freiwillig sind
habe ich
habe auch den großteil der aufgabe schon gelöst gehabt nur gabs ein kleines problem
von keine lust ist hier nicht die rede, da die aufgaben auch freiwillig sind
Hi
kannst Du bitte beim Schreiben folgendes beachten:
1. Groß und Kleinschreibung
2. Punkt, Ausrufezeichen und Fragezeichen setzen
Frage:
1. Wieso hast Du kein Struktogramm oder PAP ?
...
Gruß
Holli