URL: https://www.overclockers.at/coding-stuff/c-frage-bezgl-schleife_241588/page_2 - zur Vollversion wechseln!
mit ascii-werten ausschließen (?)
Code: Cdo { zahl einlesen; if(zahl<48 && zahl>57){ zahl eingeben blabla; x = 1; continue; } }while(x==0);
Zitathmm 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.
nur als idee... ist zwar jetzt nicht c++ spezifisch aber sollte nur eine idee für die schleife sein.Code: Cstring input; while(true){ "Zahl eingeben:" input=zahl einlesen if (istZahl(input)) break; "Keine Zahl!" } int i=input as int; "Eingegebene Zahl ist {i}";
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 }
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