Преложено пять задач С25
1. Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от 0 до 10000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести максимальное значение среди трёхзначных элементов массива, не делящихся на 9. Если в исходном массиве нет элемента, значение которого является трёхзначным числом и при этом не кратно 9, то выведите сообщение «Не найдено». Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования и естественного языка. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
Решение:
Например, для массива из пяти элементов: 16 3 142 55 22 – ответ: 3.
Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования и естественного языка. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
1. Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от 0 до 10000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести максимальное значение среди трёхзначных элементов массива, не делящихся на 9. Если в исходном массиве нет элемента, значение которого является трёхзначным числом и при этом не кратно 9, то выведите сообщение «Не найдено». Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования и естественного языка. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
Решение:
- Для решения используем перебор всех элементов массива (for i := 1 to N do) и фильтруем их с помощью условного оператора. Используем сложное условие: число должно быть трехзначным (a[i]>99)and(a[i]<1000) и не кратным девяти(a[i]mod 9<>0).
- Из ни отбираем максимальное if a[i]>max then max:=a[i];
const2. Дан целочисленный массив из 40 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество пар элементов массива, в которых десятичная запись хотя бы одного числа оканчивается на 2. В данной задаче под парой подразумевается два подряд идущих элемента массива.
N = 20;
var
a: array [1..N] of integer;
i, j, max: integer;
begin
for i := 1 to N do
readln(a[i]);
max:=0;
for i := 1 to N do
if (a[i]>99)and(a[i]<1000)and(a[i]mod 9<>0)then
if a[i]>max then max:=a[i];
if max=0 then write('no') else write(max);
end.
Например, для массива из пяти элементов: 16 3 142 55 22 – ответ: 3.
Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования и естественного языка. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
Решение:
3. Определить есть ли в массиве хотя бы одна тройка соседних чисел, в которой средний элемент больше своих "соседей", т. е. предшествующего и последующего. В случае положительного ответа определить номера элементов первой из таких троек.
- Перебираем пары элементов массива a[i-1], a[i]. Поэтому цикл начинаем не 1 , а с 2-х.
- Определяем с помощью mod 10 последнюю цифру элемента массива.
- Т.к. для подсчета пар достаточно чтобы хотя бы у одного элемента пары последняя цифра оканчивалась двойкой применяем логическую связку or (или)
const
N = 40;
var
a: array [1..N] of integer;
i, j, k: integer;
begin
randomize;
for i := 1 to N do
begin
a[i]:=random(100);
write(a[i]:3);
end;
k:=0;
for i := 2 to N do
if (a[i-1]mod 10=2) or (a[i]mod 10=2) then k:=k+1;
write(' k= ',k);
end.
3. Определить есть ли в массиве хотя бы одна тройка соседних чисел, в которой средний элемент больше своих "соседей", т. е. предшествующего и последующего. В случае положительного ответа определить номера элементов первой из таких троек.
Решение:
4. Дан целочисленный массив из 23-х элементов. Элементы массива могут принимать значения от 1500 до 2000 — количество знаков в статье. На сайт принимаются статьи размером не более 1800 знаков. Гарантируется, что такие значения в базе данных есть.
Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит на экран размер самой большой статьи, которую можно разместить на сайте.
Исходные данные объявлены так, как показано ниже. Запрещается использовать не объявленные переменные, но разрешается не использовать часть из них.
Решение:
5. Дан вещественный массив из 40 элементов. Элементы массива могут принимать произвольные значения. Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит минимальный положительный элемент массива или сообщение, что такого элемента нет.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
Решение:
- Перебираем тройки элементов массива a[i-2], a[i-1], a[i]. Поэтому цикл начинаем не i:=1 , а с 3-х. Используем цикл While потому что необходимо вывести номер первого такого элемента. Номер запоминаем в переменной k. Изначально k:=0. Цикл будет работать пока закончатся элементы (i<=n) и искомый элемент не найден (k=0).
- Искомый элемент определяется условием (a[i-1]>a[i-2])and(a[i-1]>a[i]).
const
N = 10;
var
a: array [1..N] of integer;
i, j, k: integer;
begin
for i := 1 to N do
readln(a[i]);
k:=0;
i:=3;
while (k=0)and (i<=n) do
begin
if (a[i-1]>a[i-2])and(a[i-1]>a[i]) then k:=i-1;
i:=i+1;
end;
if k=0 then write('no') else write('k=',k);
end.
4. Дан целочисленный массив из 23-х элементов. Элементы массива могут принимать значения от 1500 до 2000 — количество знаков в статье. На сайт принимаются статьи размером не более 1800 знаков. Гарантируется, что такие значения в базе данных есть.
Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит на экран размер самой большой статьи, которую можно разместить на сайте.
Исходные данные объявлены так, как показано ниже. Запрещается использовать не объявленные переменные, но разрешается не использовать часть из них.
Решение:
- Перебираем элементы массива for i := 1 to N do
- Из элементов удовлетворяющих условию (a[i]<1800) отбираем максимальное if a[i]>max then max:=a[i];
const
N = 23;
var
a: array [1..N] of integer;
i, j, max: integer;
begin
randomize;
for i := 1 to N do
begin
a[i]:=1790+random(501);
write(a[i]:5);
end;
max:=0;writeln;
for i := 1 to N do
if (a[i]<1800)then
if a[i]>max then max:=a[i];
if max=0 then write('no') else write(max);
end.
5. Дан вещественный массив из 40 элементов. Элементы массива могут принимать произвольные значения. Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит минимальный положительный элемент массива или сообщение, что такого элемента нет.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
Решение:
- Для заполнения массива используем генератор случайных чисел a[i]:=(1790-random(2501))/100;. В данном примере (1790-random(2501)) - дает числа из отрезка [-710,1790]. При делении этих чисел на 100 получаем вещественные числа, как положительные, так и отрицательные.
- чтобы найти минимальное положительное число начальным значением переменной min присваиваем большое число 1,8 на десять в 307 степени (min:=1.8e307;)
- При обнаружении положительного числа (a[i]>0) сравниваем его с минимумом и если оно меньше, то изменяем минимум. (if a[i]<min then min:=a[i];)
const
N = 40;
var
a: array [1..N] of real;
i, j: integer;
min: real;
begin
for i := 1 to N do
begin
a[i]:=(1790-random(2501))/100;
write(a[i]:5:3,',');
end; writeln;
min:=1.8e307;
for i := 1 to N do
if (a[i]>0)then
if a[i]<min then min:=a[i];
if min=1.8e307 then write('no') else write(min);
end.
Комментариев нет:
Отправить комментарий