Quicksort raten

  • Themenstarter Themenstarter cryptonize
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
C

cryptonize

Gast
Hallo erstmal,
ich habe versucht ein Programm zu schreiben, dass erst 2 Zufallszahlen im Bereich von 1 und 100 erstellt.
Dann muss sich der Benutzer eine Zahl in diesem Bereich denken und das Programm versucht die zahl in möglichst wenigen Schritten herauszubekommen .
Der Benutzer wird gefragt , ob die zahl größer als der Mittelwert der beiden Zahlen ist (usw...)
Aber so wie ich es beschrieben habe funktioniert es bei mir nicht:'(
Wäre nett wenn ihr es euch mal anschaut...
Schon mal danke im voraus
Code:
   //Quicksort mit zahlen
   import java.util.*;
    class Qsfunk{
       double speicher;
       int erg;

      double zufall(){
       
       Random eins = new Random(); 
       speicher = eins.nextDouble();
        return speicher;
       }
      boolean zufallcheck(double zufall1, double zufall2){
         if (zufall1<zufall2){
            return false;
           }
         
             return true;
            
          } 
           boolean check(int mitte, int oben){
             if(oben-mitte==1)
                return false;
             return true;
               }
       
                                  
      }
    class Qs{
     public static void main (String args[])
       throws java.io.IOException{
       Qsfunk ob = new Qsfunk();
        char eingabe;
       double zufall1 , zufall2 ;
       int gesammt, mitte , erg, zwischen, oben, unten, differenz;
         
       for(;;){                       //Endlosschleife Anfang
       zufall1 = Math.round(Math.abs(ob.zufall()*100));
       zufall2 = Math.round(Math.abs(ob.zufall()*100));
         if(ob.zufallcheck(zufall1, zufall2)){
           ob.zufall();
           }
         else break;
      }                           //Endlosschleife Ende

              gesammt = (int) (zufall1 +zufall2);
       System.out.println("Du denkst dir eine Zahl zwischen "+ zufall1+ " und " + zufall2+" und der Computer errät sie");
        mitte= (int)Math.floor(gesammt /2);
        
        System.out.println("Ist die Zahl größer als"+ mitte+" 1 = ja : 2 = nein");
         one:
         for(;;){

            System.out.println("Ist die Zahl größer als"+ mitte+" 1 = ja : 2 = nein : 3 = gleich");
             unten=(int) zufall1;
             oben =(int) zufall2;
             eingabe = (char) System.in.read();
                 if(eingabe=='1') //JA
                   {
                      
                      differenz= oben- mitte;
                      zwischen = mitte;
                      mitte= mitte + differenz / 2;
                      unten = zwischen;
                      
                         if(ob.check(mitte, oben)){
                            erg=oben;
                            break;
                            } 
                       
                                            
                     }
                 if(eingabe=='2') //NEIN
                   {
                      
                      differenz= mitte- unten;
                      zwischen= mitte;
                      mitte= unten+ differenz/2;
                      oben = zwischen;
                       if(ob.check(mitte, oben)){
                            erg=oben;
                            break;
                            }
                      
                     }
                  if(eingabe=='3') //GLEICH
                   {
                      
                      erg= mitte ;
                      break;
                      
                     }
             
              
               
              
               }
             System.out.println("Das Ergebnis ist:"+ erg);
   }}
 
schade dass du nicht sagst, was das ganze mit Quicksort zu tun haben soll 😉

-----------

> if (ob.zufallcheck(zufall1, zufall2))
> {
> ob.zufall();
> }


was soll dieser Code, wozu machst du den zufall()-Aufruf, wenn du das Ergebnis nicht verwendest?


-------
> one:

label sind schlimmes Java, in Anfängerprogrammen überhaupt nicht zu gebrauchen, verwendest du auch gar nicht

-------

ich habs mal getestest, z.B. Zahl zwischen 5 und 50
bei der ersten Frage (>=< 27) antworte ich mit ja,

es geht in das if, unten ist 27, oben ist 50, mitte 38 oder so,

> if(ob.check(mitte, oben)){
liefert natürlich true weil 38 nicht genau 1 kleiner als 50 ist
und daraufhin setzt du 50 als Endergebnis,

was soll man dazu sagen? ist halt noch nicht richtig programmiert, oder? 😉
 
Haett ja gern mal drueber geschaut aber die Formatierung ist grauenhaft... 😉
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben