Überprüfen, ob Zahl oder anderes Zeichen eingegeben wurde...Wie?

moin


Du hast bei scanf(%i", &xxx); ein Anführungszeichen vergessen!
Weiss aber nciht ob es daran liegt.


Edit:
Mit Anführungszeichen Funktioniert das Programm bei mir!
Ohne kann ich es ncihtmal kompilieren.

Das könnte mit an deinem Compiler liegen, viele ältere bemerken solche Fehler oft nciht.


mfg
umbrasaxum
 
Zuletzt bearbeitet:
@cler

den Code kannst du auch abkürzen :-)

int main()
{
int xxx;
scanf(%i", &xxx);
printf("Es ist eine Zahl");
return 0;
}

Da du ja sicher eine Zahl einliest, du speicherst sie sogar in einem int, wird dabei immer eine Zahl rauskommen.
Die Methode isZahl übernimmt ebenfalls einen int, was ja immer eine Zahl ist.
:)
 
moin


Hmm, auch wenn ich die Art wie du deinen letzten Beitrag geschrieben hast nicht gut finde, hast du dennoch recht.

Scheinbar wird eine Eingabe die in ein int soll direkt vor dem "nicht-numerischen" Zeichen abgeschnitten.

Deshalb hier meine neue Version:
Code:
#include <iostream>

using namespace std;

bool isZahl(char *cTemp)
{
	int i=0;

	while(cTemp[i] != '\0')
	{
		if ( ! ((int)cTemp[i] > 47 && (int)cTemp[i] < 85))
			return false;

		i++;
	}

	return true;
}


int main()
{
	char xxx[100];
	cin>> xxx;

	bool ergebnis = isZahl(xxx);

	if( ergebnis == true )
		cout<<"Es ist eine Zahl";

	if( ergebnis == false )
		cout<<"Es ist keine \"reine\" Zahl";


	return 0;
}

Hier wird die Benutzereingabe erstmal als String gespeichert, anscheinend kommt da nicht drum rum.


mfg
umbrasaxum
 
Zuletzt bearbeitet:
@umbrasaxum

hallo,

wenn ich deinen Code als .cpp speichere, compiliere und ausführe, kommt immer die Ausgabe, dass es keine reine Zahl sei, egal ob ich z.B. 10 eingebe oder w. Wenn ich es als *.c abspeichere geht es gar nicht. Er meckert dann, dass die eh.h nur für c++ sei.
Mache ich da was total falsch oder ....ich weiß auch nicht. Vielleicht muss ich erst einmal ne Nacht drüber schlafen.

Vielen Dank.

Grüße
 
moin


Leider hast du noch nciht geschrieben welchen Compiler du benutzt, oder ich habs überlesen.


Aber da du das Programm ja in C schreiben willst, lass das #include <iostream> ganz weg und ersetze es durch #include <stdio.h>, aber das weisst du wohl.

Und lass das using namespace std; ganz weg!


mfg
umbrasaxum
 
moin


Hier meine modifizierte C Version:
Code:
#include <stdio.h>
#include <conio.h>


bool isZahl(char *cTemp)
{
	int i=0;

	while(cTemp[i] != '\0')
	{
		if ( ! ((int)cTemp[i] > 47 && (int)cTemp[i] < 85))
			return false;

		i++;
	}

	return true;
}


int main()
{
	char xxx[100];
	scanf("%s", xxx);

	bool ergebnis = isZahl(xxx);

	if( ergebnis == true )
		printf("Es ist eine Zahl");

	if( ergebnis == false )
		printf("Es ist keine \"reine\" Zahl");

	getch();

	return 0;
}


So läuft es bei mir ohne Probleme.
Es müsste übrigens egal sein welche Endung de Datei mit dem Code hat, hauptsache der Compiler weiss welche Datei Compiliert werden soll.


mfg
umbrasaxum
 
Zurück