Program Exam7;
uses crt;
type StrMas=array[1..5] of string; {Задаёмтип - массивизстрок}
{A-массив из строк, i,j –счётчики циклов,str-строка} |
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 и сортирует их)Это есть в лекции.} |
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]);
{Цикл вывода отсортированных строк} |
writeln (a1[l]);
end;
beginclrscr;{Основная программа}
For i:= 1 to 5 do
{Цикл ввода 5-ти строк с клавиатуры} {Приглашение на ввод строки} {Читаем введённую строку} {Записываем её в массив А из строк} |
write('Vvedite stroku',i,'->');
readln(str);
a[i]:=str;
end;
writeln('Posle sortirovki ');
Sort(A);{Вызовпроцедуры}
writeln;
readkey;
end.
c – символ, который вводим, при наборе текста. s – заданный символ. Text – текст, который набираем(строка) index - переменная для фиксации индекса последнего появления заданного символа s. |
Program Exam8;
uses crt;
var c,s:char; text:string;index,i:byte;
Procedure Obrab(var index1:byte; text1:string; s1:char);
{Длина строки text} |
{Цикл от первого до последнего символа строки text, если первый элемент(символ)строки равен заданному s, то тогда фиксируем его индексindex1:= j} |
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(ifc<>#0), записываем символ в строку text(text:=text + c) и выводим его(write(c)), иначе считываем повторно код сканирования функц. клавиши и проверяем совпадает ли её код сканирования с кодом Ins (c:=readkey; ifc=#82 thenbreak) если да, то выходим из цикла break.} |
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} |
{Вызываем процедуру, она возвращает значение index(последнее появление заданного символа s)} |
Obrab(index,text,s);
writeln;
writeln('Sleduushiy za poslednim ', s, ' simvol ',text[index+1]);
{Выводим следующий за последним появлением заданного} Конник придрался к тому, что в условии написано, что выходной параметрсимвол, а у менявыходной параметр индекс… |
end.
9. Если нажата клавиша с дополнительной клавиатуры(функциональная:Ins,Del,Home,PgDn…), то вывести символ клавиши и его код сканирования, иначе, если нажата обычная клавиша, вывести сообщение об ошибке.Обработка в осн. программе. (Люся)(Формулировка задания неточная).
ProgramExam9;
usescrt;
varc: char;
beginclrscr;
writeln(' Klavisha | Cod ');
{Цикл чтения клавиш} {Используем бесконечный цикл с предусловием, прерываем по нажатию обычной клавиши, перед этим выводим сообщение об ошибке} {Читаем символ без его вывода на экран} {Проверяем является ли нажатая кдавиша функциональной(Ins,Del,End…), признак функц.клавиши- её код начинается с 0. Если код не начинается с 0(ifc<>#0),выводим сообщение об ошибке Error!!! и выходим из цикла break;, иначе считываем повторно код сканирования функц. клавиши и выводим символ, соответствующий коду сканирования и сам код сканирования(c:=readkey;writeln(c:4, ' | ',ord(c)) Вывести код получилось, а название клавиш нет, не знаю как… |
whiletruedobegin
c:= readkey;
if c <> #0 then
begin
writeln('Error!!! ');
break;
end
else
begin
c:= readkeyж
writeln(c:4, ' | ',ord(c))
end;
end;
readkey;
end.
Код сканирования | Клавиша |
Home (начало) | |
Стрелка вверх | |
PgUp (страница вверх) | |
Стрелка влево | |
Стрелка вправо | |
End (конец) | |
Стрелка вниз | |
PgDn (страница вниз) | |
Ins (вставка) | |
Del (удалить) | |
84-93 | F11-F20 (Shift-F1 - Shift-F10) |