Bisektion Zahlen 1-100. Ist mein Ansatz komplett Falsch? Wo liegt der Fehler für die falschen Vorschläge.
-
@DirkB
Meine Überlegung dazu war, dass sich durch zb die erste eingabe kleider oder größer, auch eine Möglichkeit ergeben muss, falls im Bereich kleiner doch (g) nochmal G verwendet werden muss Beispiel bei der Zahl 45
bei 50 = kleiner eingeben
dann haben wir den wert 25
bei 25 =größer eingeben ( = das wollte ich mit der Verschachtelung eigentich bewirken )
-
@DirkB der Mittelwert sollte eigentlich auch durch Zeile 42 und 45 berechnet werden .. Mittelwert ist doch (max-min)/2 oder nicht?
-
@mmm_1482_ sagte in Bisektion Zahlen 1-100. Ist mein Ansatz komplett Falsch? Wo liegt der Fehler für die falschen Vorschläge.:
@DirkB
Meine Überlegung dazu war, dass sich durch zb die erste eingabe kleider oder größer, auch eine Möglichkeit ergeben muss, falls im Bereich kleiner doch (g) nochmal G verwendet werden muss Beispiel bei der Zahl 45Dafür ist die Schleife da.
Vor 5 Tagen war das Thema schon mal da: https://www.c-plusplus.net/forum/topic/350174/zahlenratenuntere_Grenze = 1, obere_Grenze = 100 tue (Schleifenanfang) Daraus bestimmst du den Mittelwert. Fragst den Benutzer Je nach Nutzereingabe ('g' oder 'k') bestimmst du die untere oder die obere Grenze neu gesetzt wird solange die Eingabe ungleich 'j' ist, machst du weiter (in der Schleife).
@mmm_1482_ sagte in Bisektion Zahlen 1-100. Ist mein Ansatz komplett Falsch? Wo liegt der Fehler für die falschen Vorschläge.:
@DirkB der Mittelwert sollte eigentlich auch durch Zeile 42 und 45 berechnet werden .. Mittelwert ist doch (max-min)/2 oder nicht?
Ja. Aber da steht doch zweimal die Gleiche Berechnung. Also ist max doch auch nur der Mittelwert (Vorschlag).
-
@DirkB okaay... also irgendwo verstehe ich was ihr meint aber es ist noch nicht ganz druchgedrungen
ich schau mir das jetzt nochmal alles genau an. Also ist eurer meinung nach keine Verschachtelung notwendig? Ich denke ich werde das nochmal alles überdenken.
Aber vielen Dank, dass ihr euch die Zeit genommen habt
-
@mmm_1482_ sagte in Bisektion Zahlen 1-100. Ist mein Ansatz komplett Falsch? Wo liegt der Fehler für die falschen Vorschläge.:
@SeppJ
1)"Erklär beispielsweise mal den Sinn davon, vorher nach der richtigen Lösung zu fragen!"
==>Was genau meinst du mit vorher? Zunächst soll ja die Hälfte aller möglichen Werte 1-100 ausgeschlossn werden darum wird direkt gefragt, ob der Wert 50 ist. Oder wie meinst du das?Erkläre die Zeilen 1-5.
-
Das ist damit der Mensch nicht bescheissen kann
-
@SeppJ das ist für Die Überprüfung der Eingabe da. Solange der Nutzer einen Wert über 100 oder 0 eingibt, soll die Anweisung ausgeführt werden
-
du solltest dir vor allem mal gedanken über den programmablauf machen. wenn die zahl z.b. größer als 50 ist, ist min 50, ist die kleiner als 50, so ist max 50 bzw. allgemein ist das immer die eigegebene zahl. und die mitte ist dann glaube ich min + (max - min) / 2 bzw. max - (max - min) / 2.
nimm dir mal ein blatt papier (mit den zahlen von 1 - 10) und spiel das ganze durch!
-
@mmm_1482_ sagte in Bisektion Zahlen 1-100. Ist mein Ansatz komplett Falsch? Wo liegt der Fehler für die falschen Vorschläge.:
@SeppJ das ist für Die Überprüfung der Eingabe da. Solange der Nutzer einen Wert über 100 oder 0 eingibt, soll die Anweisung ausgeführt werden
Warum muss der Nutzer überhaupt eine Zahl eingeben?
-
@DirkB weil es teil der aufgabenstllung ist, das die eingegeben Zahl erraten werden soll (durch ausschlussverfahren)
-
@Wade1234 hab ich ... mein logisches Denkvermögen ist echt nicht gut
ich bin auch echt kein mathematiker/informatiker mensch. Nur gehört dieses eine Fach zu meinem Studium dazu -.- und ich bin zurzeit im Drittversuch und dreh langsam durch :` D ich studiere eigentlich nur etwas mit medien XD und bin eher der künstlerische kreative nicht nach logik basierende mensch
-
@mmm_1482_ sagte in Bisektion Zahlen 1-100. Ist mein Ansatz komplett Falsch? Wo liegt der Fehler für die falschen Vorschläge.:
@DirkB weil es teil der aufgabenstllung ist, das die eingegeben Zahl erraten werden soll (durch ausschlussverfahren)
Du (das Programm) fragt den Nutzer doch ob die (vom Programm) berechnete Zahl größer/kleiner/gleich der (vom Nutzer) ausgedachten Zahl ist.
Der Nutzer gibt seine Zahl erst dadurch bekannt, dass er auf die richtige Frage mit 'j' antwortet.
-
@DirkB ja genau
-
@mmm_1482_ ja aber wenn die zahl z.b. 75 ist, prüfst du auf 50, die zahl ist größer, neu_min ist 0, min ist 50, vorschlag ist (100 - 50) / 2 = 25. warum funktioniert das wohl nicht?
-
@mmm_1482_ sagte in Bisektion Zahlen 1-100. Ist mein Ansatz komplett Falsch? Wo liegt der Fehler für die falschen Vorschläge.:
@DirkB ja genau
Warum willst du dann einen Wert überprüfen, den der Nutzer gar nicht eingeben muss?
-
@Wade1234 ja das stimmt und das habe ich mir auch schon so gedacht, dass das deswegen nicht funktioniert. Nur fällt mir einfach kein besserer Lösunsgweg ein. Denn wenn es darum geht, dass die Zahl kleiner ist, funktioniert alles. Ich weiß aber nicht, welche Anweisung ich schreiben soll, wenn die Zahl größer ist
-
@DirkB ich überprüfe ja nicht "antwort" , sonder vorschlag , min und max, oder wie meinst du das?
-
@mmm_1482_ die antwort habe ich dir eigentlich gegeben. max bzw. min sind die geratene zahl, die mitte ist min + (max - min) / 2, also z.b. 50 + (100 - 50) / 2 = 75 oder 0 + (50 - 0) / 2 = 25
-
Ich habe das Programm mal gekürzt, indem ich die Rate-KI verbessert habe.
do { cout << "Bitte geben Sie eine Zahl zwischen 1-100 ein: " << endl; cin >> zahl; } while (zahl == 0 || zahl > 100); cout << "ist ihre Zahl: " << zahl << endl; cout << "(j) - ja: gleich " << endl; antwort = 'j'; cout << "Ihre Zahl lautet: " << zahl << endl;
-
@Wade1234 moment das muss ich kurz auf mich einwirken lassen : D
aber im voraus schon mal Danke