PDA

Zobacz pe┼én─ů wersj─Ö : Prosba o pomoc



seba1990
16-01-07, 18:48
Mam zadanie w ktˇrym mam napisac test sk│adaj▒cy siŕ z 10 pyta˝ na temat monitorˇw.
Do ka┐dego pytania s▒ podane 3 odp.

Przy ka┐dym uruchomieniu kompilatora pytania maj▒ ukazywaŠ siŕ w losowej kolejnoÂci.

Przyk│ad:
writeln('1.W czym s▒ wyra┐ane rozmiary ekranu monitora?');
writeln('a) cm');
writeln('b) calach');
writeln('c) mm');

writeln('2.Kolory w jakich obraz mo┐e byŠ wyÂwietlany na ekranie monitora podawane s▒:');
writeln('a) w bitach');
writeln('b) w bajtach');
writeln('c) w pikselach');

Jak zrobiŠ, ┐eby te pytania by│y za ka┐dym razem w innej kolejnoÂci?
Proszŕ o podpowied╝.

RRybak
16-01-07, 20:28
Po pierwsze - kompilatora si─Ö nie "uruchamia za ka┼┼║dym razem". Kompiluje si─Ö raz, uruchamia─ç mo┼┼║na program.

U┼┼║yteczne dla Ciebie funkcje:
Randomize - wywo┼éujesz raz (gdzie┼Ť na starcie programu), aby utworzy┼éo - w uproszczeniu - losowy pseudogenerator - za ka┼┼║dym uruchomieniem programu b─Ödzie losowa┼éo inne liczby za pomoc─ů funkcji:
Random(x) - zwraca liczb─Ö losow─ů w przedziale 0..(x-1), np. Random(3); mo┼┼║e wylosowa─ç 0,1 lub 2. Aby uzyska─ç przedzia┼é 1-3 wpisujemy Random(x)+1; co naturalnie da nam liczby 1, 2 lub 3.

Od tego punktu mo┼┼║esz ju┼┼║ sobie sterowa─ç programem za pomoc─ů if..then, lub skorzysta─ç z case.

Fragment przykładowego programu, na ile pamiętam Pascala:

Randomize;
x:=Random(3)+1;
case x of
1 : writeln("jakies pytanie);
2 : begin
writeln("inne pytanie");
end;
3 : writeln("trzecie pytanie");
end;

Nie mam w zwyczaju podawa─ç gotowc├┼éw, ale my┼Ťl─Ö, ┼┼║e dalej sobie dasz ju┼┼║ rad─Ö 8-)

Erpe4
08-02-07, 11:47
Skorzystam z tego tematu by nie robiŠ ba│aganu.

Witam. Zaczynam dopiero prace z programowaniem, st▒d mˇj pewnie ma│o profesjonalny problem ;) Pod spodem umieszczam kod programu (w nim wszystko ok, program dzia│a) Nie zwracajcie uwage na deklarowane zmienne. Pod spodem pytanie



program matematyka;
uses crt;
var
m1,m2,mt:char;
a,b,h,c,e,f,g,delta,x1,x2,P,Pole:real;
imie,tekst:string;
liczba,numer:integer;

begin
clrscr;
repeat
writeln(' Podaj liczbe');
readln(tekst);
val(tekst,liczba,numer);

if numer <> 0
then
begin
writeln ('Podane dane nie sa liczba ');
writeln ('blad na pozycji : ',numer );
end
else
begin
writeln('konwersja poprawna');
if liczba > 0
then
begin
writeln('pole trˇjk▒ta wynosi ',0.5*liczba*liczba*1.73205/2:0:2);
writeln('nacisnij dowolny klawisz by zakonczyc');
repeat until keypressed;
end
else
begin
writeln('liczba jest ujemna - niepoprawne dane');
end;
end;
until (liczba > 0) and (numer=0);
end.

problem polega na tym, ┐e chcia│bym teraz stworzyŠ program, podobny do tego, ale korzystaj▒cy z dwˇch danych. Udaje mi sie stworzyŠ go gdy wystarczy samo wczytanie drugiej zmiennej, ale musze j▒ poddaŠ walidacji. Nie bardzo mi to wychodzi i gubiŕ sie gdy prˇbuje umieÂciŠ gdzie bli╝niaczy do pierwszego kod, a nie mam na czym sie wzorowaŠ :?

cholernie by│bym wdziŕczny za pomoc i pokazanie jak to zrobiŠ.

RRybak
08-02-07, 20:41
No to spr├│bujmy Ci─Ö naprowadzi─ç. Mo┼╝liwo┼Ťci masz dwie:
1. Czas zapozna─ç si─Ö z warunkami AND ( i ) oraz OR (lub)
a) sprawdzenie czy pierwsza zmienna LUB druga nie jest liczb─ů

if ( (numer1 <> 0) OR (numer1 <> 0) )
then jakis_tam_blad

b) sprawdzenie czy OBIE liczby s─ů dodatnie (ta I ta)

if ( (liczba1 > 0) AND (liczba2 > 0) )
then ZaczynamyObliczenia;

2. Podej┼Ťcie drugie
┼üadujesz sprawdzanie zmienny do funkcji (function) zwracaj─ůcych typ boolean, w zale┼╝no┼Ťci od tego, czy s─ů one poprawne. Sk┼éadnia warunkowa jak wy┼╝ej. Nast─Öpnie w kodzie sprawdzasz tylko czy wynik by┼é true, czy false.

Aha.. no i jeszcze podzia┼é na procedury - nic nie stoi na przeszkodzie, by sobie program na takowe podzieli─ç - ┼éatwiej tym zarz─ůdza─ç. Np.:

sprawdzaj:=true;
if (liczba1 < 0) sprawdzaj:=false;
if (liczba2 < 0) sprawdzaj:=false;
if (sprawdzaj = true) ZaczynamyObliczenia else WypiszBlad;

Co oczywi┼Ťcie mo┼╝na pro┼Ťciej, bez zmiennej "sprawdzaj", jak w p. 1B

W ka┼╝dym b─ůd┼║ razie unikaj - jak to uj─ů┼ée┼Ť "umieszczania bli┼║niaczego kodu" - je┼Ťli Ci si─Ö co┼Ť powtarza - wrzucaj to do procedury albo funkcji - b─Ödzie czytelniej, ┼éatwiej poprawia─ç i zarz─ůdza─ç takim kodem. Skle─ç co┼Ť dalej sam, zobaczymy co Ci wyjdzie :)