Produkt berechnen

Romolus

Mitglied
Speichere in den Variablen x und y eine untere und obere positive Zahl als grenze und in einer weiteren Variablen s die positive Schrittweite (jeweils double). Teste, dass 0<x<y und s>0 ist. Alle Zahlen sollen vom Typ double sein. Berechne das Produkt von allen Zahlen von x bis y mit der SChittweite s, also diser Formel
Produkt von r_i mit Produktindex i mit
r_i = x + i*s
solange r_i<=y,i\in{0,1,2..}

1Teil:
Java:
    double x=2;
     double y=1;
     double s=6;
if(x>0) {
    if(x<y) {
        if (s>0) {
            System.out.print("True");
        }else {
            System.out.print("False");
         }
    }else {
        System.out.print("False");
     }
}else {
    System.out.print("False");
 }

2Teil ??
Dachte an eine do-while schleife
Aber versage da maßlos
Java:
int i = 1;
double r = x+i*s;
do{
r*r;
i++;
}while(r<=y)
 
Java:
r*r;

Willst du das nicht irgendwie speichern? Also r verändert sich da nicht ^^

Also du müsstest doch in der Schleife
Java:
r = x+i*s;
wieder neu errechnen.
 
Java:
int i = 1;
double r = x+i*s;
do
{
  r = x+i*s;
  i++;
}
while(r <= y)

Das sollte gehen 😉
 
Java:
int i = 1;
double r = x+i*s;
do
{
  r = r * (x+i*s);
  i++;
}
while(r <= y)

So besser?^^
 
Wenn das richtige Ergebnis rauskommen würde.

Java:
int i = 0;
double r = x+i*s;
do
{
System.out.print(r = r * (x+i*s));
  i++;
}
while(r <= y);

wenn
double x=2;
double y=9;
double s=3;

müsste es rechnen (2+0*2)*(2+1*3)*(2+2*3)
da 2+3*3 =10 ergiebt und 10>9
also 80 ausgeben
 
Java:
int i = 0;
double r = 1;
do
{
  r = r * (x+i*s)
  i++;
  System.out.print(r);
}
while(r <= y);

So? 😀
 
nein tut er nicht. Nur du ließt da was falsch/gibst es falsch aus 🙂

Java:
 System.out.println(r);
verwende mal das println (das hat einen Zeilenumbruch am Ende). Dann kommst du auch auf 2 und 10 als Ergebnis. Ist wohl leserlicher als 2.010.0 😉
 
er gibt 2 und 10 aus, weil:
(2+0*2) = 2
(2+0*2)*(2+1*3) = 10

Und du musst doch wissen, was du als Lösung berechnen willst^^

Du willst also nur das jeweilige r_i abprüfen, dann probier es doch mal so.

Java:
int i = 0;
double r = 1;
double product = 1;
do
{
  r = x+i*s;
  product= product* r;
  i++;
  System.out.print(r);
}
while(r <= y);
 
Zuletzt bearbeitet:
Hallo 😉
Ich habe gedacht(korrigiere mich wenn es nicht so ist) das das Programm das Produkt der Zahlen berechnen soll.
Weil jetzt gibt er aus:
2.0
5.0
8.0
11.0

Aber in der angabe steht, dass man das Produkt der Zahlen ausgegeben will (oder nicht?)
 
dann gib doch die Variablen product aus,

es muss doch nicht jeder genau die Aufgabenstellung lesen und dann noch solche Details anpassen
 
tja, auch das erfordert noch eine Änderung, zu der du keinen einzigen eigenen Gedanken hast?

reicht Codeaufteilung wie vor der Schleife, in der Schleife, nach der Schleife usw. als Hinweis?
bitte bisschen konzentrieren und ein Mindestmaß an Programmierung doch auch selber versuchen
 
Hallo
Java:
   double x=2;
     double y=1;
     double s=6;
if(x>0) {
    if(x<y) {
        if (s>0) {
            System.out.print("True");
        }else {
            System.out.print("False");
         }
    }else {
        System.out.print("False");
     }
}else {
    System.out.print("False");
 }
  double r = x;
  double produkt = 1;
  for (int i = 0; r < y; i++) {
  r = x + i*s;
  produkt = produkt * r;
  System.out.println(produkt);
        }
2
10
80
880
Hier gibt er mir am schluss 880 raus, was eine zahl zu viel ist!
 
mit den geposteten Werten, x=2 und y=1 wohl kaum 😉

ansonsten ist deine Schleife eben nicht so gut wie andere,
du erhöhst r und verwendest r, bevor es durch den Schleifenkopf im nächsten Durchlauf geprüft wird,

du könntest das Erhöhen ans Ende der Schleife verschieben und mit einem besseren Startwert anfangen,
oder dich nach den anderen Schleifen richten,
da gehört schon etwas knobeln dazu
 
Java:
double x = 2;
		double y = 1;
		double s = 6;
		
		// etwas gekürzt
		boolean matches = (x>0 && x<y && s>0);
		System.out.println(matches);
		
		double r = x; // Das müsste doch 0 sein, nich?!
		double produkt = 1;
		
		for (int i = 0; r < y; i++) // War das nicht <= ?
		{
			r = x + i * s;
			produkt = produkt * r;
			System.out.println(produkt);
		}
 
Muss in einer For schleife nicht Die erhöhung von i an dritter stelle stehen?
Weil die do-while schleife war auch nicht der richtige weg, da der Abbruch so zu spät erfolgt.

Es beginnt doch mit (x+0*s) und da wäre der r-wert x
880 wäre übrigens trotzdem dabei bei x=2, y=9,s=3
 
Zuletzt bearbeitet:
ich meinte die Erhöhung von r, Zeile 20 auf 22 verschieben oder so,

würdest du die Erhöhung von r in den Schleifenkopf schreiben und auf i verzichten, dann wäre es in der Tat noch leichter,
der Code von njans zuletzt dürfte auch nicht viel besser klappen

> Weil die do-while schleife war auch nicht der richtige weg, da der Abbruch so zu spät erfolgt.
gehts genauer?
 
Genau, danke
1.teil +
Java:
  double r = x;
  double produkt = 1;
  for (int i = 1; r <= y; i++) {
    produkt = produkt * r;
  System.out.println(produkt);
  r = x + i*s;
        }
 
oder so:
Java:
        double produkt = 1;
        for (double r = x; r <= y; r+= s)
        {
            produkt *= r;
            System.out.println(produkt);
        }
 

Zurück
Oben