Avatar billede orca Nybegynder
28. februar 2002 - 20:19 Der er 4 kommentarer og
1 løsning

Streng Spm

Hej alle. Vha cin operatoren kommer jeg en værdi ind i en streng. Jeg skal så teste om denne streng kun indeholder tal, eller om den kun indeholder bogstaver, og endeligt om den indeholder blandet. Hvordan gøres dette?

Mvh Mark
--
www.gameshots.dk
Avatar billede fri-hash Nybegynder
28. februar 2002 - 20:35 #1
jeg er godt nok lidt rusten i c++ - det kan være der er en bedre måde, men jeg mener dette kan gøre det:

string streng;
cin >> streng;

int tal = 0;
int bogst = 0;
for(i=0; i<sizeof(streng); i++) {
  if(streng[i]>=0 && streng[i]<=9){
      tal=1;
  }
  if((streng[i]>='a' && streng[i]<='z')||(streng[i]>='A' && streng[i]<='Z')){
      bogst=1;
  }
}
if(tal && !bogst){
  cout << "rene tal";
}
if(!tal && bogst){
  cout << "rene bogstaver";
}
if(tal && bogst){
  cout << "blandet tal og bogstaver";
}
Avatar billede orca Nybegynder
28. februar 2002 - 21:24 #2
Hej igen, og tak for svaret.

Jeg er nu kommet frem til at have denne kode:

#include <iostream.h>
#include <string.h>
#include <cctype>

int main()
{
    // Variabel dimensioneringer
    string userInput;
    int tal = 0;
    int bogst = 0;
    int i = 0;

    // Udskriv forespørgsel og få input fra brugeren
    cout << "Indtast enten et talord, eller et heltal mellem 0 og 999999: ";
    cin >> userInput;

    // Tjek om inputtet er et tal, om det er et talord, eller om det er blandet
    for(i=0; i<userInput.length(); i++) {
        cout << userInput[i] << endl;
      if((int)userInput[i]>=0 && (int)userInput[i]<=9){
          tal=1;
      }
      if((userInput[i]>='a' && userInput[i]<='z')||(userInput[i]>='A' && userInput[i]<='Z')){
          bogst=1;
      }
    }

    cout << endl << tal << endl << bogst;
   
    if(tal && !bogst){
      cout << "rene tal";
    }
    if(!tal && bogst){
      cout << "rene bogstaver";
    }
    if(tal && bogst){
      cout << "blandet tal og bogstaver";
    }
}

Den virker på den måde at bogst får værdien 1 når userInput indeholder bogstaver, men tal får ikke værdien 1 når userInput indeholder tal, hvordan kan det være?

Ud over dette får jeg en advarsel om at jeg sammenligner signed og unsigned værdier i linie 10.

Hvis du gider kigge på det vil jeg blive glad, øger lige point til 30.

Mvh Mark
--
www.gameshots.dk
Avatar billede fri-hash Nybegynder
28. februar 2002 - 21:32 #3
prøv lige at ret
if((int)userInput[i]>=0 && (int)userInput[i]<=9){
         
til
if((int)userInput[i]>='0' && (int)userInput[i]<='9'){
Avatar billede orca Nybegynder
28. februar 2002 - 21:45 #4
Hej igen. Jeg fik strikket en anden funktion frem som ser således ud:

      string::iterator Pos = userInput.begin();

      while( Pos != userInput.end() )
      {
        if(isdigit(*Pos))
          tal = 1;
        else
          bogst = 1;

        ++ Pos;
      }

    cout << endl << tal << endl << bogst;
   
    if(tal && !bogst){
      cout << "rene tal";
    }
    if(!tal && bogst){
      cout << "rene bogstaver";
    }
    if(tal && bogst){
      cout << "blandet tal og bogstaver";
    }

Denne virker. Jeg giver dig dog point alligevel da du hjalp.

Mvh Mark
--
www.gameshots.dk
Avatar billede fri-hash Nybegynder
28. februar 2002 - 21:54 #5
thanks
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