Pascal-bilet na kolejny rok

Odpowiedz Nowy wątek
2006-12-04 18:32
pawelddz
0

Witam. Program jest moim biletem wstepu na kolejny rok, wiec prosze o jego poprawe. Program ma za zadanie "
Zaproponować algorytm pozwalający na realizację następującego zadania. Napisać program do zadawania użytkownikowi na terminalu prostych zadań arytmetycznych oraz do sprawdzania i oceny odpowiedzi użytkownika. Zadania będą zapisane na pliku w tzw. postaci prefiksowej, po jednym w linii, gdzie pierwszy znak w linii oznacza operację arytmetyczną, zaś występujące po nim dwie liczby oddzielone spacjami są jej argumentami, na przykład:

  • 2 3
  • 12 32
  • 12 -12

    Znak ,,.'' w pierwszej kolumnie oznacza koniec danych. Program ma obsługiwać operację dodawania (+), odejmowania (-), mnożenia (*), potęgowania (^), dzielenia całkowitoliczbowego (%), dzielenia modulo (:) - wszystko ze sprawdzaniem wykonalności operacji. Każdy inny znak umieszczony w pierwszej kolumnie powinien być potraktowany jako błąd i powodować zakończenie działania programu z odpowiednim komunikatem.
    Będą istniały dwa pliki z danymi, nazwane ,,latwe.di ,,trudne.d. Program powinien na początku pracy zapytać użytkownika, który zestaw zadań wybiera. Zadając kolejne pytania program czyta odpowiedzi użytkownika i porównuje je z poprawnymi wynikami. Równocześnie program prowadzi statystykę poprawności odpowiedzi użytkownika i po zadaniu wszystkich pytań wyświetla informację o procentowej ilości poprawnych odpowiedzi.
    Przebieg ćwiczenia
    Przeanalizowć podane w wymaganiach wstępnych zadanie algorytmiczne. Przedyskutować jego kompletność. Ewentualnie uzupełnić specyfikację zadania.
    Zaproponować i zapisać za pomocą diagramu algorytmu rozwiązanie algorytmiczne postawionego problemu z równoczesnym uwzględnieniem podziału problemu na podproblemy. Określić specyfikację procedur/funkcji rozwiązujących wyszczególnione podproblemy.
    Wskazać warunek stopu algorytmu.
    Zaproponować struktury danych niezbędne do realizacji algorytmu.
    Omówić zagadnienie czytania danych z pliku wejściowego.
    Zaproponować sposób wyliczania poprawnych odpowiedzi. "
    Niestety w momencie gdy myslalem ze wszystko jest na dobrej drodze do napisania programu wyskoczylo mi kilka bledow
    Bardzo proszo pomoc
    Program wraz z bledami:

    
    program arytmetyka;
    var f            : text;
    poziom,zn     : char;
    x,y,wynik,odp : integer;
    i,n,pkt       : integer;

procedure wybor;
begin
repeat
writeln;
writeln('[l]atwy');
writeln('[t]trudny');
write('Wybierz poziom trudnosci: ');
readln(poziom);
if (poziom<>'l') and (poziom<>'t') then
writeln('podales zly znak');
until (poziom='l') or (poziom='t')
end; { wybor }

procedure otworz_plik;
begin
if (poziom='t') then assign(f,'trudne.d')
else assign(f,'latwe.d');
reset(f);
end; { otworz_plik }

function oblicz:integer;
var wynik : integer;
begin
case zn of
'+': wynik:=x+y;
'-': wynik:=x-y;
'': wynik:=xy;
'^': begin
wynik:=1;
for i:=1 to y do
wynik:=wyniky;
end;
procedure wyniki;
begin
writeln('Twoj wynik to: ',pkt
100 div n,'%');
readln;
end; { oblicz }

begin
n:=0;
pkt:=0;
wybor;
otworz_plik;

repeat
repeat
readln(f,zn,x,y);
until (zn='-') or (zn='+') or (zn=':') or (zn='*') or
(zn='%') or (zn='^') or (zn='.') and
((y<>0) or ((zn<>':') and (zn<>'%')));

writeln('% dzielenie calkowitoliczbowe');
procedure wyniki;
begin
writeln('Twoj wynik to: ',pkt*100 div n,'%');
readln;
end; { oblicz }

begin
n:=0;
pkt:=0;
wybor;
otworz_plik;

repeat
repeat
readln(f,zn,x,y);
until (zn='-') or (zn='+') or (zn=':') or (zn='*') or
(zn='%') or (zn='^') or (zn='.') and
((y<>0) or ((zn<>':') and (zn<>'%')));

writeln('% dzielenie calkowitoliczbowe');
writeln(': modulo');
writeln('^ potegowanie');
writeln;

if (zn <> '.') then
begin
n:=n+1;
wynik:=oblicz;
write(x,zn,y,' = ');
readln(odp);
if wynik=odp then pkt:=pkt+1;
end;
until zn='.';

close(f);
wyniki;
end.

Pozostało 580 znaków

2006-12-04 19:36
0

Tylko jedno pytanie przychodzi mi do głowy, za ile Ci napisać nowy, bo modyfikacje tego co masz potrwają dłużej.


<span style="color: blue">"Kolarstwo to jedna z najtrudniejszych dyscyplin sportu. Nawet najgorszy kolarz jest wciąż wybitnym sportowcem."
s.p. Marco Pantani
</span>

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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