Słownik w Pascalu.

0

Witam.. mam pytanie. Muszę napisać słownik polsko-angielski. Program ten powinien gromadzić polskie słowa oraz ich angielskie tłumaczenia (oczywiście nie cały słownik) w tablicy (lub tablicach) oraz umożliwiać wprowadzanie nowego słowa do słownika jeżeli jeszcze się w nim nie znajduję.. jak to zrobić?? Macie jakieś pomysły ?

0

Jak to zrobić? Siąść i napisać. Ja bym stworzył plik amorficzny z typem rekordowym, gdzie były by zapisane takie informacje na początku ilośc wpisów, ewentualnie wcześniej jakiś nagłowek, żeby mieć sprawdzić czy program ma do czynienia z właściwym śłownikiem. Później zapisujemy typ rekordowy, długośc polskiego słowa, polskie słowo, długośc angielskiego słowa, angielskie słowo. Odczyt polegał by na odczytaniu ilośc słow, ustawieniu na tę długośc rozmiaru tablicy, a później odczyt. Dzięki zadeklarowanniu pól rekordu z długościami słów (wystarczą typu Byte) nie musisz narzucać długości stringów aby odczyt i zapis był prawidlowy. Odczytujesz tylko string o takiej długośc jaką on ma, wcześniej ustawiając go przez SetLength na pobraną z pliku długość. Także nie wiem w czym problem, tylko siąść i pokobinować. Wszystko opierać się będzie na operacjach plikowych charakterystycznych dla Pascala, ewentualnie WinAPI z modułu Windows. Wyszukiwanie to pętla po tablicy dynamicznej z tymi rekordami i porównywania słowa polskiego lub angielskiego z wpisanym. Dodatkowo można zrobić sortowanie na przykład QuickSortem alfabetycznie według słowa po polsku lub angielsku. Tyle.

0

w tym rzecz , że ja mało ogarniam Pascala ;) Może ktoś ocenić ten kod (chodzi tu głownie o procedury) ? Są dobre ? Jeśli nie to jakie poprawki? Naprawdę nie wiem jak się do tego zabrać.

program angpol;
uses crt;
 type
     tlumaczenie = record
                 a:string;
                 b:string;
               end;

     wskaznik=^element;
     element = record
                 dana:tlumaczenie;
                 next:wskaznik;
                 prev:wskaznik;
               end;
 var
    first:wskaznik;
    i:integer;



procedure wyszukajslowo(var a: integer; czy_znaleziono: boolean);
var slowko:string;
    l:integer;  


begin
    a:=0;
czy_znaleziono := false;
while NOT EOF(pol.txt) do
begin
   inc(a);
        readLN(pol.txt, slowko);
        if szukane = slowko then begin
                        czy_znaleziono = true;
                break;
        end;

if NOT czy_znaleziono then writeLN('Nie ma takiego slowa w slowniku')
else begin
for l:=1 to a do
   readLN(eng.txt, tlumaczenie);
end;

               
end;



procedure dodajdolisty(var f:wskaznik; a:integer);
 var
    nowy:wskaznik;
 begin
    if f=nil then
       begin
         new(nowy);
         nowy^.dana:=a;
         nowy^.next:=nil;
         nowy^.prev:=nil;
         f:=nowy;
       end
     else
       end;



var
  w:wskaznik;
  a,b,el,c,d:integer;
  wybor:integer;

 begin
 clrscr;

  writeln;
   writeln("Wybierz numer z menu i wcisnij enter");
   writeln;
   writeln("1 Przetlumacz z angielskiego na polski");
   writeln("2 Przetlumacz z polskiego na angielski");
   writeln("3. Dodaj tlumaczenie");
   writeln("4. KONIEC");

  case wybor of
  1:

  2:

  3:

  4:

  readln;
end. 
0

Sformatuj kod po ludzku i wstaw w odpowiednie znaczniki to może ktoś spojrzy. Bo ja tylko widzę jedno, że kolejna osoba uskutecznia dziwną "modę". Polega ona na tym, że do zwócenia pewnych wartości spokojnie można użyć funkcji, a piszący upiera się na procedurę.

0
procedure wyszukajslowo(var a: integer; czy_znaleziono: boolean);

1.To powinna być funkcja.
2.Nie jestem pewien czy tyczy się to wszystkich odmian Pascala, ale w każdym razie FPC przypisuje var pod pojedynczy parametr, więc czy_znaleziono już nie zostanie przekazane w tej konwencji.
3.Nazwy typów powinny zaczynać się od T, a typów wskaźnikowych od P
4.W ogóle nie masz pojęcia, jak obsługuje się w pliki w Pascalu - przeczytaj poradnik, potem pisz kod.
5.Po co lista? Tablica dynamiczna byłaby imho rozsądniejsza i czas dostępu byłby O(1).

0

2.Nie jestem pewien czy tyczy się to wszystkich odmian Pascala, ale w każdym razie FPC przypisuje var pod pojedynczy parametr

nie do końca:

procedure foobar(var a,b,c:integer; d,e,f:integer; var g:integer)

parametry a, b, c i g są ze słowem var, a d, e i f bez.

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