Erste Schritte While Schleifen Programm

Loddakwin

Aktives Mitglied
Hallo Leute,

also ich habe ein rießen Problem ich muss ein Programm schreiben steh aber komplett am schlauch.

Also die Angabe:
Bildschirmfoto 2015-10-28 um 21.46.41.png

Java:
        double a;
        double b;
        int count = 0;
        double x = 0;
        double y = 0;
        int n = 1000;

        System.out.println("a:");
        a = SavitchIn.readDouble();
        System.out.println("b:");
        b = SavitchIn.readDouble();

        while (x * x + y * y <= 4) {
            x = x * x - y * y + a;
            y = 2 * x * y + b;
           
            x = x + count;
            y = y + count;
            count++;
        }

        System.out.print("Iterationen: " + count);

Vielleicht könnt ihr mir einen Tipp geben? Ich erwarte keine vollständige lösung ein tipp würde schon reichen.

lg
 

Flown

Administrator
Mitarbeiter
Bist ja knapp dabei:

Java:
import java.util.Scanner;

public class Test {
   public static final int X0 = 0;
   public static final int Y0 = 0;
   
   public static void main(String... args) {
     try (Scanner sc = new Scanner(System.in)) {
       int x_n = X0;
       int y_n = Y0;
       int a = sc.nextInt();
       int b = sc.nextInt();
       int iterations = 0;
       while (x_n * x_n + y_n * y_n <= 4 && iterations < 1000) {
         int xSucc = x_n * x_n - y_n * y_n + a;
         int ySucc = (x_n * y_n << 1) + b;
         x_n = xSucc;
         y_n = ySucc;
         iterations++;
       }
       
       System.out.format("%d iterations.", iterations);
     }
   }
}
 

Loddakwin

Aktives Mitglied
Bei meinem Programm gibt es noch einen zweiten teil bei dem ich mir dachte das er relative leicht ist aber ich habe eine leichte abweichung beim Ergebnis. Vielleicht könnt ihr mir hier noch mal einen kleinen Tipp geben es muss sich um einen kleinen fehler handeln aber ich finde Ihn einfach nicht.

Bildschirmfoto 2015-10-29 um 09.41.37.png

Java:
        double a;
        double b;
        double x_n = 0;
        double y_n = 0;
        final int n = 1000;
        int iterationen = 0;

        System.out.println("a:");
        a = SavitchIn.readDouble();
        System.out.println("b:");
        b = SavitchIn.readDouble();

        while (x_n * x_n + y_n * y_n <= 4) {
            double xerg = (x_n * x_n) - (y_n * y_n) + a;
            double yerg = (2 * (x_n * y_n)) + b;

            while (iterationen >= n) {
                a = a + 0.00001;
                iterationen--;
            }

            x_n = xerg;
            y_n = yerg;
            iterationen++;
        }

        System.out.println("Iterationen: " + iterationen);
        System.out.print("Rand " + a);

lg
 

Flown

Administrator
Mitarbeiter
"Pseudocode", wenn du keine Lösung haben möchtest:
Code:
def main(args : Array[String]) {
  println("a:")
  var a = StdIn.readDouble()
  println("b:")
  val b = StdIn.readDouble()
  val iterations : Int = iterations(a, b)
  while(iterations(a, b) >= 1000) {
    a += 1e-5
  }
  println("Iterationen: " + iterations)
  println("Rand: " + a)
}

def iterations(a: Double, b: Double) = {
  var iterations = 0
  var x_n = 0d
  var y_n = 0d
  while (x_n * x_n + y_n * y_n <= 4d && iterations < 1000) {
    val xSucc = x_n * x_n - y_n * y_n + a
    val ySucc = 2 * x_n * y_n + b
    x_n = xSucc
    y_n = ySucc
    iterations += 1
  }
  iterations
}
 

Loddakwin

Aktives Mitglied
Danke auf jeden Fall für deine Hilfe ich habe versucht den Pseudo-Code umzusetzen aber es will nicht funktionieren.

Java:
public static void main(String[] args) {

        double a;
        double b;

        System.out.println("a:");
        a = SavitchIn.readDouble();
        System.out.println("b:");
        b = SavitchIn.readDouble();

        int iterationen = iterationen(a, b);
      
        while (iterationen >= 1000) {
            a = a + 0.00001;
        }

        System.out.println("Iterationen: " + iterationen);
        System.out.print("Rand " + a);

    }

    static int iterationen(double a, double b) {
        int iterationen = 0;
        double x_n = 0;
        double y_n = 0;

        while (x_n * x_n + y_n * y_n <= 4 && iterationen < 1000) {
            double xerg = (x_n * x_n) - (y_n * y_n) + a;
            double yerg = (2 * (x_n * y_n)) + b;

            x_n = xerg;
            y_n = yerg;
            iterationen++;
        }
        return iterationen;
    }

lg
 

Neue Themen


Oben