Pawel3 0 Napisano 26 Kwiecień 2009 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
Nerio 17 Napisano 26 Kwiecień 2009 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
Pawel3 0 Napisano 28 Kwiecień 2009 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 Napisano 28 Kwiecień 2009 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
Nerio 17 Napisano 28 Kwiecień 2009 nom... a podałem przecież linki do kursów... Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Pawel3 0 Napisano 29 Kwiecień 2009 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
luk1999 17 Napisano 29 Kwiecień 2009 To wpisz w google "pascal liczba losowa"... Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Nerio 17 Napisano 29 Kwiecień 2009 http://www.google.pl/search?q=randomize+pascal Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Pawel3 0 Napisano 3 Maj 2009 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
Nerio 17 Napisano 3 Maj 2009 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
Pawel3 0 Napisano 3 Maj 2009 na początku przy zmiennej klawisz:char error36 :begin expected Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Nerio 17 Napisano 3 Maj 2009 nic dziwnego skoro deklaracja zmiennych jest rozdzielona (wepchniętymi) nazwami etykiet... Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Pawel3 0 Napisano 3 Maj 2009 to jak to zmienić ?? Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Nerio 17 Napisano 3 Maj 2009 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
Pawel3 0 Napisano 4 Maj 2009 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
Nerio 17 Napisano 4 Maj 2009 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
Pawel3 0 Napisano 4 Maj 2009 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