Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прог практика rjh.docx
Скачиваний:
8
Добавлен:
20.07.2019
Размер:
205.84 Кб
Скачать

6. Вывести на экран 5 строк, введённых с клавиатуры и отсортировать методом вставки по возрастанию длины строки.(Тома)

Program Exam6;

uses crt;

{A-массив из строк, i,j –счётчики циклов,str-строка}

type StrMas=array[0..5] of string;{Задаём тип - массив из строк}

var A:StrMas; i,j:byte;str:string;

Procedure swap(var x,y:string);

var temp:string;

begin

{Всё что красненьким это процедура сортировки вставками (swap-меняет местами строки, sort использует swap и сортирует их)Это есть в лекции.}

temp:=x; x:=y; y:=temp;

end;

Procedure Sort(var A1:StrMas);

var i,j,l:byte;

begin

a1[0]:='';

For i:=2 to 5 do

begin

j:=i;

while length(a1[j])<length(a1[j-1]) do

{Длина строки}

begin

swap(a1[j],a1[j-1]);

dec(j);

end;

end;

{Цикл вывода отсортированных строк}

For l:=1 to 5 do

writeln (a1[l]);

end;

begin clrscr; {Начало основной программы}

{Цикл ввода 5-ти строк с клавиатуры}

{Приглашение на ввод строки}

{Читаем введённую строку}

{Записываем её в массив А из строк}

For i:= 1 to 5 do

begin

write('Vvedite stroku',i ,'->');

readln(str);

a[i]:=str;

end;

writeln('Posle sortirovki ');

Sort(A);{Вызываем процедуру}

writeln;

readkey;

end.

7. Вывести на экран 5 строк, введённых с клавиатуры и отсортировать методом пузырька по алфавиту.(Макс Пугачёв)

Program Exam7;

uses crt;

type StrMas=array[1..5] of string; {Задаём тип - массив из строк}

{A-массив из строк, i,j –счётчики циклов,str-строка}

var A:StrMas; i,j:byte;str:string;

Procedure swap(var x,y:string);

var temp:string;

begin

temp:=x; x:=y; y:=temp;

end;

Procedure Sort(var A1:StrMas);

var i,j,l:byte;

{Всё что красненьким это процедура сортировки «пузырьком» (swap-меняет местами строки, sort использует swap и сортирует их)Это есть в лекции.}

begin

For i:=1 to 4 do

For j:=5 downto 2 do

if a1[j]<a1[j-1] then

swap(a1[j],a1[j-1]);

{Цикл вывода отсортированных строк}

For l:=1 to 5 do

writeln (a1[l]);

end;

begin clrscr; {Основная программа}

For i:= 1 to 5 do

{Цикл ввода 5-ти строк с клавиатуры}

{Приглашение на ввод строки}

{Читаем введённую строку}

{Записываем её в массив А из строк}

begin

write('Vvedite stroku ',i ,'->');

readln(str);

a[i]:=str;

end;

writeln('Posle sortirovki ');

Sort(A);{Вызов процедуры}

writeln;

readkey;

end.

c – символ, который вводим, при наборе текста. s – заданный символ. Text – текст, который набираем(строка)

index - переменная для фиксации индекса последнего появления заданного символа s.

8. Ввести текст с клавиатуры до нажатия Ins. Известно, что заданный символ встречается в тексте несколько раз и стоит не на последнем месте.Вывести следующий символ за последним появлением заданного.Обработка в подпрограмме, Цикл ввода текста в осн.программе (Я)

Program Exam8;

uses crt;

var c,s:char; text:string;index,i:byte;

Procedure Obrab(var index1:byte; text1:string; s1:char);

{Длина строки text}

var j:byte;

{Цикл от первого до последнего символа строки text, если первый элемент(символ)строки равен заданному s, то тогда фиксируем его индекс index1:= j}

begin

For j:=1 to length(text1) do

if text1[j]=s1 then index1:= j;

end;

begin clrscr;

write('Vvedite zadanniy simvol '); {Ввод заданного сивола s}

readln(s);

write('Vvedite text i nazhmite Ins: ');

{Цикл ввода текста}

{Используем бесконечный цикл с предусловием, прерываем ввод символов по нажатию Ins}

{Читаем символ без его вывода на экран}

{Проверяем является ли нажатая кдавиша функциональной(Ins,Del,End…), признак функц.клавиши- её код начинается с 0. Если код не начинается с 0(if c<>#0), записываем символ в строку text(text:=text + c) и выводим его(write(c)), иначе считываем повторно код сканирования функц. клавиши и проверяем совпадает ли её код сканирования с кодом Ins (c:=readkey; if c=#82 then break) если да, то выходим из цикла break.}

text:='';

while TRUE do

begin

c:=readkey;

if c<>#0 then

begin

text:=text + c;

write(c);

end

else

begin

c:=readkey;

if c=#82 then break;

{Код сканирования Ins}

end;

{Вызываем процедуру, она возвращает значение index(последнее появление заданного символа s)}

end;

Obrab(index,text,s);

writeln;

writeln('Sleduushiy za poslednim ', s, ' simvol ',text[index+1]);

{Выводим следующий за последним появлением заданного}

Конник придрался к тому, что в условии написано, что выходной параметр символ, а у меня выходной параметр индекс…

readkey;

end.

9. Если нажата клавиша с дополнительной клавиатуры(функциональная:Ins,Del,Home,PgDn…), то вывести символ клавиши и его код сканирования, иначе, если нажата обычная клавиша, вывести сообщение об ошибке.Обработка в осн. программе. (Люся)(Формулировка задания неточная).

Program Exam9;

uses crt;

var c: char;

begin clrscr;

writeln(' Klavisha | Cod ');

{Цикл чтения клавиш}

{Используем бесконечный цикл с предусловием, прерываем по нажатию обычной клавиши, перед этим выводим сообщение об ошибке}

{Читаем символ без его вывода на экран}

{Проверяем является ли нажатая кдавиша функциональной(Ins,Del,End…), признак функц.клавиши- её код начинается с 0. Если код не начинается с 0(if c<>#0),выводим сообщение об ошибке Error!!! и выходим из цикла break; , иначе считываем повторно код сканирования функц. клавиши и выводим символ, соответствующий коду сканирования и сам код сканирования(c:=readkey; writeln(c:4, ' | ',ord(c))

Вывести код получилось, а название клавиш нет, не знаю как…

writeln('================');

while true do begin

c:= readkey;

if c <> #0 then

begin

writeln('Error!!! ');

break;

end

else

begin

c:= readkeyж

writeln(c:4, ' | ',ord(c))

end;

end;

readkey;

end.

Код сканирования

Клавиша

71

Home (начало)

72

Стрелка вверх

73

PgUp (страница вверх)

75

Стрелка влево

77

Стрелка вправо

79

End (конец)

80

Стрелка вниз

81

PgDn (страница вниз)

82

Ins (вставка)

83

Del (удалить)

84-93

F11-F20 (Shift-F1 - Shift-F10)