KapitanRudobrody Napisano Listopad 26, 2011 Zgłoś Share Napisano Listopad 26, 2011 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 ): 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 . Link do komentarza Udostępnij na innych stronach More sharing options...
[Ekspert] Hakken Napisano Listopad 26, 2011 Zgłoś Share Napisano Listopad 26, 2011 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 More sharing options...
KapitanRudobrody Napisano Listopad 26, 2011 Autor Zgłoś Share Napisano Listopad 26, 2011 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 More sharing options...
l0wcagl0w Napisano Listopad 28, 2011 Zgłoś Share Napisano Listopad 28, 2011 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 More sharing options...