"We are back" « oc.at

C - Frage bezgl. Schleife

charmin 27.12.2014 - 15:00 4317 18
Posts

11Fire01

Here to stay
Registered: Dec 2002
Location: austria
Posts: 2417
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.
Bearbeitet von 11Fire01 am 03.01.2015, 22:11

MjrSEIDL

OC Addicted
Registered: Nov 2000
Location: wien
Posts: 1178
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

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25691
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

Vereinsmitglied
stay classy!
Avatar
Registered: Dec 2002
Location: root
Posts: 15700
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!
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz