Skocz do zawartości
Forum komputerowe PC Centre
Pawel3

Problem z zadaniem w Turbo Pascalu

Rekomendowane odpowiedzi

Witam wszystkich , mam problem z zadaniem w Turbo pascalu , nie umiem tego programu a muszę napisać program następujący :

napisz program w Turbo Pascalu z zastosowaniem interfejsu graficznego.Interfejs ma mieć nazwę programu , autora,menu ewentualnego wyboru rodzaju wykonywanego zadania, powrotu do powtórnego wprowadzenia danych,wyjścia.w programie należy zastosować procedurę lub funkcje oraz zabezpieczyć program przed nieprawidłowymi danymi poprzez komunikat tekstowy i dźwiękowy.

 

Zadanie

 

Maszyna generuje losowo 3 liczby z zakreau od 0 do 9. W przypadku wylosowania jednakowych liczb( oprócz ,,0" ) maszyna daje możliwość powtórnego losowania liczb. W przypadku wylosowania trzech liczb ''0" maszyna generuje napis '' Wygrana". Jeżeli natomiast przynajmniej jedna z generowanych liczb różni się od pozostałych, maszyna generuje napis "Przegrana".

Jakie będzie prawdopodobieństwo wygranej przy 100, 200 i 500 próbach losowania, przyjmując ponowne losowanie (trafienie trzech tych samych liczb , ale różnych od zera) jako kolejne próby. Napisz program , który pozwala wprowadzić dowolną liczbę prób w zakresie 1 do 500.

 

No i właśnie takie skomplikowane zadanie mam i nie wiem jak to zrobić , proszę o pomoc.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Aż takie skomplikowane ono nie jest. Poczytaj:

- http://turbopascal.skryptoteka.pl/index-noflash.html

- http://www.zs1.suwalki.edu.pl/poland/uczen...na/lekcja1.html

Będziesz musiał skorzystać z generatora liczb pseudolosowych, jakieś tablicy w której będziesz przechowywał wylosowane wyniki (równie dobrze mogą to być 3 zmienne), do powrotu można wykorzystać etykiety lub sprytnie skonstruowaną pętlę, do sprawdzania danych wejściowych wystarczą idioto-odporne warunki. A co do zadanej liczby prób losowania 3 liczb to także wystarczy na początku pytać użytkownika ile prób chce przeprowadzić (liczba wprowadzona przez użytkownika będzie wykorzystywana w pętli, która będzie zawierać instrukcje dotyczące losowania).

Prawdopodobieństwo możesz bardzo łatwo obliczyć: jedna zmienna, która przechowuje liczbę sukcesów (przy każdej wygranej będzie inkrementowana), drugą już masz: jest to liczba prób, którą podał użytkownik. Prawdopodobieństwo obliczysz za najprostszego wzoru: liczba_wygranych / liczba_prób (* 100% - jeżeli chcesz mieć wynik w procentach).

 

Jakbyś miał problemy to można podejrzeć inne programy z wykorzystaniem generatora liczb pseudolosowych: http://www.zs1.suwalki.edu.pl/poland/uczen...ona/ranpro.html

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dzięki .No poczytałem troche na tych linkach ale ja nwet nie wiem jak mam zacząć pisanie tego programu

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Gość Clamoor

znaczy sie nie masz pojecia co to jest pascal ...

 

to moze zacznij od jakiegos podstawowego kursu ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

nom... a podałem przecież linki do kursów...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

ale nie ma tam o 3 liczbach losowych z przedziału 0-9

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

To wpisz w google "pascal liczba losowa"...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

i wyskakują mi błedy nie wiem dlaczego

 

 

uses crt;

 

var

 

liczba1,liczba2,liczba3,pruby,krot :integer;

label start,start2;

klawisz :Char;

 

Begin

 

BackgroundColor(blue);

TextColor(white);

 

klawisz:=ReadKey;

:start2

pruby:=0;

Writeln('Aby zresetowac program w dowolnym momęcie wcisnij 'r', aby zakonczyc dzialanie programu wcisnij 'k'')

Writeln('Ile prub ? ');

Readln(krot);

 

For 0 to krot do

begin

 

:start

Randomize();

pruby:=pruby+1;

liczba1:=Random(10);

liczba2:=Random(10);

liczba3:=Random(10);

 

if(liczba1<>liczba2)

begin

writeln('PRZEGRANA !!! przy',pruby,' prubie');

readln;

end;

 

if(liczba2<>liczba3)

begin

writeln('PRZEGRANA !!! przy',pruby,' prubie');

readln;

end;

 

if(liczba1>0)

begin

if(liczba2=liczba1)

begin

if(liczba3=liczba2)

begin

Writeln(liczba1,' , ',liczba2,',',liczba3,'');

goto(start);

end;

end;

end;

 

if(liczba1=0)

begin

if(liczba2=liczba1)

begin

if(liczba3=liczba2)

begin

writeln(' W Y G R A N A ! ! ! ');

writeln('wygrałes przy ',pruby,' prubie');

readln;

end;

end;

end;

if(klawisz='k')halt();

if(klawisz='r')goto(start2);

 

end;

 

end.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

może byś napisał jakie błędy i w której linii...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

na początku przy zmiennej klawisz:char

error36 :begin expected

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

nic dziwnego skoro deklaracja zmiennych jest rozdzielona (wepchniętymi) nazwami etykiet...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

to jak to zmienić ??

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Chwila szukania...

 

Etykiety (LABEL) deklarujemy zaraz po deklaracji modułów klauzulą USES, powodują one skok do określonej części programu - wywołujemy je słowem kluczowym GOTO

 

Poprawnie wg wyżej wymienionego opisu:

uses CRT;

label start, start2;

var
liczba1, liczba2, liczba3, proby, krot : integer;
klawisz : Char;

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dziękuję , skompilowałem cały program i błedy nie wyskakują , ale gdy wciskam F9 to pojawia się komunikat Error 200: Division by zero

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

jak sam komunikat wskazuje - masz gdzieś operacje, która dzieli przez zero (co jest niedozwolone...)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

to ten program i nie widzę w nim dzielenia przez zero czyba że przeoczyłem

 

uses crt;

 

 

 

label start,start2;

var

a:integer;

liczba1,liczba2,liczba3,pruby,krot :integer;

klawisz :Char;

 

Begin

clrscr;

Textbackground(blue);

TextColor(white);

 

klawisz:=ReadKey;

start2

:pruby:=0;

Writeln('Aby zresetowac program w dowolnym momęcie wcisnij ,r', 'aby zakonczyc dzialanie programu wcisnij ,k');

Writeln('Ile prub ? ');

Readln(krot);

Begin

 

 

 

start

:Randomize;

For a:=0 to krot do

pruby:=pruby+1;

liczba1:=Random(10);

liczba2:=Random(10);

liczba3:=Random(10);

 

if(liczba1<>liczba2) then

begin

writeln('PRZEGRANA !!! przy',pruby,' prubie');

readln;

end;

 

if(liczba2<>liczba3) then

begin

writeln('PRZEGRANA !!! przy',pruby,' prubie');

readln;

end;

 

if(liczba1>0) then

begin

if(liczba2=liczba1) then

begin

if(liczba3=liczba2) then

begin

Writeln(liczba1,' , ',liczba2,',',liczba3,'');

goto start;

end;

end;

end;

 

if(liczba1=0) THEN

begin

if(liczba2=liczba1) THEN

begin

if(liczba3=liczba2) THEN

begin

writeln(' W Y G R A N A ! ! ! ');

writeln('wygrałes przy ',pruby,' prubie');

readln;

end;

end;

end;

if(klawisz='k') THEN halT;

if(klawisz='r')THEN goto start2;

 

end;

 

end.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

×
×
  • Dodaj nową pozycję...