Находит максимум среди 5 введенных целых чисел и выводит его.
ОТДЕЛ Задание+;
ИСПОЛЬЗУЕТ Вывод ИЗ "...\Отделы\Обмен\", Приём;
ПЕР
N, сч, ч, кв: ЦЕЛ;
УКАЗ
N := Приём.Число();
ОТ сч := 0 ДО N ВЫП
кв := сч * сч;
ч := сч;
КОЛЬЦО
ПОКА ч > 0 И кв > 0 ВЫП
ЕСЛИ ч ОСТАТОК 10 # кв ОСТАТОК 10 ТО
ВЫХОД
КОН;
ч := ч ДЕЛИТЬ 10;
кв := кв ДЕЛИТЬ 10
КОН;
Вывод.ЧЦел("^%d", сч, 0, 0, 0)
КОН
КОН
КОН Задание.
Отдел "Приём", раз уж Издатель не успел его включить в выпуск (хотя стоило бы рассматривать это как стандартный ввод):
ОТДЕЛ Приём;
ИСПОЛЬЗУЕТ
ОС ИЗ "...\Отделы\Обмен\",
КОС ИЗ "...\Отделы\Обмен\",
Ввод ИЗ "...\Отделы\Обмен\",
Вывод ИЗ "...\Отделы\Обмен\",
Знак ИЗ "...\Отделы\Иное\";
ЗАДАЧА Строка-(строка+: РЯД ИЗ ЗНАК);
(* Текстовая строка *)
ПЕР
отКлавиш: Ввод.ОтКлавиш;
отМышки: Ввод.ОтМышки;
Счётчик: ЦЕЛ;
УКАЗ
Счётчик := 0;
КОЛЬЦО
ЕСЛИ КОС.Опрос(отКлавиш, отМышки) = Ввод.клавиши ТО
ЕСЛИ отКлавиш.знак = 0DX ТО
ЕСЛИ Счётчик < РАЗМЕР(строка) ТО строка[Счётчик] := 0X КОН;
ВЫХОД
АЕСЛИ отКлавиш.код = 08H ТО
ЕСЛИ Счётчик > 0 ТО
строка[Счётчик-1] := 0X; УМЕНЬШИТЬ(Счётчик);
Вывод.ЗнакЦепи(отКлавиш.знак); Вывод.ЗнакЦепи(" ");
Вывод.ЗнакЦепи(отКлавиш.знак)
КОН
АЕСЛИ (отКлавиш.код = 2DH) И (ОС.РазмерЦепочкиОбменника() # 0) ТО
ПОКА Счётчик > 0 ВЫП
строка[Счётчик-1] := 0X; УМЕНЬШИТЬ(Счётчик);
Вывод.ЗнакЦепи(8X); Вывод.ЗнакЦепи(" "); Вывод.ЗнакЦепи(8X)
КОН;
ОС.ЦепочкуИзОбменника(строка);
ЕСЛИ ОС.РазмерЦепочкиОбменника() > РАЗМЕР(строка) ТО
Счётчик := РАЗМЕР(строка)
ИНАЧЕ Счётчик := ОС.РазмерЦепочкиОбменника() КОН;
Вывод.Цепь(строка)
АЕСЛИ отКлавиш.знак = 0X ТО
ИНАЧЕ
ЕСЛИ Счётчик < РАЗМЕР(строка) ТО
строка[Счётчик] := отКлавиш.знак;
УВЕЛИЧИТЬ(Счётчик);
Вывод.ЗнакЦепи(отКлавиш.знак)
КОН
КОН
ИНАЧЕ ОС.Спать(50) КОН
КОН
КОН Строка;
ЗАДАЧА Число-(): ЦЕЛ;
(* Целое число *)
ПЕР
отКлавиш: Ввод.ОтКлавиш;
отМышки: Ввод.ОтМышки;
Счётчик, сч: ЦЕЛ;
Результат: ЦЕЛ;
Буфер: ДОСТУП К РЯД ИЗ ЗНАК;
Отрицательное: КЛЮЧ;
УКАЗ
Результат := 0; Счётчик := 0; Отрицательное := ОТКЛ;
КОЛЬЦО
ЕСЛИ КОС.Опрос(отКлавиш, отМышки) = Ввод.клавиши ТО
ЕСЛИ отКлавиш.знак = 0DX ТО
ЕСЛИ Отрицательное ТО ВОЗВРАТ -Результат ИНАЧЕ ВОЗВРАТ Результат КОН
АЕСЛИ отКлавиш.код = 08H ТО
ЕСЛИ Счётчик > 0 ТО
Результат := Результат ДЕЛИТЬ 10;
Вывод.ЗнакЦепи(отКлавиш.знак); Вывод.ЗнакЦепи(" "); Вывод.ЗнакЦепи(отКлавиш.знак); УМЕНЬШИТЬ(Счётчик)
АЕСЛИ Отрицательное ТО
Отрицательное := ОТКЛ;
Вывод.ЗнакЦепи(отКлавиш.знак); Вывод.ЗнакЦепи(" "); Вывод.ЗнакЦепи(отКлавиш.знак)
КОН
АЕСЛИ (отКлавиш.код = 2DH) И (ОС.РазмерЦепочкиОбменника() # 0) ТО
ПОКА Счётчик > 0 ВЫП
УМЕНЬШИТЬ(Счётчик); Вывод.ЗнакЦепи(8X); Вывод.ЗнакЦепи(" "); Вывод.ЗнакЦепи(8X)
КОН;
ЕСЛИ Отрицательное ТО
Отрицательное := ОТКЛ; Вывод.ЗнакЦепи(8X); Вывод.ЗнакЦепи(" "); Вывод.ЗнакЦепи(8X)
КОН;
Результат := 0;
СОЗДАТЬ(Буфер, ОС.РазмерЦепочкиОбменника());
ОС.ЦепочкуИзОбменника(Буфер^);
ЕСЛИ (Буфер[0] >= "0") И (Буфер[0] <= "9") ТО
Результат := Результат * 10 + (ВЦЕЛ(Буфер[0]) - ВЦЕЛ("0"));
Вывод.ЗнакЦепи(Буфер[0]); УВЕЛИЧИТЬ(Счётчик)
АЕСЛИ Буфер[0] = "-" ТО Вывод.ЗнакЦепи("-"); Отрицательное := ВКЛ КОН;
ОТ сч := 1 ДО РАЗМЕР(Буфер^)-1 ВЫП
ЕСЛИ (Буфер[сч] >= "0") И (Буфер[сч] <= "9") ТО
Результат := Результат * 10 + (ВЦЕЛ(Буфер[сч]) - ВЦЕЛ("0"));
Вывод.ЗнакЦепи(Буфер[сч]); УВЕЛИЧИТЬ(Счётчик)
КОН
КОН;
Буфер := ПУСТО
АЕСЛИ (отКлавиш.знак = "-") И (НЕ Отрицательное) ТО
ЕСЛИ Результат = 0 ТО Отрицательное := ВКЛ; Вывод.ЗнакЦепи("-") КОН
АЕСЛИ отКлавиш.знак = 0X ТО
АЕСЛИ (Результат < МАКС(ЦЕЛ) ДЕЛИТЬ 10) И ((отКлавиш.знак >= "0") И (отКлавиш.знак <= "9")) ТО
Результат := Результат * 10 + (ВЦЕЛ(отКлавиш.знак) - ВЦЕЛ("0"));
Вывод.ЗнакЦепи(отКлавиш.знак); УВЕЛИЧИТЬ(Счётчик)
КОН
ИНАЧЕ ОС.Спать(50) КОН
КОН
КОН Число;
ЗАДАЧА Ждать-;
(* Простаиваем, пока не будет нажата любая клавиша *)
ПЕР
отКлавиш: Ввод.ОтКлавиш;
отМышки: Ввод.ОтМышки;
УКАЗ
ПОКА КОС.Опрос(отКлавиш, отМышки) # Ввод.клавиши ВЫП
ОС.Спать(50)
КОН
КОН Ждать;
КОН Приём.
Ответ:
1.
<em>var s: string;
</em>
<em>
</em>
<em>begin
</em>
<em>write('Введите слово: ');
</em>
<em>readln(s);
</em>
<em>while (s<>'хватит') do
</em>
<em> begin
</em>
<em> writeln(s+'!');
</em>
<em> write('Введите слово: ');
</em>
<em> readln(s);
</em>
<em> end;
</em>
<em> writeln('До следующих встреч');
</em>
<em>end.
</em>
<em />
2.
<em>var i,n,max,min: integer;
</em>
<em>
</em>
<em>begin
</em>
<em>randomize();
</em>
<em>n:=random(201)-100;
</em>
<em>max:=n;
</em>
<em>min:=n;
</em>
<em>write(n,' ');
</em>
<em>For i:= 2 to 20 do
</em>
<em> begin
</em>
<em> n:=random(201)-100;
</em>
<em> write(n,' ');
</em>
<em> if (n>max) then max:=n;
</em>
<em> if (n<min) then min:=n;
</em>
<em> end;
</em>
<em>writeln('Наибольшее число: ',max);
</em>
<em>writeln('Наименьшее число: ',min);
</em>
<em>end.
</em>
Решение:
const M = 10;
var a : array [1..M] of integer;
i,max, odd : integer;
begin
odd := 0;
{Заполнение массива}
for i := 1 to M do
begin
write('Input a[',i,']:' );
readln(a[i]);
end;
{Вывод массива на экран}
for i := 1 to M do
write(a[i]:2,' ');
writeln;
{Поиск максимального в массиве}
max := a[1];
for i := 2 to M do
if (a[i] > max) then
max := a[i];
writeln('Максимальный элемент массива: ',max);
{Поиск всех нечетных чисел в массиве и замена их на 1}
for i := 1 to M do
if (a[i] mod 2 = 1) then
begin
a[i] := 1;
odd := 666;
end;
{Вывод сообщения об отсутствии нечетных чисел}
if (odd = 0) then
writeln('В массиве нечетных чисел нет');
{Вывод преобразованного массива}
for i := 1 to M do
write(a[i]:2,' ');
writeln;
readln;
end.
В фигурных скобках - комментарии, из программы можно удалять безболезненно. M - количество элементов в массиве.
Контрольные примеры для массива из 10 элементов:
1) Массив "1 2 3 4 5 6 7 8 9 10" будет преобразован в "1 2 1 4 1 6 1 8 1 10", максимальный элемент (до преобразования) 10
2) Массив " 2 2 2 2 2 2 2 2 2 2" будет преобразован в " 2 2 2 2 2 2 2 2 2 2", на экран будет выведено сообщение "в массиве нечетных чисел нет", максимальный элемент 2
<span>населенные пункты </span><span>Денисовка и Филатово </span>не являются соседними .