Вывести на экран 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;

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

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(ifc<>#0), записываем символ в строку text(text:=text + c) и выводим его(write(c)), иначе считываем повторно код сканирования функц. клавиши и проверяем совпадает ли её код сканирования с кодом Ins (c:=readkey; ifc=#82 thenbreak) если да, то выходим из цикла 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…), то вывести символ клавиши и его код сканирования, иначе, если нажата обычная клавиша, вывести сообщение об ошибке.Обработка в осн. программе. (Люся)(Формулировка задания неточная).

ProgramExam9;

usescrt;

varc: char;

beginclrscr;

writeln(' Klavisha | Cod ');

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

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)

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-01-08 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: