Turbo Pascal >> Procedura

Ostatnio przeglądałem pewną ksiąźke o Pascalu (pascal Help), i znalazłem takie zadanko które mnie zaciekawiło, oto treść:
Dane są następujące definicje i deklaracje
const
MAX = 200;
type
Slownik = record
slowa : array[1..MAX] of string[20];
licz : 1..MAX; {liczba słów w słowniku}
end;

Napisać procedurę
procedure PackString(var str : string; var dict : Slownik);

która w napisiestr wszystkie wyrazy znajdujące się w słownikudict zastąpi sekwencją znaków postaci [x] (gdzie X jest indeksem słowa w słowniku). Przez wyraz będziemy rozumieć dowolny ciąg wielkich i małych liter. UWAGA! nie trzeba brać pod uwagę wielkości liter, tzn. wyraz w słowniku musi dokładnie odpowiadać wyrazowi z napisustr.
Przykład :
Zawartość słownika : 'To', 'jest', 'tekst'
Napis wejściowy : 'Uwaga ! Tojest zwykły i prosty tekst'
Wynik : 'Uwaga ! [1] [2] zwykły i prosty [3]'
Podkreślono wyrazy występujące w słowniku.


Co to wogóle jest za zadanie, prosze kogoś aby poświęcił mi 2 min i mi go objaśnił :? :?
Pozdrawiam Kamil

Odpowiedzi: 5

To jest jakieś rozwiązanie Twojego problemu, nie wiem czy Ci będzie pasowało, ja to pisałem w Delphi. Czy będzie działało w Pascal'u to nie wiem. Jak bys miał jakiś problem to chętnie nad nim posiedze bo tez się ucze pisać programiki.

Pozdrawiam :D
program slowniki;

{$APPTYPE CONSOLE}

uses
sysutils;

const
MAX = 200;

type
Slownik = record
slowa : array[1..MAX] of string[20];
licz : 1..MAX; {liczba słów w słowniku}
end;

var
dictionary:Slownik; //deklaracja zmiennej typu slownik
napis:string; //deklaracja napisu na ktorym bedzxiemy pracowac

procedure PackString(var str : string; var dict : Slownik);
var
i:integer;
tmp:string;

begin
str := str + ' '; //tutaj dodajemy spacje na koncu zeby ciag konczyl sie spacja
for i:=1 to MAX do
begin
//zamieniamy index slowa na postac [index]
tmp := '[' + inttostr(i) + ']' + ' ';

//szukamy czy w ciagu znakow znajduje sie nasz napis
while pos(dict.slowa[i], str) > 0 do
begin

//jesli tak to wstawiamy za nim nasz zmodyfikowany index
insert(tmp, str, pos(dict.slowa[i], str) + length(dict.slowa[i]));

//i usuwamy slowo po ktorym wstawilismy index
delete(str, pos(dict.slowa[i], str), length(dict.slowa[i]));
end;
end;
writeln('To jest napis po przetworzeniu: ', str);
end;

procedure sl(); //ta procedurka wpisuje kilka slow do slownika
begin
dictionary.slowa[1] := 'To '; //zauwaz ze po kazdym wyrazie wstawiam spacje
dictionary.licz := 3; //zeby nie zamienial 'tekstowy' na [3]owy
dictionary.slowa[2] := 'jest ';
dictionary.slowa[3] := 'tekst ';
end;

begin
sl();
write('Podaj zdanie: '); readln(napis);
PackString(napis, dictionary);
readln;
end.
pulkownik
Dodano
31.01.2006 12:23:58
A czytać potrafisz ?
Zawartość słownika : 'To', 'jest', 'tekst'
Anonymous
Dodano
25.01.2006 14:08:48
Tylko ja nie wiem jakie wyrazy mają być zamienione z tego słownika!
pikinier12
Dodano
25.01.2006 14:02:40
A to co to jest ?

Zawartość słownika : 'To', 'jest', 'tekst'
Napis wejściowy : 'Uwaga ! Tojest zwykły i prosty tekst'
Wynik : 'Uwaga ! [1] [2] zwykły i prosty [3]'
Podkreślono wyrazy występujące w słowniku.

Toź na podstawie tego idzie załapać źe program porównuje stringi i jak trafi to w miejsce stringu wpisuje cyferkę.
Anonymous
Dodano
25.01.2006 12:39:47
Nie ma, zresztą jak by było to bym nie pisał :D
pikinier12
Dodano
25.01.2006 12:25:46
pikinier12
Dodano:
25.01.2006 12:12:30
Komentarzy:
5
Strona 1 / 1