kleine Porgramm mit Zufallszahl

Jibos

Cadet 1st Year
Registriert
Jan. 2013
Beiträge
9
Hallo,

ich lerne seit kurzem bissl c++.

Ich bin grade dabei folgendes Progrämmchen zu schreiben:

Ich möchte das man Zahlen eingeben kann und die auf die variable zahl1 gespeichert wird und wenn man die richtige eingibt, wie auf zahl2, das die Meldung erscheint: Ist falsch oder so und wenn man die richtige gefunden hat, das die Meldung kommt: Richtige Zahl gefunden ca.

Hier der bisherige Code:

#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

using namespace std;

int main()
{
int zahl1;
int zahl2;

zahl2 = rand();

printf("Zahlen merken\n\n");

while(zahl1 != zahl2)
{
printf("Tippen Sie eine Zahl ein: ");
scanf("%d", zahl1);
if(zahl1=zahl2)
{
printf("Die richtige Zahl wurde gefunden");
printf("%d", zahl1);
}
else
{
printf("Zahl nicht gefunden.");
}





}






system("PAUSE");
return EXIT_SUCCESS;
}






Der Fehler ist, dass das Programm die Zahlen nicht abgleicht und ich 50+++ mehr eingeben könnte ohne das was passiert.
Wie kann ich es zum Laufen bringen?
 
Vorsicht! Mit "=" macht man eine Zuweisung. Was du hier willst, ist aber ein Vergleich. Und den macht man mit "==".
Das ist ein oft begangener Anfängerfehler.
 
Außerdem sollte man vor dem ersten Aufruf von rand() die Funktion srand(*) aufrufen, mit * irgend ein Wert der sich am besten bei jedem Start ändert (Uhrzeit oder ähnliches), sonst hast du jedes mal die selbe "zufällige" Reihenfolge..
 
alle bedacht, trotzdem funktioniert es noch nicht, mir wird nicht angezeigt , wenn ich falsch habe oder richtig
 
Ebenfalls solltest du vielleicht den Wertebereich der Zufallszahl einschränken, da sonst Zahlen zwischen 0 bis RAND_MAX rauskommen. Da musst du gegebenenfalls sehr lange raten :evillol:

Woher weist du, dass es nicht angezeigt wird... debuggst du?
printe dir vor dem Raten (was bei c++ übrigens durch ein "cout" gemacht werden sollte) doch mal die generierte Zufallszahl aus.
 
scanf("%d", &zahl1);
(da call-by-reference)

und aussagekräftige Namen nennen. Zahl1 und Zahl2? Nichtssagend...

Besser:
zahl1 => guess
zahl2 => search
oder sowas
 
Außerdem solltest du zahl1 initialisieren, sonst ist die vielleicht zufällig gleich mit zahl2 und da passiert garnix...
Probiers mal so:

int zahl1;
int zahl2;

/// Zahl zwischen 0 und 10
zahl2 = (rand() % 10);
zahl1 = zahl2 + 1;

printf("Zahlen merken\n\n");

while(zahl1 != zahl2)
{
printf("Tippen Sie eine Zahl ein: ");
scanf("%d", &zahl1);
if(zahl1==zahl2)
{
printf("Die richtige Zahl wurde gefunden\n");
printf("%d\n", zahl1);
}
else
{
printf("Zahl nicht gefunden.\n");
}
}
 
oder die Schleife auf do-while umstellen...

btw... zwischen 0 und 10 is falsch, 0 liegt schließlich im Intervall, 10 allerdings nicht...
 
Zuletzt bearbeitet:
Ne Frage zwischendurch, willst du C oder C++ lernen?

Deine Programme sind grad alle reines C (bis auf die Header).
(Und wenn du den Code mit etwas Farbe haben willst, schreib es in [CODE ]-Tags...)

Wie du an deine Zufallszahlen kommst, ist erst mal irrelevant (ich würde es sogar mit einer festen Zahl testen, dann tust du dir einfacher mit erwartetem vs. tatsächlichem Programmverhalten).

Also Zahlen einlesen via cin:
Code:
cin>>zahl;
Ausgabe von Zahlen via cout:
Code:
cout<<"Zeichenfolge"<<zahl<<"Zeichenfolge"<<blub<<"Jetzt ein Zeilenumbruch"<<endl;
 
Zurück
Oben