Niezalogowany (Zaloguj się)
WItaj Gościu! Możesz się teraz zalogować lub poprosić o członkowstwo na Forum Turbo Pascal Web Pag
    • CommentAuthorSilverX
    • CommentTime6 Feb 2008 zmieniony
     
    Jestem początkujący a to zadanie mnie przerosło: Napisz program sprawdzający wiedzę z Turbo Pascala w formie testu złożonego z 10 pytań zamkniętych (każde pytanie ma mieć 3 mozliwe odpowiedzi z czego tylko 1 jest prawidłowa). Program ma zliczać odpowiedzi oraz podać ocenę końcową według skali: 10p. - 5, 8-9p. - 4, 7-6p - 3, 5p - 2, poniżej 5p. - 1 Nie musi być pytań i odpowiedzi tylko chodzi mi o składnię tego programu. Z góry dziękuje. Mam już baze: program Test; const IlePytan = 2; type TPytanie = record Pytanie : string[255]; Odpowiedzi : array[1..16] of string[255]; OdpowiedzPoprawna : byte; end; type TPytania = array[1..IlePytan] of TPytanie; var Pytania : TPytania; ImieNazwisko : string; i,j : byte; wybor,punkty : byte; begin //Tutaj wypełnimy tablicę danymi na temat pytan. Mozna ewentualnie wczytac je do tablicy np z pliku tekstowego. //Dobrze było by to zrobić w podprogramie(procedurze) ///////////////////////////////////////////////////////////////////////////////// Pytania[1].Pytanie := 'Pytanie1'; Pytania[1].Odpowiedzi[1] := 'Odpowiedz1'; Pytania[1].Odpowiedzi[2] := 'Odpowiedz2'; Pytania[1].Odpowiedzi[3] := 'Odpowiedz3'; //odpowiedzi piszemy ile nam pasuje, program sobie sam sprawdzi ile ich jest i je wypisze Pytania[1].OdpowiedzPoprawna := 2; //indeks w tablicy w którym znajduje się poprawna odpowiedz Pytania[2].Pytanie := 'Pytanie2'; Pytania[2].Odpowiedzi[1] := 'Tak'; Pytania[2].Odpowiedzi[2] := 'Nie'; Pytania[2].OdpowiedzPoprawna := 1; //////////////////////////////////////////////////////////////////////////////// j := 1; punkty := 0; Write('Podaj Imię i Nazisko: '); Readln(ImieNazwisko); for i := 1 to IlePytan do begin Writeln(Pytania.Pytanie); while Pytania[i].Odpowiedzi[j] <> '' do begin writeln(j, ': ',Pytania[i].Odpowiedzi[j]); Inc(j); end; Write('Wybierz odpowiedz: '); Readln(Wybor); if Wybor = Pytania[i].OdpowiedzPoprawna then Inc(Punkty); j := 1; end; Writeln('Ilosc zdobytych punktow: ', Punkty); case punkty of 0..3 : writeln('Pala, Siadaj!!'); 4..5 : Writeln('Dwója'); 6..7 : Writeln('Dostatecznie'); 8 : Writeln('Ladnie'); 9..10 : Writeln('Bardzo Ladnie'); end; Readln; end. Tyle, że większość instrukcji nie uczyliśmy się, chodzę do pierwszej klasy technikum informatycznego. Nie da się inaczej zastąpić takich instrukcji jak: - type - albo ta tablica - o co z nią chodzi? Reszte wiem.
    •  
      CommentAuthorLisy
    • CommentTime3 Feb 2009
     
    Zadam Ci inne pytanie czy moze byc dodatkowo dzialanie na plikach tzn. zapisywanie i wczytywanie z pliku wartosci zmiennych ? Bo mam podobna wesje programu tyle ze na plikach,moglbym Ci pomoc...
    • CommentAuthorWieloryb
    • CommentTime25 Sep 2009
     
    Mam podobny problem. Mianowicie, musze napisac test w pascalu 10 pytan po 4 mozliwe odpowiedzi z czego jedna poprawna. Na koncu ma byc wyswietlona ilosc uzyskanych punktow. Wybieranie odpowiedzi i mozliwosc zmiany pytania na nastepne/poprzednie ma odbywac sie za pomoca strzalek na klawiaturze. Spacja ma byc zaznaczenie (podswietlenie) wlasciwej wedlug wypelniajacego test odpowiedzi i przejscie do nastepnego pytania. Dodatkowo ma byc mozliwosc przejrzenia wczesniejszych pytan i udzielonych odpowiedzi. Na razie mam pomysl, zeby zrobic macierz 10*4 i kazdej wartosci przypisac kod, ktory wyswietlalby inne pytanie z podswietlona inna odpowiedzia. Strzalkami prawo/lewo wybieraloby sie pytanie a gora/dol poprawna odpowiedz. Po jej zaznaczeniu po wcisnieciu spacji sprawdzany bylby warunek czy odpowiedz jest poprawna jesli tak to wynik:= wynik + 1 i przejscie do nastepnego pytania. Moze macie inny pomysl jak mozna ten programik napisac?? Mam nadzieje, ze moj pomysl nie jest zly i srednio ogarniety w pascalu czlek (czytaj JA) bez wiekszego problemu da rade cos takiego napisac?? Z gory dzieki za wszystkie odpowiedzi i rady. Pzdr.