C - Frage bezgl. Schleife - Seite 2

Seite 2 von 2 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/c-frage-bezgl-schleife_241588/page_2 - zur Vollversion wechseln!


11Fire01 schrieb am 03.01.2015 um 22:02

mit ascii-werten ausschließen (?)

Code: C
do {
    zahl einlesen;

    if(zahl<48 && zahl>57){
        zahl eingeben blabla;
        x = 1;
        continue;
    }
}while(x==0);

weiß nicht mehr genau wie man das mit ascii werten vergleicht. soll mehr das lösungsschema sein :p

Zitat
hmm nur ist die frage wie ich das dann erledige. Ich möchte einfach, dass man eine Zahl eingeben muss, wenn man einen buchstaben eingibt schreibt er hin "bitte zahl eingeben" und man muss erneut eingeben, und das so lange bis man ne Zahl eingibt.


MjrSEIDL schrieb am 11.01.2015 um 09:32

Code: C
string input;
while(true){
    "Zahl eingeben:"
    input=zahl einlesen
    if (istZahl(input)) break;
    "Keine Zahl!"
}
int i=input as int;
"Eingegebene Zahl ist {i}";
nur als idee... ist zwar jetzt nicht c++ spezifisch aber sollte nur eine idee für die schleife sein.


mat schrieb am 11.01.2015 um 10:12

ASCII-Werte sind auch nur eine Interpretation von einer Zahl. Deshalb ist ein Buchstabe (als char) oder ein String (als char *) in C/C++ nur eine Reihe von Zahlen.

Je nachdem wie du den User-Input einliest, musst du also entsprechend konvertieren. Ich empfehle speziell für Anfänger, immer möglichst viel selbst zu coden. Dementsprechend würde ich eine ausführliche Validierung implementieren:

Code: C++
#include <stdio.h>
#include <stdlib.h>

void main()
{
	char szInput[100];

	while (true)
	{
		// Get user input
		printf("Geben Sie eine Zahl ein: ");
		scanf("%99s", &szInput[0]);

		// Validate the number
		bool bValid = true;

		for (int i = 0; i < strlen(szInput); i++)
		{
			int nASCII = szInput[i];

			// Is it a number in the ASCII table?
			if (nASCII >= 48 && nASCII <= 57)
				continue;
			else
			// Maybe it's signed?
			if (i == 0 && (szInput[i] == '-' || szInput[i] == '+'))
				continue;

			// Invalid character!
			bValid = false;
			break;
		}
		
		if (!bValid)
		{
			printf("Das ist keine Zahl. ");
			continue;
		}

		// Convert the final number
		int nInput = atoi(szInput);

		// Output the final number
		printf("Die Zahl lautet: %d\n\n", nInput);
		break;
	}

	system("pause"); // windows and debugging only
}


charmin schrieb am 11.01.2015 um 10:58

Ui! Vielen vielen dank für eure antworten, danke mat!
Hab noch 3 andere tests zu absolvieren, danach werd ich mir das intensiv reinziehn. Danke!




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025