Programm zum Zahlenraten

Schnelle objektorientierte, kompilierende Programmiersprache.
MartyMcFly1976
Beiträge: 34
Registriert: Sa Dez 06, 2014 5:56 pm

Programm zum Zahlenraten

Beitrag von MartyMcFly1976 » So Mär 08, 2015 6:20 pm

Hallo !

Ich versuche grade ein Programm zu erstellen bei dem man eine Zahl zwichen 1-10 eraten soll. Das Programm wählt per Zufallsgenerator eine Zahl aus und der User hat 3 Versuche um die Zahl zu erraten.

Bis jetzt habe ich das Programm bis zu den ersten Versuch programmiert.
Leider habe ich einen Fehler drin der mir nicht Angezeigt wird und das Programm läuft nicht richtig.

Kann mir evtl jemand sagen wo das Problem liegt ?

Hier der CODE:

Code: Alles auswählen

# include <stdio.h>
# include "conio.h"
# include <stdlib.h>
# include <time.h>

int main(void)

{	      
        int Zahl;
		int Versuch1;
		int Versuch2;
		int Versuch3;


		printf("\t\t\t    WIllkommen zu Ratezahl\n\n");
		printf("\t  Sie haben 3 Versuche um die Zahl zwischen 1 und 10 zu erraten\n\n");

		srand (time(NULL));
		Zahl = rand ()%10+1; // Eingrenzung der Zahl auf 1-10
		printf("Die Zahl ist : %i",Zahl);//Nur zum testen da !!!!
		printf("Versuch 1  :  ");
		scanf("%i,&Versuch1"); //Einlesen Versuch1
		

			if (Versuch1 != Zahl) // Versuch1 mit Zahl vergleichen

			printf("Du Joggel, nix kanner, das ist die falsche Zahl");//Ausgabe bei der falschen Zahl

			else

			printf("Du Lucker das war die richtige Zahl");//Ausgabe bei der richtigen Zahl


  getch();

  return 0;
}
Danke schon mal im vorraus !

MfG

Marty

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Programm zum Zahlenraten

Beitrag von cloidnerux » So Mär 08, 2015 6:36 pm

Code: Alles auswählen

 scanf("%i,&Versuch1");
Schau dir mal deine Anführungszeichen an.
Redundanz macht wiederholen unnötig.
quod erat expectandum

MartyMcFly1976
Beiträge: 34
Registriert: Sa Dez 06, 2014 5:56 pm

Re: Programm zum Zahlenraten

Beitrag von MartyMcFly1976 » So Mär 08, 2015 6:52 pm

Hallo !

Ich wusste es ist wieder so ein doofer kleiner Fehler !

Danke dir !

Dann programmier ich mal weiter !

MfG

Marty

MartyMcFly1976
Beiträge: 34
Registriert: Sa Dez 06, 2014 5:56 pm

Re: Programm zum Zahlenraten

Beitrag von MartyMcFly1976 » Mi Mär 11, 2015 9:22 pm

Hallo !

Ich hab bis hierhin mal weiter programiert, der erste Versuch funktioniert und man kann die Zahl erraten, die Schleife es nochmal zu spielen funktioniert !

Mein Problem besteht im Monent nur noch, daß ich die drei malige Wiederholung nicht sauber hin bekomme !

Hier mal der Code :

Code: Alles auswählen

# include <stdio.h>
# include "conio.h"
# include <stdlib.h>
# include <time.h>

int main(void)

{	      
        int Zahl;
		int Versuch;
		int repeat;
		int Zähler=0;


		do
		{

		printf("\t\t\t    WIllkommen zu Ratezahl\n\n"); //Begrüssung
		printf("\t  Sie haben 3 Versuche um die Zahl zwischen 1 und 10 zu erraten\n\n"); //Regeln

		srand (time(NULL)); // Zeit gesetzt ab 1970
		Zahl = rand ()%10+1; // Eingrenzung der Zahl auf 1-10

		while (Zähler=1 && Zähler < 4, Versuch ++)
		{
		printf("Versuch :  ");// Textausgabe Versuch
		scanf("%i",&Versuch); //Einlesen Versuch1

		
			if (Versuch == Zahl) // Versuch1 mit Zahl vergleichen
			printf("Du Joggel, nix kanner, das ist die falsche Zahl\n\n");//Ausgabe bei der falschen Zahl
			
			if (Versuch < Zahl) //Versuch grösser als die Zahl
			printf("Die Zahl ist groesser als deine geratene Zahl\n\n"); // Textausgabe grösser
			
			if (Versuch > Zahl) // Versuch leiner als die Zahl
			printf("Die Zahl ist keiner als deine geratene Zahl\n\n"); // Textusgabe kleiner
			

			else
			printf("Du Lucker das war die richtige Zahl\n\n");// Textausgabe bei der richtigen Zahl
		}

			
		printf("1=Nochmal\n\n2=Ende\n\n"); // Textausgabe Nochmal Spielen
		scanf("%i",&repeat); //Einlesen ob nochmal gespielt wird
		}
		
		while(repeat==1); // Vergleich ob die 1 eingegeben wurde

		
  getch();

  return 0;
}
Diese Zeile macht mir dabei etwas Kopfzerbrechen :
while (Zähler=1 && Zähler < 4, Versuch ++)
Wäre für einen Lösungsansatz sehr Dankbar !

MfG Marty

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Programm zum Zahlenraten

Beitrag von cloidnerux » Mi Mär 11, 2015 9:28 pm

Mein Problem besteht im Monent nur noch, daß ich die drei malige Wiederholung nicht sauber hin bekomme !

Code: Alles auswählen

Zähler=1 && Zähler < 4
Mal als Hinweis: Man kann in einer Logigbedingung eine Zuweisung machen:

Code: Alles auswählen

if(tmp = einAndererWert)
Ausgewertete wird dann "einAndererWert". Ist dieser größer als 0, ist der Ausdruck "WAHR", ansonsten Falsch.

Code: Alles auswählen

, Versuch ++
Zähler im Schleifenkopf hochzählen gibt es nur bei der for-schleife
https://www.proggen.org/doku.php?id=c:t ... r-schleife
Redundanz macht wiederholen unnötig.
quod erat expectandum

MartyMcFly1976
Beiträge: 34
Registriert: Sa Dez 06, 2014 5:56 pm

Re: Programm zum Zahlenraten

Beitrag von MartyMcFly1976 » Do Mär 12, 2015 3:35 pm

Hallo !

Ich Danke dir für die Denkanstösse, die Fehler werden kleiner :D und programieren wird besser, das klappt jetzt.

Ich verstehe nur nicht warum er meine if und else Anweisungen nicht Richtig verfolgt.
{
if (Versuch != Zahl) // Versuch mit Zahl vergleichen
printf("Du Joggel, nix kanner, das ist die falsche Zahl\n\n");//Ausgabe bei der falschen Zahl

if (Versuch < Zahl) //Versuch ist grösser als die Zahl
printf("Die Zahl ist groesser als deine geratene Zahl\n\n"); // Textausgabe grösser

if (Versuch > Zahl) // Versuch ist kleiner als die Zahl
printf("Die Zahl ist keiner als deine geratene Zahl\n\n"); // Textusgabe kleiner

else (Versuch == Zahl); //Versuch ist gleich Zahl
printf("Du Lucker das war die richtige Zahl\n\n");// Textausgabe bei der richtigen Zahl
}
Wenn ich sage Versuch (!=) ungleich Zahl schreibt er mir das sie falsch ist, so weit so gut, nur leider auch das sie richtig ist was in der else Anweisung steht Versuch (==) Zahl :shock:
Ich dachte was IF ist kann nicht gleichzeitig ELSE sein, auch wenn ich die Zuweisung (Versuch==Zahl) aus dem Befehl entferne schreibt das Programm die ELSE anweiung mit :shock:

Hier der ganze Code:

Code: Alles auswählen

# include <stdio.h>
# include "conio.h"
# include <stdlib.h>
# include <time.h>

int main(void)

{	      
        int Zahl;
		int Versuch;
		int repeat;

		do
		{

		printf("\t\t\t    WIllkommen zu Ratezahl\n\n"); //Begrüssung
		printf("\t  Sie haben 3 Versuche um die Zahl zwischen 1 und 10 zu erraten\n\n"); //Regeln

		srand (time(NULL)); // Zeit gesetzt ab 1970
		Zahl = rand ()%10+1; // Eingrenzung der Zahl auf 1-10

        for( int wert = 1; wert < 4; wert = wert + 1 )
		{

		printf("Versuch :  ");// Textausgabe Versuch
		scanf("%i",&Versuch); //Einlesen Versuch1
	
		{
			if (Versuch != Zahl) // Versuch mit Zahl vergleichen
			printf("Du Joggel, nix kanner, das ist die falsche Zahl\n\n");//Ausgabe bei der falschen Zahl
		
			if (Versuch < Zahl) //Versuch grösser als die Zahl
			printf("Die Zahl ist groesser als deine geratene Zahl\n\n"); // Textausgabe grösser
		
			if (Versuch > Zahl) // Versuch leiner als die Zahl
			printf("Die Zahl ist keiner als deine geratene Zahl\n\n"); // Textusgabe kleiner
			
			else (Versuch == Zahl);
			printf("Du Lucker das war die richtige Zahl\n\n");// Textausgabe bei der richtigen Zahl
		}

		}
		printf("1=Nochmal\n\n2=Ende\n\n"); // Textausgabe Nochmal Spielen
		scanf("%i",&repeat); //Einlesen ob nochmal gespielt wird
		}
		
		while(repeat==1); // Vergleich ob die 1 eingegeben wurde

		
  getch();

  return 0;
}
MfG

Marty

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Programm zum Zahlenraten

Beitrag von cloidnerux » Do Mär 12, 2015 3:55 pm

Ich dachte was IF ist kann nicht gleichzeitig ELSE sein
Dem ist auch so und auch hier nicht anders.
Schau dir das mal an und versuche zu verstehen, was du hier Programmierst.

Code: Alles auswählen

else (Versuch == Zahl);
https://www.proggen.org/doku.php?id=c:if
Redundanz macht wiederholen unnötig.
quod erat expectandum

MartyMcFly1976
Beiträge: 34
Registriert: Sa Dez 06, 2014 5:56 pm

Re: Programm zum Zahlenraten

Beitrag von MartyMcFly1976 » Do Mär 12, 2015 4:39 pm

Hallo !

O.k. ich darf else keine Zuweisung geben mit (Versuch==Zahl) !

Bei IF steht ja schon die Anweiung (Versuch!=Zahl) im NEIN Fall else ! Wird gelöscht :oops:

Wieder etwas schlauer....

Wenn die Zahl kleiner als die geratene Zahl ist, dann passt das.

Wenn die Zahl jedoch größer ist, kommt wieder zusätzlich die Anzeige das es Richtig ist. Hat das etwas mit der Reihenfolge der if Anweisungen zu tun oder ist das egal ?

MfG

Marty

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Programm zum Zahlenraten

Beitrag von Xin » Do Mär 12, 2015 5:21 pm

MartyMcFly1976 hat geschrieben:O.k. ich darf else keine Zuweisung geben mit (Versuch==Zahl) !
== ist ein Vergleich, = ist eine Zuweisung.
else ist immer das Gegenteil der Aussage von if und erlaubt keine eigene Bedingung.

Ich möchte Dich bitten, Dir mehr Mühe zu machen, Deinen Quellcode zu formatieren. Wenn ich Leuten Programmieren beibringe, verweigere ich den Quellcode anzusehen, wenn der nicht sauber eingerückt ist. Das wäre in Deinem Fall der Fall.
MartyMcFly1976 hat geschrieben: Wenn die Zahl kleiner als die geratene Zahl ist, dann passt das.
Wenn die Zahl jedoch größer ist, kommt wieder zusätzlich die Anzeige das es Richtig ist. Hat das etwas mit der Reihenfolge der if Anweisungen zu tun oder ist das egal ?
Auch da hat cloidnerux schon drauf geantwortet.
Ich möchte den Link nur auf die aktuellere Seite korrigieren: c:tutorial:decisions.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

MartyMcFly1976
Beiträge: 34
Registriert: Sa Dez 06, 2014 5:56 pm

Re: Programm zum Zahlenraten

Beitrag von MartyMcFly1976 » Do Mär 12, 2015 5:26 pm

Ich möchte Dich bitten, Dir mehr Mühe zu machen, Deinen Quellcode zu formatieren. Wenn ich Leuten Programmieren beibringe, verweigere ich den Quellcode anzusehen, wenn der nicht sauber eingerückt ist. Das wäre in Deinem Fall der Fall.
Wie meinst du das ? Das einrücken im Quellcode selbst ? oder einzele Abschnitte die ich grade gepostet hab ?

MfG

Marty

Antworten