Полный текст:
ВТОРОЕ КОНТРОЛЬНОЕ ЗАДАНИЕ
Вариант 2
Задача 1
Даны целые числа a1,
a2, ..., an. Наименьший член последовательности a1,
a2, ..., an заменить целой частью среднего арифметического всех членов,
остальные члены оставить без изменения. Если в
последовательности несколько членов
со значением min(a1, a2, ..., an), то заменить последний по порядку.
Описание алгоритма
Объявление переменных
n
– количество элементов в массивеs
– среднее арифметическое всех элементовi
– переменная для итерации циклаmin
– индекс минимального элемента в массивеa
– исходный массив чисел
Описание основного решения
Read(n)
– ввод размера массиваs
:= 0 – ничего не суммировали, среднее арифметическое равно 0Для iот 1 до n,
выполнятьВвод iэлемента массиваСуммирование этого элементаmin
:= 1 – пока минимальный элемент находится на 1 местеДля iот 1 до n,
выполнятьЕсли текущий элемент меньше либо равен
минимальному найденному Обновляем
индекс минимального элементаСчитаем целую часть среднего арифметическогоНа позицию с минимальным элементом записываем
найденное среднее арифметическое значениеДля iот 1 до n,
выполнятьВыводим iэлемент массиваОжидаем нажатия клавиши
Текстпрограммы
Uses Crt;
Varn , s , i , min : integer;
a :
array[1..100] of integer;
Begin
Write('Введите
N: '); Read(n); s := 0;
fori := 1
to n do begin
Write('Введите
A[' , i , ']: ');
Read(a[i]);
s
:= s + a[i];
end;
min := 1;
fori := 2
to n do
if
a[i] <= a[min] then
min
:= i;
s := s div
n;
a[min] := s;
WriteLn('Результирующий массив');
fori := 1 to n do
Write(a[i]
, ' ');
ReadKey;
End.
Результат выполнения программы
Задача 2
var k : integer;
c :
array[1..n, 1..m] of char;
Определить k – количество
различных элементов массива
c (т.е. повторяющиеся элементы считать один раз).
Указание: для хранения счетчиков для всех символов
использовать массив типа array[char] ofinteger.
Описание алгоритма
Объявление переменных
n
– количество строк в матрицеm
– количество столбцов в матрицеk
– счетчик количества различных элементовi
, j – переменные для
итерации циклаc
– считываемый элементcount
– массив-счетчик
Описание основного решения
ReadLn(n) – ввод количества строк
матрицыReadLn(m) – ввод количества столбцов
матрицыДля cот ‘a’
до ‘z’, выполнятьИнициализируем количество раз, итерационная
переменная встречалась в матрицеДля iот 1 до n,
выполнятьДля jот 1 до n,
выполнять Ввод
текущего элемента Увеличение счетчика, сколько раз такой элемент
повторялсяИнициализируем количество различных элементовДля cот ‘a’
до ‘z’, выполнятьЕсли такой символ хоть раз встречался Увеличиваем количество различных символовВыводим это количествоОжидаем нажатия клавиши
Текстпрограммы
Uses Crt;
Varn , m , i , j , k : integer;
c : char;
count :
array[char] of integer;
Begin
Write('Введите
N: '); ReadLn(n);
Write('Введите
M: '); ReadLn(m);
for c :=
'a' to 'z' do
count[c]
:= 0;
fori := 1
to n do begin
for
j := 1 to m do begin
Write('Введите
c[' , i , '][' , j , ']: '); ReadLn(c);
count[c]
:= count[c] + 1;
end;
end;
k := 0;
for c :=
'a' to 'z' do
if
count[c] > 0 then
k
:= k + 1;
WriteLn('Количество различных элементов:
' , k);
ReadKey;
End.
Результат выполнения программы
Задача 3
Для заданных трех строк S1, S2 и S3 определить, какая из них
является десятичной записью числа, кратного 3.
Указание: строка может быть любой длины, поэтому переводить
строку целиком в число не рекомендуется. Вспомните и используйте другой метод
определения кратности числа 3.
Описание алгоритма
Объявление переменных
S1
, S2 , S3 – исходные строкиAm
– количество строк, которые делятся на 3
ОписаниефункцииisDivisible(s : string) : Boolean;
Инициализируем сумму цифр числаДляiот 1 доlength(s), выполнятьСуммируем очередную цифруЕсли сумма цифр делится на 3, то и число делится
на 3. Возвращаем значение функции
Описание основного решения
am
:= 0 – инициализируем количество чисел которые делятся на 3Ввод трех строкИспользуя функцию isDivisible, проверяем, делится ли
первое число на 3Увеличиваем количество таких чиселВыводим это числоИспользуя функцию isDivisible, проверяем, делится ли
второе число на 3Увеличиваем количество таких чиселВыводим это числоИспользуя функцию isDivisible, проверяем, делится ли
третье число на 3Увеличиваем количество таких чиселВыводим это числоЕсли ни одно из чисел не делитсяВыводим об этом сообщениеОжидаем нажатия клавиши
Текстпрограммы
Uses Crt;
VarS1 , S2 , S3 : String;
am :
integer;
Function isDivisible(S : String) : boolean;
Varsum ,i : integer;
Begin
sum := 0;
fori := 1
to length(s) do
sum
:= sum + ord(s[i]) - ord('0');
isDivisible
:= (sum mod 3 = 0);
End;
Begin
am := 0;
Write('Введите
S1: '); ReadLn(S1);
Write('Введите
S2: '); ReadLn(S2);
Write('Введите
S3: '); ReadLn(S3);
ifisDivisible(S1)
then begin
am
:= am + 1;
WriteLn(S1 + ' делится на 3');
end;
ifisDivisible(S2)
then begin
am
:= am + 1;
WriteLn(S2
+ ' делитсяна 3');
end;
ifisDivisible(S3)
then begin
am
:= am + 1;
WriteLn(S3
+ ' делитсяна 3');
end;
ifam = 0 then
WriteLn('Ни одно из чисел не делится на
3');
ReadKey;
End.
Результат выполнения программы
Задача 4
В возрастающем порядке напечатать все целые числа из
диапазона 1..255, представимые в виде n2 + m2, где m,
n>=0.
Указание. Для решения задачи используйте множества.
Описание алгоритма
Объявление переменных
i
, j – переменные дя
итерации циклаr
– результат i * i + j *
js
– множество чисел от 1 до 255
Описание основного решения
Инициализируем множествоДля iот 1 до 15, выполнятьДля j от 1 до 15, выполнять Считаем
значение rкак i * i + j * jЕсли rвходит в интервал [1..255]Добавляем это число во множествоДля iот 1 до 255, выполнятьЕсли iнаходится во множествеВыводим iОжидаем нажатия клавиши
Текстпрограммы
Uses Crt;
Vars : set of 1..255;
r ,i , j :
integer;
Begin
s := [];
fori := 0
to 15 do
for
j := 0 to 15 do begin
r
:= i * i + j * j;
if
(r >= 1) and (r <= 255) then
s
:= s + [r];
end;
fori := 1
to 255 do
ifi
in s then
WriteLn(i
, ' ');
ReadKey;
End.
Результат выполнения программы