C-Programm: so stellen Sie die benutzerdefinierten integer-Bereich, streng die Begrenzung der akzeptiert Eingabe zahlen in diesem Bereich nur?
Betrachten wir einen Fall, wo ein Programm zu nehmen, eine Zahl als Eingabe vom Benutzer, die nur innerhalb einer strengen Auswahl zwischen 1 und 10,00,000,000? Ist es möglich in C? Wenn ja, wäre es nett, wenn mir jemand erklären kann, durch änderungen an folgenden Beispiel-Programm.
#include<stdio.h>
int main()
{
unsigned long int n, e1,e2,e3;
int counter;
for(counter=0; counter<10; counter++)
{
scanf("%ld",&n); //how to restrict this between 1 to 10,000,000,000?
e1=n/2;
e2=n/3;
e3=n/4;
if(e1+e2+e3<n)
{
printf("%ld\n",n);
}
else
printf("%ld\n",e1+e2+e3);
}
return 0;
}
- Ja, es ist. Was haben Sie versucht, noch?
- Fügen Sie einfach ein
if
Zustand nach derscanf
zu prüfen, die Wert Eingabe durch den Benutzer. - Du meinst bei der Eingabe der Zeit? oder bei der Validierung Zeit? Letzteres ist eine if-else-Weg, der ehemaligen ist gonna end up being mehr Mühe als sein Wert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Obere Grenze, 10,000,000,000 (zehn Milliarden), ist eine ziemlich große Nummer. Passt es nicht in einer 32-bit-Ganzzahl ohne Vorzeichen, benötigen Sie etwas größer.
Deshalb, da Sie wissen, eine tatsächliche Zahl, die Sie brauchen, zu unterstützen, ist es am besten, um die explizite 64-bit-zahlen (anstatt in der Hoffnung Ihr system
unsigned long long
ist groß genug).Dies erfordert C99:
Das oben genannte ist nicht ein komplettes Programm, offensichtlich.
Können Sie ersetzen:
mit so etwas wie:
Können Sie nicht. Nicht direkt jedenfalls, mit einer Ausnahme: Erlaubt signed oder unsigned Werte b y mithilfe der Formate
"%lu"
für unsigned Werte und"%ld"
für unterzeichnet.Zur überprüfung, ob die Eingabe innerhalb der Grenzen, die Sie haben zu Lesen Sie die Eingabe, überprüfen Sie es gegen Ihre Grenzen, und wenn außerhalb, dann bitten Sie den Benutzer wieder.