Avatar billede teepee Nybegynder
19. maj 2003 - 12:43 Der er 2 kommentarer og
1 løsning

CIN begynder hjælp

Jeg benytter CIN til at få et par oplysninger fra brugerne, bl.a:

...

  int vinder;
  int taber;

  cout << "Indtast vinder" << endl << prompt;
  cin  >> vinder;
  cout << "Indtast taber" << endl << prompt;
  cin  >> taber;

...

Det fungerer i princippet meget godt, men da jeg benytter mig af en automatisk konvertering til integer i ovenstående opstår en frygtelig ballade hvergang der indtastes andet end tal. Er der en let løsning, hvor jeg kan nøjes med mine integer variable? Eller skal jeg exception handle eller hvad? Desuden kunne jeg godt tænke mig at høre om man ikke kan have default værdier i CIN, således at brugeren blot kan trykke retur. Eks.

  cout << "Indtast antal [default 14] ";
  cin >> ant;
Avatar billede arne_v Ekspert
19. maj 2003 - 12:49 #1
Hvis du vil undgå det så skal du:
- indlæse en streng
- checke om den streng er et validt tal
- konvetere streng til tal

En måde at gøre det på var:

char s[11];
cin >> s;
for(int i = 0; i < strlen(s); i++) {
  if(!isdigit(s[i])) {
        // gør noget grimt
  }
}
int v = atoi(s);

Du skal nok include:

string.h
ctype.h
stdlib.h
stdio.h
Avatar billede teepee Nybegynder
19. maj 2003 - 12:53 #2
Du er simpelthen super hurtig Arne. Jeg tænkte nok man skulle ud i sådan noget. Hvad med default værdier? For hvis man bare trykker retur ser det ud som om at man bare hopper en linie ned på skærmen og så sker der ikke mere.
Avatar billede arne_v Ekspert
19. maj 2003 - 12:59 #3
<< har en træls egenskab derved at retur "ikke tæller" og den vil stadigvæk
læse noget ind.

Du kan bruge:

char s[11];
cin.getline(s,sizeof(s)); // <----
if(strlen(s)==0) {
  // han trykkede bare retur
}
for(int i = 0; i < strlen(s); i++) {
  if(!isdigit(s[i])) {
        // gør noget grimt
  }
}
int v = atoi(s);
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester