Avatar billede telly Nybegynder
08. marts 2005 - 19:30 Der er 8 kommentarer og
1 løsning

programmet stener

Jeg får ingen errors, dog en warning der siger at variablen "grade" bliver brugt uden at være initialiseret.
Programmet stener og jeg kan simpelthen ikke se hvori fejlen ligger.

void add_number();

int _tmain(int argc, _TCHAR* argv[])
{
add_number();

}

void add_number()
{
    char *grade;
    int input;
    int done=0;
    printf("indtast her: ");
    input = getch();
   
    while(!done){
        switch((char)input)
        {
            case '0':
                grade[0] = (char)input;
                input = getch();
                if(input == '\n')
                    done=1;
                else if((input == 0) || (input == 3))
                {   
                    grade[1] = (char)input;
                    done=1;
                }
                else
                    printf("Not a valid grade, try again!");
                break;
            case '1':
                grade[0] = (char)input;
                input = getch();
                if(input == '\n')
                    done=0;
                else if((input == 0) || (input == 1) || (input == 3))
                {
                    grade[0] = (char)input;
                    done=1;
                }
                else
                    printf("Not a valid grade, try again!");
                break;
            case '3':
               
            case '5':
           
            case '6':
               
            case '7':
               
            case '8':
               
            case '9':
                grade[0] = (char)input;
                input = getch();
                if(input == '\n')
                    done=1;
                else
                    printf("Not a valid grade, try again!");
                break;
        }
   
    }   
   
};
Avatar billede arne_v Ekspert
08. marts 2005 - 19:34 #1
Prøv lige at erstat:

char *grade;

med:

char grade[3];
Avatar billede arne_v Ekspert
08. marts 2005 - 19:35 #2
char *grade; // grade uinitialiseret pointer til char
...
grade[0] = (char)input; // put input i det memory som grade tilfældigvis peger på

skal gå galt
Avatar billede telly Nybegynder
08. marts 2005 - 19:47 #3
Det hjalp da lidt, men det lader til at logikken er forkert. Den reagere ikke før jeg har trykket noget 2 gange.
Avatar billede telly Nybegynder
08. marts 2005 - 19:47 #4
Men du skal have tak for hjælpen arne_v
Avatar billede telly Nybegynder
08. marts 2005 - 19:48 #5
smid et svar så får du point
Avatar billede arne_v Ekspert
08. marts 2005 - 19:49 #6
ok
Avatar billede arne_v Ekspert
08. marts 2005 - 19:50 #7
så vidt jeg kan se kalder du da altid getch 2 gange, så er der noget mystisk i at du
skal taste 2 tegn ?
Avatar billede telly Nybegynder
08. marts 2005 - 20:11 #8
Det er fordi det indtastede kan indeholde 2 karaktere (fx. 03) men man behøver ikke (fx. 0) dvs. at først tjekker på første karakter i min state machine og hvis det er et 0 så kan næste input være 0 eller 3 eller retur
Avatar billede arne_v Ekspert
08. marts 2005 - 20:23 #9
Men selv ved f.eks. 8 så læser du jo stadigt et tegn mere:

            case '9':
                grade[0] = (char)input;
                input = getch(); // <----- her
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