Skocz do zawartości

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

KapitanRudobrody

Projekt w pascalu i problem

Polecane posty

Witam. Otóż mam za zadanie zrobić program w pascalu zawierający operacje na plikach. Wymyśliłem temat, pobawiłem się kilka godzin i napisałem szyfrator.

Wszystko pięknie ale (zawsze jest jakieś ale :P): choć program się kompiluje, nie wyskakują błędy to jednak podczas próby wpisania czegoś do zaszyfrowania program albo się zawiesza albo wyskakuje jakiś błąd ;/ (procedura logo działa, potem cos się dzieje przy dalszych krokach).

Programik:

program Szyfrator;
Uses Crt;

Var  i,a,j,h:byte;
     d:char;
     od1,za1:string;
     za:file of string;
     od:file of string;
     od2:array[1..255] of char;
     za2:array[1..255] of char;


procedure Logo;
begin
textcolor(white);

for i:=22 downto 1 do begin
                        ClrScr;
            Gotoxy(30,i);
            Write('Kamil Rutkowski');
                        delay(200);
                     end;
for i:=23 downto 2 do begin
                        ClrScr;
            Gotoxy(30,1);
            Write('Kamil Rutkowski');
            Gotoxy(33,i);
            Write('PRESENTS');
                        delay(200);
                     end;

ClrScr;
Gotoxy(30,1);
Write('Kamil Rutkowski');
Gotoxy(33,2);
Write('PRESENTS');
gotoxy(1,8);
textcolor(lightred);
Write('   ____   ______           _____   _____               _______    _      _____');
gotoxy(1,9);
Write('  /     \       /  \     / |      |     \       /\        |      / \    |     \');
gotoxy(1,10);
Write(' /            /     \   /  |      |      |     /  \       |     /   \   |      |');
gotoxy(1,11);
Write(' \_____      /       \ /   |____  |_____/     /____\      |    /     \  |_____/');
gotoxy(1,12);
Write('       \    /         Y    |      |   \      /      \     |    \     /  |   \ ');
gotoxy(1,13);
Write('       /   /          |    |      |    \    /        \    |     \   /   |    \ ');
gotoxy(1,14);
Write(' \____/   /______     |    |      |     \  /          \   |      \_/    |     \ ');
delay(1500);
ClrScr;
Gotoxy(33,2);
textcolor(white);
Write('PRESENTS');
gotoxy(1,8);
textcolor(lightred);
Write('   ____   ______           _____   _____               _______    _      _____');
gotoxy(1,9);
Write('  /     \       /  \     / |      |     \       /\        |      / \    |     \');
gotoxy(1,10);
Write(' /            /     \   /  |      |      |     /  \       |     /   \   |      |');
gotoxy(1,11);
Write(' \_____      /       \ /   |____  |_____/     /____\      |    /     \  |_____/');
gotoxy(1,12);
Write('       \    /         Y    |      |   \      /      \     |    \     /  |   \ ');
gotoxy(1,13);
Write('       /   /          |    |      |    \    /        \    |     \   /   |    \ ');
gotoxy(1,14);
Write(' \____/   /______     |    |      |     \  /          \   |      \_/    |     \ ');
delay(1500);
ClrScr;

gotoxy(1,8);
textcolor(lightred);
Write('   ____   ______           _____   _____               _______    _      _____');
gotoxy(1,9);
Write('  /     \       /  \     / |      |     \       /\        |      / \    |     \');
gotoxy(1,10);
Write(' /            /     \   /  |      |      |     /  \       |     /   \   |      |');
gotoxy(1,11);
Write(' \_____      /       \ /   |____  |_____/     /____\      |    /     \  |_____/');
gotoxy(1,12);
Write('       \    /         Y    |      |   \      /      \     |    \     /  |   \ ');
gotoxy(1,13);
Write('       /   /          |    |      |    \    /        \    |     \   /   |    \ ');
gotoxy(1,14);
Write(' \____/   /______     |    |      |     \  /          \   |      \_/    |     \ ');
delay(1500);
ClrScr;
end;

procedure odszyfroj;
begin
begin
for i:=1 to length(za1) do case za2[i] of
                ' ':od2[i]:=' ';
                'b':od2[i]:='a';
                'B':od2[i]:='A';
                'c':od2[i]:='b';
                'C':od2[i]:='B';
                'd':od2[i]:='c';
                'D':od2[i]:='C';
                'e':od2[i]:='d';
                'E':od2[i]:='D';
                'f':od2[i]:='e';
                'F':od2[i]:='E';
                'g':od2[i]:='f';
                'G':od2[i]:='F';
                'h':od2[i]:='g';
                'H':od2[i]:='G';
                'i':od2[i]:='h';
                'I':od2[i]:='H';
                'j':od2[i]:='i';
                'J':od2[i]:='I';
                'k':od2[i]:='j';
                'K':od2[i]:='J';
                'l':od2[i]:='k';
                'L':od2[i]:='K';
                'm':od2[i]:='m';
                'M':od2[i]:='M';
                'n':od2[i]:='n';
                'N':od2[i]:='N';
                'o':od2[i]:='o';
                'O':od2[i]:='O';
                'p':od2[i]:='p';
                'P':od2[i]:='P';
                'r':od2[i]:='r';
                'R':od2[i]:='R';
                's':od2[i]:='s';
                'S':od2[i]:='S';
                't':od2[i]:='t';
                'T':od2[i]:='T';
                'q':od2[i]:='q';
                'Q':od2[i]:='Q';
                'u':od2[i]:='u';
                'U':od2[i]:='U';
                'w':od2[i]:='w';
                'W':od2[i]:='W';
                'x':od2[i]:='x';
                'X':od2[i]:='X';
                'y':od2[i]:='y';
                'Y':od2[i]:='Y';
                'z':od2[i]:='z';
                'Z':od2[i]:='Z';
                'a':od2[i]:='a';
                'A':od2[i]:='A';
                '0':od2[i]:='0';
                '9':od2[i]:='9';
                '8':od2[i]:='8';
                '7':od2[i]:='7';
                '6':od2[i]:='6';
                '5':od2[i]:='5';
                '4':od2[i]:='4';
                '3':od2[i]:='3';
                '2':od2[i]:='2';
                '1':od2[i]:='1';
                '<':od2[i]:=',';
                ',':od2[i]:='<';
                '>':od2[i]:='.';
                '.':od2[i]:='>';
                '?':od2[i]:='/';
                '/':od2[i]:='?';
                ':':od2[i]:=';';
                ';':od2[i]:=':';
                '|':od2[i]:='\';
                '\':od2[i]:='|';
                '{':od2[i]:='[';
                '[':od2[i]:='{';
                '}':od2[i]:=']';
                ']':od2[i]:='}';
                '+':od2[i]:='=';
                '=':od2[i]:='+';
                '_':od2[i]:='-';
                '-':od2[i]:='_';
                '(':od2[i]:=')';
                ')':od2[i]:='(';
                '&':od2[i]:='*';
                '*':od2[i]:='&';
                '%':od2[i]:='^';
                '^':od2[i]:='%';
                '#':od2[i]:='$';
                '$':od2[i]:='#';
                '!':od2[i]:='@';
                '@':od2[i]:='!';
                end;
end;
end;

procedure zaszyfroj;
begin

begin
for i:=1 to length(od1) do case od2[i] of
                ' ':za2[i]:=' ';
                'a':za2[i]:='b';
                'A':za2[i]:='B';
                'b':za2[i]:='c';
                'B':za2[i]:='C';
                'c':za2[i]:='d';
                'C':za2[i]:='D';
                'd':za2[i]:='e';
                'D':za2[i]:='E';
                'e':za2[i]:='f';
                'E':za2[i]:='F';
                'f':za2[i]:='g';
                'F':za2[i]:='G';
                'g':za2[i]:='h';
                'G':za2[i]:='H';
                'h':za2[i]:='i';
                'H':za2[i]:='I';
                'i':za2[i]:='j';
                'I':za2[i]:='J';
                'j':za2[i]:='k';
                'J':za2[i]:='K';
                'k':za2[i]:='l';
                'K':za2[i]:='L';
                'l':za2[i]:='m';
                'L':za2[i]:='M';
                'm':za2[i]:='n';
                'M':za2[i]:='N';
                'n':za2[i]:='o';
                'N':za2[i]:='O';
                'o':za2[i]:='p';
                'O':za2[i]:='P';
                'p':za2[i]:='r';
                'P':za2[i]:='R';
                'r':za2[i]:='s';
                'R':za2[i]:='S';
                's':za2[i]:='t';
                'S':za2[i]:='T';
                't':za2[i]:='q';
                'T':za2[i]:='Q';
                'q':za2[i]:='u';
                'Q':za2[i]:='U';
                'u':za2[i]:='w';
                'U':za2[i]:='W';
                'w':za2[i]:='x';
                'W':za2[i]:='X';
                'x':za2[i]:='y';
                'X':za2[i]:='Y';
                'y':za2[i]:='z';
                'Y':za2[i]:='Z';
                'z':za2[i]:='a';
                'Z':za2[i]:='A';
                '1':za2[i]:='0';
                '2':za2[i]:='9';
                '3':za2[i]:='8';
                '4':za2[i]:='7';
                '5':za2[i]:='6';
                '6':za2[i]:='5';
                '7':za2[i]:='4';
                '8':za2[i]:='3';
                '9':za2[i]:='2';
                '0':za2[i]:='1';
                ',':za2[i]:='<';
                '<':za2[i]:=',';
                '.':za2[i]:='>';
                '>':za2[i]:='.';
                '/':za2[i]:='?';
                '?':za2[i]:='/';
                ';':za2[i]:=':';
                ':':za2[i]:=';';
                '\':za2[i]:='|';
                '|':za2[i]:='\';
                '[':za2[i]:='{';
                '{':za2[i]:='[';
                ']':za2[i]:='}';
                '}':za2[i]:=']';
                '=':za2[i]:='+';
                '+':za2[i]:='=';
                '-':za2[i]:='_';
                '_':za2[i]:='-';
                '(':za2[i]:='(';
                ')':za2[i]:=')';
                '*':za2[i]:='&';
                '&':za2[i]:='*';
                '^':za2[i]:='%';
                '%':za2[i]:='^';
                '$':za2[i]:='#';
                '#':za2[i]:='$';
                '@':za2[i]:='!';
                '!':za2[i]:='@';
                end;

end;
end;

procedure zamien_za;
begin
for j:=1 to length(za1) do za2[j]:=za1[j];
odszyfroj;
for j:=1 to length(za1) do od1[j]:=od2[j];
end;

procedure zamien_od;
begin
for j:=1 to length(od1) do od2[j]:=od1[j];
zaszyfroj;
for j:=1 to length(od1) do za1[j]:=za2[j];
end;

procedure odszyfrowanie_klaw;
begin
rewrite(za);
rewrite(od);
Write('Napisz ile lini bedzie mial tekst: ');
Readln(a);
Writeln('Podaj tekst (kazda linie potwierdzaj enterem).');
for h:=1 to a do begin
                    readln(za1);
                    Write(za,za1);
                    zamien_za;
                    Write(od,od1);
                 end;
close(za);
close(od);
end;

procedure odszyfrowanie_plik;
begin
Writeln('Umiesc plik z danymi do zaszyfrowania w c:\ i nazwij go za.txt. Po wykonaniu tej operacji nacisnij obojetnie jaki przycisk');
d:=readkey;
rewrite(od);
reset(za);
a:=0;
while not eof(za) do begin
                    a:=a+1;
                    read(za,za1);
                    zamien_za;
                    Write(od,od1);
                 end;
close(za);
close(od);
end;

procedure szyfrowanie_plik;
begin
Writeln('Umiesc plik z danymi do zaszyfrowania w c:\ i nazwij go od.txt. Po wykonaniu tej operacji nacisnij obojetnie jaki przycisk');
d:=readkey;
rewrite(za);
reset(od);
while not eof(od) do  begin
                    read(od,od1);
                    zamien_od;
                    Write(za,za1);
                   end;
close(za);
close(od);
end;

procedure szyfrowanie_klaw;
begin
rewrite(za);
rewrite(od);
Write('Napisz ile lini bedzie mial tekst: ');
Readln(a);
Writeln('Podaj tekst (kazda linie potwierdzaj enterem).');
for h:=1 to a do begin
                    readln(od1);
                    Write(od,od1);
                    zamien_od;
                    Write(za,za1);
                 end;
close(za);
close(od);
end;





begin
assign(za,'c:\za.txt');
assign(od,'c:\od.txt');
Logo;
repeat
begin
ClrScr;
textcolor(lightred);
gotoxy(30,1);
Writeln('Szyfrator');
textcolor(white);
Writeln('Witaj! Ten program ma za zadanie zaszyfrowac, badz odszyfrowac tekst (prosze nie podawac polskich znakow).');
Write('Chcesz zaszyfrowac czy odszyfrowac plik ?(Z/O)');
d:=readkey;
Writeln;
if (d<>'z') and (d<>'Z') and (d<>'o') and (d<>'O') then repeat
                                                     Write('Zla litera! podaj nowa(Z/O):');
                                                     d:=readkey;
                                                     Writeln;
                                                     until (d='z') or (d='Z') or (d='o') or (d='O');
if (d='z') or (d='Z') then  begin
                            Write('Czy masz juz plik z odszyfrowanym tekstem ?(T/N)');
                            d:=readkey;
                            Writeln;
                            if (d<>'t') and (d<>'T') and (d<>'n') and (d<>'N') then
                                                    repeat
                                                    Write('Zla litera! podaj nowa(T/N):');
                                                    d:=readkey;
                                                    Writeln;
                                                    until (d='t') or (d='T') or (d='n') or (d='N');
                            if (d='t') or (d='T') then szyfrowanie_plik
                                                  else szyfrowanie_klaw;
                            end
                      else  begin
                            Write('Czy masz juz plik z zaszyfrowanym tekstem ?(T/N)');
                            d:=readkey;
                            Writeln;
                            if (d<>'t') and (d<>'T') and (d<>'n') and (d<>'N') then
                                                    repeat
                                                    Write('Zla litera! podaj nowa(T/N):');
                                                    d:=readkey;
                                                    Writeln;
                                                    until (d='t') or (d='T') or (d='n') or (d='N');
                            if (d='t') or (d='T') then odszyfrowanie_plik
                                                  else odszyfrowanie_klaw;
                            end;
ClrScr;
textcolor(lightred);
gotoxy(30,1);
Writeln('Szyfrator');
textcolor(white);
Writeln('Twoj odszyfrowany tekst to: ');
reset(od);
while not eof(od) do begin
                 Read(od,od1);
                 Writeln(od1);
                 end;
close(od);
Writeln('Twoj zaszyfrowany tekst to: ');
reset(za);
while not eof(za) do begin
                 Read(za,za1);
                 Writeln(za1);
                 end;
close(za);
Writeln('Czy chcesz zaszyfrowac/odszyfrowac cos jeszcze?(T/N)');
d:=readkey;
Writeln;
end;
until (d='n') or (d='N');
Writeln('Wiec dziekuje za skorzystanie z mojego programu.');
Writeln('Kamil Rutkowski, zycze milego dnia! :P ');
delay(6000);
end.

Byłbym wdzięczny za rade dlaczego tak jest :P.

Link do komentarza
Udostępnij na innych stronach

No masz, taki kod wstawiać, prosić o znalezienie błędu o.o

Muszisz zlokalizować ten kod, i musisz to zrobić sam, inaczej sie nie nauczysz poprawiać samego siebie.

Musisz przeanalizować działanie programu, i zlokalizować fragment w którym występuje błąd.

Możesz np. wypisywać jakieś ważne zmienne po drodze, aby zobaczyć czy wszystko dobrze idzie.

To sie nazywa debbuging. ^^

Link do komentarza
Udostępnij na innych stronach

To teraz bardziej sprecyzuje :). Po pewnym czasie pracy wyszedł kod(zmodyfikowałem 1 post).

Program już w pełni działa, nie pojawiają się errory jednakże jest pewien błąd. Otóż, w pliku nr1 zapisałem jakiś tekst, potem program to zaszyfrował i wpisał do pliku nr2. Pod koniec programu mam polecenia wypisania obu plików.

Writeln('Twoj odszyfrowany tekst to: ');
reset(od);
while not eof(od) do begin
                 Read(od,od1);
                 Writeln(od1);
                 end;
close(od);
Writeln('Twoj zaszyfrowany tekst to: ');
reset(za);
while not eof(za) do begin
                 Read(za,za1);
                 Writeln(za1);
                 end;
close(za);

I o ile tekst z pliku nr1 wypisuje się normalnie, to z pliku nr2 mam tylko puste linie. Jedyna różnica polega na tym, że w pliku nr1 na początku każdego wiersza mam dziwny kwadracik.

Link do komentarza
Udostępnij na innych stronach

Sprawdź jakie szyfrowanie mają zapisywane pliki. (UTF8 itd.) Jak różne to zmień. Dlatego właśnie przerzuciłem się z pascala na c++. Co drugi mój program działający na plikach nie chciał działać, a zmiana szyfrowania anulowała błędy.

Link do komentarza
Udostępnij na innych stronach



  • Kto przegląda   0 użytkowników

    • Brak zalogowanych użytkowników przeglądających tę stronę.
×
×
  • Utwórz nowe...