|
Участник форума
Регистрация: 10.02.2009
Сообщений: 203
Провел на форуме: 3226894
Репутация:
379
|
|
Нужна помощь по паскалю.!
то сам не догоняю как сделать!
Вообщем есть текст программы но он не работает.!
Программа должна удалять из каждой тройки букв среднюю букву.!тип циклический.
проблема в том что я написал, что бы было чтение данных из файла..!а нужно что бы они вводились с клавиатуры, и конец строчки заканчивалась .(точкой)
т.е вводишь данные.
1 строчка йцукен
конец строчки .
начальное слово йцукен......преобразованное йукн
.
также я хз зачем создал еще Pysk, Pysk1, Ptr1
Uses Crt;
type
pSpisok = Slova;
Slova = Record
slv : string[10];
next : pSpisok
end;
var
Head1, Tail1, Head2, Tail2, Ptr1, Ptr2, Pysk1, Pysk2 : pSpisok;
St, Str : string[10];
F : text;
I, K, N : integer;
Name : string;
begin
ClrScr;
Writeln ('Fail dolgen sodergat slova, raspologennie postrochno');
Writeln ('Vvedite imya faila: ');
Readln (Name);
Assign (F, Name);
Reset (F);
Head1 := Nil;
Tail1 := Nil;
Head2 := Nil;
Tail2 := Nil;
ClrScr;
While not Eof(F) do
begin
Readln (F, St);
New (Ptr1);
Ptr1^.Slv :=St;
Ptr1^.Next := Nil;
If Tail1 <> Nil then
Tail1^.Next := Ptr1;
Tail1 := Ptr1;
If Head1 = Nil then
Head1 := Ptr1;
end;
Tail1^.Next := Head1;
Ptr1 := Head1;
Pysk1 := Head1;
repeat
Str := Ptr1^.Slv;
N := length(str) - 1 div 3;
If Str <> '' then K := 1;
for I := 1 to N do
begin
Delete (Str, K+1, 1);
K := K + 2;
end;
New (Ptr2);
Ptr2^.Slv := Str;
Ptr2^.Next := Nil;
If Tail2 <> Nil then
Tail2^.Next := Ptr2;
Tail2 := Ptr2;
If Head2 = Nil then
Head2 := Ptr2;
Pysk1 := Ptr1^.Next;
Ptr1 := Pysk1;
Until Pysk1 = Head1;
Tail2^.Next := Head2;
Pysk1 := Head1;
Pysk2 := Head2;
Ptr1 := Head1;
ptr2 := Head2;
repeat
Write (Ptr1^.Slv,' ');
Writeln (Ptr2^.Slv);
Pysk1 := Ptr1^.Next;
Pysk2 := Ptr2^.Next;
Ptr1 := Pysk1;
Ptr2 := Pysk2;
until Pysk2 = Head2;
repeat until KeyPressed;
End.
Последний раз редактировалось snAKe33; 15.04.2009 в 13:36..
|