Problem z kodem w Pascalu. Prosze o pomoc!


(Krystian2009) #1

Witam proszę powiedzieć gdzie jest błąd w poniższym kodzie i jak go poprawić. Z góry dziękuje za pomoc

Uses CRT;


const

haslo='ja';


var

wprowadz:string;


begin

REPEAT

        clrscr;

          delay(1000);

               gotoxy(1,10);

                    write('Podaj hasło:');

                     read(wprowadz);

Until

        wprowadz=haslo;

begin

       clrscr;

          gotoxy(1,10);

             write('BRAVO');

               delay(1000);

       end;

end.

(rozwalkompa) #2

A co jest błędne? Nie kompiluje się czy co?

U mnie się skompilowało. Ale po podaniu złego hasła wpada w nieskończoną pętlę.

Zamiast 'read' daj 'readln':

REPEAT

        clrscr;

          delay(1000);

               gotoxy(1,10);

                    write('Podaj hasło:');

                     readln(wprowadz);

Until

teraz jest ok :wink:


(Krystian2009) #3

właśnie chodzi o to ze jak podam blednę hasło np 4 razy z rzedu żeby wyświetliło napis ACCESS DENIED i zamknęło program


(rozwalkompa) #4

Aaa! To trzeba było tak od razu. Nic takiego nie ma w tym kodzie. To co, miałem się sam domyślić?

To będzie jakoś tak:

Uses CRT;


const

haslo='ja';


var

wprowadz:string;

zle:byte; {dodatkowa zmienna, licząca błędne próby}


begin

zle:=0; {dajemy jej wartość zero}

REPEAT

        clrscr;

          delay(1000);

               gotoxy(1,10);

                    write('Podaj hasło:');

                     readln(wprowadz);

         if wprowadz<>haslo then zle:=zle+1 {liczymy ilość złych haseł}

        else break; {jeśli dobre, to przerywa pętlę}

         if zle>=4 then break else continue; {chyba jasne}

Until

        false; {czeka na przerwane pętli 'break-iem'}

begin

       clrscr;

          gotoxy(1,10);

             if zle<>4 then write('BRAVO') {jeśli dobrze, chwali}

             else write('ACCESS DENIED'); {jeśli złe 4 razy, gani}

               delay(1000);

       end;

end. {i się zamyka}

Teraz jest ok?

(Sprawdź, bo pisałem tylko tu i nie kompilowałem, jak coś to napisz)


(Krystian2009) #5

dobra zaraz sprawdzę a możesz wytłumaczyć co to znaczy ten znak <>


(rozwalkompa) #6

znak ten oznacza "różny od" i jest przeciwieństwem =

czyli jak masz

if cos<>cos2 then bla 

else blabla

to blabla wykona się wtedy gdy cos=cos2

rozumiesz?

i co, działa jak powinno?


(Krystian2009) #7

no działa wielkie dzieki


(rozwalkompa) #8

polecam się na przyszłość :smiley: