![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Цель задания:
1. Ознакомление с возможностями представления строк символов в виде списков.
2. Закрепление навыков выполнения операций над списками.
Постановка задачи:
Ввести с клавиатуры строку символов, формируя из ее элементов однонаправленный список. Обработать список согласно конкретному варианту. Распечатать результат.
Вариант задания:
Поменять местами первый символ и символ, стоящий посередине строки;
{Представление строк символов в виде списков}
Program T853;
Uses CRT;
Type
PListHead=^TList;
TList=Record
Sym:Char;
Next:PListHead;
End;
Var
str1, str2:String;
P:PListHead; {указатель нa голову списка}
Procedure InitString;
Begin
WriteLn('Введите строку символов');
ReadLn(str1);
End;
{формируем из строки символов однонаправленный список}
Procedure ConvertStringToList;
Var
i:integer;
Head,P1,P2:PListHead;
Label
Exits;
Begin
P:=nil;
P1:=nil;
P2:=nil;
{создаем и заполняем голову списка и следующий за ней элемент}
Head^.Sym:=str1[1];
New(P1);
P1^.Sym:=str1[2];
Head^.Next:=P1;
{создаем и заполняем остальные элементы}
For i:=3 to 255 Do Begin
If Ord(str1[i])=0 Then Goto Exits;
New(P2);
P2^.Sym:=str1[i];
P1^.Next:=P2;
P1:=P2;
End;
Exits:
P2^.Next:=nil;
P:=Head;
End;
Procedure EditList;
var
i,i1,i2:integer;
P1,P2,P3,PMiddle,PEnd:PListHead;
Begin
P1:=P;
i1:=-1; i2:=0;
While P1^.Next<>nil Do Begin {находим общее количество элементов(i1)}
PEnd:=P1; {PEnd - предпоследний элемент}
P1:=P1^.Next; {P1 - последний элемент}
inc(i1);
End;
i2:=i1 div 2; {порядковый номер элемента в середине списка}
P2:=P;
For i:=0 to i2 Do Begin
PMiddle:=P2; {PMiddle - элемент, предшествующий середине списка}
P2:=P2^.Next; {P2 - середина списка}
End;
{перестановка ссылок}
PMiddle^.Next:=P1;
PEnd^.Next:=P2;
P3:=P2^.Next;
P2^.Next:=P1^.Next;
P1^.Next:=P3;
End;
{*************** Процедура вывода на печать списка *********************}
Procedure Result;
var
P1:PListHead;
i:integer;
Begin
p1:=P;
i:=1;
{ формирование выходной строки }
Repeat
str2[0]:=Chr(i); {устанавливаем новую длину строки}
str2[i]:=P1^.Sym; {присваиваем значение элементу строки}
inc(i);
P1:=P1^.Next;
Until P1=nil;
WriteLn(' _______ Результат работы программы ___________ ');
WriteLn;
WriteLn('Входная строка символов: ',str1);
WriteLn('Выходная строка символов: ',str2);
WriteLn;
End;
Begin
InitString;
ConvertStringToList;
EditList;
Result;
WriteLn('Press any key...');
Repeat Until KeyPressed;
End.
Результат работы программы:
Введите строку символов произвольной длины ABCDEFG Укажите какой элемент поменять местами с элементом в середине строки: цифра "1" - первый, цифра "2" - последний. _______ Результат работы программы ___________ Входная строка символов: ABCDEFG Выходная строка символов: DBCAEFG Press any key... |
Варианты заданий.
1) удалить два первые символа строки;
2) удалить последние три символа строки;
3) удалить все буквы К;
4) удвоить все символы *;
5) добавить в конец строки слово END;
6) поменять местами первый и последний символы строки;
7) поменять местами первый и второй символы строки;
8) поменять местами первый и предпоследний символы строки;
9) подсчитать в строке число букв А и В, и если букв А больше, чем букв В, то удалить в строке все символы В;
10) удалить все символы, равные первому символу строки;
11) подсчитать число символов в строке, и если число нечетное, то удалить символ, стоящий посередине строки;
12) поменять местами второй и предпоследний символы строки;
13) удалить два последние символа строки;
14) удалить все символы строки, повторяющиеся более двух раз;
15) устранить дублирование символов;
16) добавить в начало строки слово BEGIN;
17) увеличить количество символов на 5;
18) подсчитать число символов в строке, и если число четное, то добавить в конец строки один символ;
19) удалить все буквы Д;
20) добавить в конец строки символ, равный первому символу строки;
21) удалить из строки символы, порядковый номер которых кратен 3;
22) удалить из строки все символы с нечетным порядковым номером;
23) удалить из строки символы с четным порядковым номером;
24) удалить из строки символы, порядковый номер которых является простым числом;
25) поменять местами первый символ и символ, стоящий посередине строки;
Дата публикования: 2015-02-22; Прочитано: 386 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!