• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

C++ Ratespiel zwischen 0 und 100?

nate

Pomme Miel
Registriert
03.09.08
Beiträge
1.491
Hallo Leute,

hänge mal wieder an meine Code..

Aufgabe:
Schreiben Sie ein Programm, das eine Zufallszahl im Bereich zwischen 0 und 100 bestimmt. Der Nutzer des Programms soll mit mo ̈glichst wenigen Rateversuchen diese Zahl herausfinden. Hierzu fordert das Programm den Nutzer auf, eine Zahl einzugeben; nach Eingabe der Zahl gibt das Programm dem Nutzer den Hinweis, ob die Zahl zu groß bzw. zu klein ist. In dem Fall wird der Benutzer aufgefordert, eine na ̈chste Zahl einzugeben. Dies wird solange iteriert, bis die eingegebene Zahl identisch mit der zu ratenden Zahl ist. In diesem Fall wird die Anzahl der Rateversuche ausgegeben und das Programm beendet.

Mein Code:


Code:
#include <stdio.h>
#include <stream.h>
#include <iostream>
#include <stdlib.h>
#include <time.h>

using namespace std;

int main(void)
{
	

	
	int Bereich = 100;
	int Zahl = rand()%Bereich+1;
	
	char Eingabe;
	
	bool eraten = false;
	
	printf("Geben Sie eine Zahl zwischen 1 und 100 ein.\n");
	
	
	while(!eraten)
	{
		
		scanf("%c",&Eingabe);
		
		if (Eingabe < Zahl)
		{
			printf("Die Zahl ist zu klein.\n");
		}
		
		if (Eingabe > Zahl)
		{
			printf("Die Zahl ist zu gross.\n");
		}
		
		
		if (Eingabe == Zahl)
		{
			printf("Die Zahl ist Richtig!\n");
			eraten = true;
		}
	}
	
	return 0;
}

irgendwie führt Xcode die schleifen nicht richtig aus, aber ich glaube ich seh vor lauter Bäume den Wald nicht mehr?!
 

nic

Bismarckapfel
Registriert
18.01.06
Beiträge
141
Du liest deine Zahl als Character ein, damit funktioniert der Vergleich nicht richtig.

Probier es mal mit scanf("%d",&Eingabe);
 
  • Like
Reaktionen: nate und below

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
Soll das laut Aufgabenstellung ein C++ Programm werden oder reicht auch reines C? Weil mit C++ hat der Code relativ wenig zu tun.

Michael
 

nate

Pomme Miel
Registriert
03.09.08
Beiträge
1.491
Soll das laut Aufgabenstellung ein C++ Programm werden oder reicht auch reines C? Weil mit C++ hat der Code relativ wenig zu tun.

Michael

es reicht auch c =) ich weiß ist bisschen durcheinander...

ok sehr gut danke mit dem scanf (%d) hat es geklappt, aber wie kann ich jetzt eine Zufallszahl machen die sich ändert? und nicht immer die gleiche ist?
 

ImperatoR

Roter Astrachan
Registriert
02.12.06
Beiträge
6.261
Warum nicht
Code:
int Eingabe;

Und statt scanf lieber
Code:
std::cin >> Eingabe;

Soweit ich weiß, reicht in C++
Code:
int main()
aus — also ohne void. :p
 

ImperatoR

Roter Astrachan
Registriert
02.12.06
Beiträge
6.261
Und hier ein Würfelprogramm. Wenn du ins Terminal Wuerfel 100 tippst, gibt er 100 mal Zufallszahlen zwischen 1 und 6 aus.

Code:
//
// Wuerfel.cpp
//
// Gibt Zufallszahlen zwischen 1 und 6 aus.
//
// Aufruf: Wuerfel [Anzahl]
//
// Autor: H.Drachenfels
// Erstellt am: 30.03.2006
//

#include <iostream>
#include <cstdlib>
#include <ctime>

int main (int argc, char *argv[])
{
  //------------------------------------------------------ Argumente auswerten
  int  versuche = 1;

  if (argc > 1)
  {
    char *endPtr;
    versuche = std::strtol(argv[1], &endPtr, 10);

    if (*endPtr != '\0' || argc > 2)
    {
      std::cerr << "Zu viele oder falsche Parameter!\n"
                   "Aufruf: Wuerfel [Anzahl]\n";
      return 1;
    }
  }

  //--------------------------------------------------------------- schuetteln
  std::srand(std::time(0));

  //----------------------------------------------------------------- wuerfeln
  for (int i = 0; i < versuche; i++)
  {
    int wurf = std::rand();
    std::cout << wurf % 6 + 1 << '\n';
  }
}

Du kannst ja den Part, den du für dein Programm brauchst, abändern und verbauen …
 
  • Like
Reaktionen: nate

nate

Pomme Miel
Registriert
03.09.08
Beiträge
1.491
Warum nicht
Code:
int Eingabe;

Und statt scanf lieber
Code:
std::cin >> Eingabe;

Soweit ich weiß, reicht in C++
Code:
int main()
aus — also ohne void. :p

ja habe int Eingabe; gemacht jetzt :)

ich bin schon scanf gewohnt durch die Schule usw, ich weiss scanf kann man mehr Fehler einbauen, aber Gewohnheit bei mit^^

ok stimmt geht auch ohne void danke :)

@buk danke für den Link!