Avatar billede tast Nybegynder
24. juni 2000 - 21:44 Der er 1 kommentar og
1 løsning

Void/gets()..............Hmmmmmmmmm

Jeg har prøvet at lave et enkelt program hvor man skal vælge imellem et par forskellige ting og så skal den bare hoppe ned til en void funktion, udføre den og så hoppe tilbage.

Når den udfører  funktionen "void nummer_et()" så kører den og returnerre som den skal,- MEN når jeg bruger "funktionen void nummer_to()" så udførers den men den returnere ikke men fortsætter til næste void!!!!!!
Dette gælder dog kun hvis jeg bruger "gets()", hvis jeg bruger "cin>>" så er alt ok,- Hmmmmmm

HVORFOR??????


Her er programmet:

# include <iostream>
# include <cstdio>
using namespace std;

void nummer_et();
void nummer_to();

int main(){

    int valg;
        do{
    cout<<"Du har 3 valgmuligheder:\n";
    cout<<"1: Faa ganget to tal.\n";
    cout<<"2: Skriv noget tekst\n";
    cout<<"3: Stop\n";
    cout<<"\n Skriv dit valg her: ";
    cin>>valg;



    switch(valg){
    case 1:nummer_et();
        break;
    case 2:nummer_to();
        break;
    case 3:break;
    default:cout<<"\nProv igen\n\n";
    }
    } while (valg !=3);

   

    return 0;
}

void nummer_et(){
    int forste_tal,andet_tal;

    cout<<"\n\nSkriv forste tal: ";
    cin>>forste_tal;
    cout<<"Skriv andet tal: ";
    cin>>andet_tal;
    cout<<"\nHvis man ganger: "<<forste_tal<<" med "<<andet_tal;
    cout<<"\nSå bliver resultatet: "<<(forste_tal*andet_tal)<<"\n\n\n";

   
}


void nummer_to(){

    char tekst[80];
    cout<<"Skriv noget tekst her: ";
    gets(tekst);
    cout<<"Du skrev: "<<tekst;
}
Avatar billede maxjolt Nybegynder
25. juni 2000 - 13:47 #1
generelt vil det være problematisk at smide en pointer til en 'string' ind i en int ( som gets returnerer ). Hvis du VIL bruge gets, skal du hente det ind i en 'string' først, og derefter bruge atoi for at konvertere den til en int.

cin>>valg laver i dette tilfælde en typecasting, som gør at det virker...
Avatar billede channex Nybegynder
26. juni 2000 - 10:48 #2
du skal bare indsætte en
fflush( stdin );
umiddelbart før din gets(), for at flushe inputstreamen, så du ikke har sidste input liggende.
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