Was mache ich falsch??

Janares

Mitglied
kann mir jemand sagen was hier dran falsch ist ??

printf("Hier Ergebnis eintragen : ");
scanf("%f",&zahl);

if (zahl == 11)
{

printf("Richtig!!\n");
}
else
{
printf("Leider Falsch\n\n");
}

ich bekomme beim ausführen egal was ich eintippe ob richtig oder falsch immer das was in else steht.
 
moin

hmm
sieht eigentlich richtig aus! poste mal den ganzen code! vielleicht liegt es an was anderem?!
oder probier mal anstatt "else{...}" einfach "if(zahl!=11){...}"


mfg
umbrasaxum
 
sonst lass dir doch einfach mal den wert von zahl ausgeben. mache ich meistens um zu debuggen einfach mal den wert der in der variable steht auszugeben vielleicht steht ja nicht mal das drinne was du drinne haben möchtest !!!
 
Also da gibt es mehrere Möglichkeiten was falsch sein könnte.
Das hängt zunächst mal ab was zahl für ein Datentyp ist. Du willst mit der Zahl 11 vergleichen, allso sollte zahl ein int sein.
Dann musst du aber bei scanf mit %d einlesen. Wenn du mit %f einlesen willst, dann solltest du aber den Datentyp float für deine Zahl nehmen.
Eleganter bzw. sicherer wäre sowieso erstmal ein einen Buffer einzulesen und diesen String-Buffer dann zu verarbeiten.
Hier mal ein kleines Beispiel:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


bool IsNumber(char* str);

int main(int argc, char* argv[])
{
	int zahl = 0;
	char buf[10];
	
	printf("Hier Ergebnis eintragen : "); 
	scanf("%s",buf); 

	if(!IsNumber(buf))
	{
		printf("Keine Zahl eingegeben !!\n");
		return 0;
	}
	
	zahl = atoi(buf);
	if (zahl == 11) 
	{ 
		printf("Richtig!!\n"); 
	} 
	else 
	{ 
		printf("Leider Falsch\n\n"); 
	} 
	return 0;
}


bool IsNumber(char* str)
{
	int length = strlen(str);
	char zeichen;
	for(int i=0; i<length; i++)
	{
		zeichen = str[i];
		if(! (zeichen >= 48 && zeichen <= 57) ) // 48=ASCII-CODE für 0  57=ASCII-CODE für 9
			return false;		
	}
	return true;
}

Gruss Homer
 
Vergleiche auf Realzahlen sollte man nicht machen, denn 11 ist intern nicht gleich 11 sondern vielleicht 11.00000000000000000000000001 und dann geht der Vergleich nicht!

Deshalb merke! Vergleiche nur mit GANZZAHLIGEN Werten!
 

Neue Beiträge

Zurück