C - Frage bezgl. Schleife
charmin 27.12.2014 - 15:00 4317 18
11Fire01
Here to stay
|
mit ascii-werten ausschließen (?) 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 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
|
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
AdministratorLegends never die
|
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: #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
Vereinsmitgliedstay classy!
|
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!
|