Pascal Problem z losowa kolejnoscia pytań(nie umiem zrobic) w Programie Test

0

Witam mam problem z programem ktory mam na zaliczenie programowania mianowicie:
Mam napisać test składający się z 60 pytań każde pytanie ma odpowiedzi A B C D. Mam go napisać najprościej jak umiem myślałem o CASE. Po każdej odpowiedzi na pytanie ma pojawić mi się napis czy jest to poprawna odpowiedz a jeśli nie to jaka jest poprawna i krótkie wyjaśnienie(To umiem zrobić) tylko ze te pytania maja być w losowej kolejności czyli za każdym uruchomieniem programu pierwsze pytanie jest inne niż wcześniej i tak z każdym pytaniem ale one nie mogą się powtarzać. I właśnie tej części z losowa kolejnością nie rozumiem prosiłbym kogoś o pomoc z tym.
Dam tutaj 3 pytania i jakby ktoś mógł to prosiłbym o taki szybki wzór tego całego programu bo kompletnie nie wiem jak to zrobić.
(Odpowiedzi nie pisze bo nie sa jeszcze gotowe)

  1. Co to jest jezyk obiektowy?
    A.
    B.
    C.
    D.
    2.Co to jest tablica?
    A.
    B.
    C.
    D.
    3.Co to są wskaźniki?
    A.
    B.
    C.
    D.

Obecnie mam napisany test na 3 pytania te które tu podałem lecz nie są one w losowej kolejności bo nie wiem gdzie wstawić funkcje random lub jakaś podobna. Jakby ktoś mógł pomoc i pokazać na tych 3 pytaniach poprawny kod z tym random byłbym wdzieczny

0

Ciekawe, czy taki kod Ci się do czegoś przyda?

program Project1;

{$APPTYPE CONSOLE}

const Rozmiar = 60;

var Tablica: array[1..Rozmiar] of Integer;
    i, Tmp, Losowa, Zakres: Integer;

begin
  Randomize;
  for i:= 1 to Rozmiar do Tablica[i]:= i;
  Zakres:= Rozmiar;
  while Zakres > 1 do begin
    Losowa:= Random(Zakres) + 1;
    Tmp:= Tablica[Zakres];
    Tablica[Zakres]:= Tablica[Losowa];
    Tablica[Losowa]:= Tmp;
    Dec(Zakres);
  end;
  for i:= 1 to Rozmiar do Write(Tablica[i]:4);
  Readln;
end.
0

Ja mam taki program na 3 pytania tylko ze nie sa w losowej kolejności bardziej mi właśnie chodzi o cos w tym stylu bo ja nie jestem jakis super programista i ten kod wyzej jakoś nie przypadł mi do gustu

Program projekt;
uses crt;
var
x:integer;
a,b,c:char;
begin
clrscr;
writeln('Witamy w tescie o C++');
x:=0;
writeln('obecnie posiadasz punktow: ',x);
writeln('Pierwsze pytanie:');
readln;
writeln('Co to jest j©zyk obiektowy?');
writeln('Mozliwe odpowiedzi to:?');
writeln('A-Jezyk ktorym posluguja sie programisci');
writeln('b-Jezyk ktory pozwala na wykorzystywanie mozliwosci jakie stwarza programowanie obiektowe');
writeln('c-Jezyk ktorym poslugujemy sie w multimediach');
Writeln('Podaj poprawna odpowiedz');
readln(a);
case a of
'a': writeln('zla odpowiedz');
'b': writeln('Poprawna odpowiedz');
'c':writeln('zla odpowiedz');
else writeln('oszukujesz')
end;
if a='b' then x:=x+1;
writeln('posiadasz punktow: ',x);
writeln(' 2 pytanie:');
readln;
writeln('Co to tablica?');
writeln('Mozliwe odpowiedzi to:');
writeln('A-To struktura danych ktora sklad sie z wartosci tego samego typu');
writeln('b-To struktura danych ktora sklada sie z wartosci roznego typu');
writeln('c-Odpowiedz a i b sa bedne');
Writeln('Podaj poprawna odpowiedz');
readln(b);
case b of
'a': writeln('Poprawna odpowiedz');
'b': writeln('zla odpowiedz');
'c':writeln('zla odpowiedz');
else writeln('oszukujesz')
end;
if b='a' then x:=x+1;
writeln('posiadasz punktow; ',x);
writeln('3 pytanie:');
readln;
writeln('Co to jest wska«nik');
writeln('Mozliwe odpowiedzi to:');
writeln('A-zmienne przechowujace dane');
writeln('b-Stae przechowujace dane');
writeln('c-Zmienne nieprzechowujace dane a jedynie ich adres');
Writeln('Podaj poprawna odpowiedz');
readln(c);
case c of
'a': writeln('zla odpowiedz');
'b': writeln('Zla odpowiedz');
'c':writeln('Dobra odpowiedz');
else writeln('oszukujesz')
end;
if c='c' then x:=x+1;
writeln('posiadasz punktow; ',x);
readln;
end.
 
1
Dario360 napisał(a)

... ten kod wyzej jakoś nie przypadł mi do gustu

Ten kod nie miał przypaść Ci do gustu, tylko pomóc w rozwiązaniu problemu. Dokładnie, to miał Cię naprowadzić, w jaki sposób wybierać losowo jedno z 60 pytań aż do momentu, gdy zostaną wybrane wszystkie pytania (oczywiście bez powtórzeń).

Co robi ten kod?
Najpierw wypełnia tablicę kolejnymi liczbami od 1 do 60. Dalej w pętli losuje jeden element tablicy i zamienia go z ostatnim elementem, losuje następny i zamienia go z przedostatnim i tak dalej. W ten sposób tablica zawiera w dalszym ciągu 60 liczb z zakresu 1..60, ale już rozmieszczonych losowo. I o to chodziło. Teraz można w pętli for losować pytania w taki sposób:

for i:= 1 to 60 do Writeln('Pytanie nr ', Tablica[i]);    {Pytania losowe}
for i:= 1 to 60 do Writeln('Pytanie nr ', i);             {Pytania po kolei}

Kolejny kod. Zapewne tez nie przypadnie Ci do gustu, bo wypisuje pytania po kolei.

Program projekt;

const
  Rozmiar = 3;
  Pytania: array[1..Rozmiar, 0..3] of string =
    (('Pierwiastek z dziewięciu to:', 'dwa', 'trzy', 'cztery'),
     ('Stolica Łotwy to:', 'Ryga', 'Figa', 'Tołpyga'),
     ('Imię Janka Muzykanta:', 'Dionizy', 'Leopold', 'Janko'));
  Odpowiedzi: array[1..Rozmiar] of Char = ('b', 'a', 'c');

var
  i, j, Poprawne: Integer;
  Znak: Char;
begin
  Writeln('Rozwiąż test', #13#10);
  Poprawne:= 0;
  for i:= 1 to Rozmiar do begin
    Writeln(i, '. pytanie');
    Writeln(Pytania[i, 0]);                                     (**)
    for j:= 1 to 3 do Writeln(Chr(j+96), ' - ', Pytania[i, j]); (**)
    Write('Twój wybór: ');
    Readln(Znak);
    if Znak in ['a', 'b', 'c'] then begin
      if Znak = Odpowiedzi[i] then begin                        (**)
        Inc(Poprawne);
        Writeln('Poprawna odpowiedź');
      end
      else Writeln('Niepoprawna odpowiedź');
    end
    else Writeln('Oszukujesz');
    Writeln('Masz ', Poprawne, ' pkt.', #13#10);
  end;
  Write('Naciśnij Enter');
  Readln;
end.

Jeżeli teraz do tego kodu dołączysz ten z mojego pierwszego postu, to będziesz miał gotowy program. Jest tylko mały problem: musisz zmodyfikować te trzy linijki oznaczone gwiazdkami w taki sposób, aby zamiast "i" był ... no właśnie ... podpowiedź masz powyżej w tym krótkim kodzie (dwie linijki)

0

dziekuje jutro powalczę z tym programem bardzo dziekuje
i przepraszam za stwierdzenie " ze nie przypadł mi do gustu ten program" złe się wyraziłem po prostu ot taki mój mały fail

1 użytkowników online, w tym zalogowanych: 0, gości: 1