Размер шрифта: A AA Изображения Выключить Включить Цвет сайта Ц Ц Ц Х
Бесплатный конструктор сайтов - uCoz
Пятница, 17.05.2024, 06:18
Приветствую Вас Гость | RSS

Сайт учителя информатики  и ИКТ Шинкаренко Евгения Александровича

Реклама
Оцените сайт
Оцените мой сайт
Всего ответов: 837
Программирование
Какой язык программирования выбрать для подготовки к ЕГЭ
Всего ответов: 804

Решение задачи №1.

Задача №1.
Дан целочисленный массив A из 30 элементов, которые могут принимать значения от –1000 до +1000. Опишите на русском языке или на одном из языков программирования алгоритм, который вычисляет и выводит наибольшее значение суммы двух соседних элементов этого массива (то есть наибольшее возможное значение выражения A[i]+A[i+1]).
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.

Паскаль
Бейсик
Си
Естественный язык
const
N=30;
var
A: array [1..N] of
integer;
i, j, m: integer;
begin
for i:=1 to N do
readln(A[i]);
...
end.
N=30
DIM A(N) AS INTEGER
DIM I, J, M AS INTEGER
FOR I = 1 TO N
INPUT A(I)
NEXT I
...
END
#include <stdio.h>
#define N 30
void main(void)
{int A[N];
int i, j, m;
for (i=0; i<N; i++)
scanf("%d", &A[i]);
...
}
Объявляем массив A из 30
элементов.
Объявляем целочисленные
переменные I, J, M.
В цикле от 1 до 30 вводим
элементы массива A с 1-го
по 30-й.
...

В качестве ответа Вам необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Borland Pascal 7.0) или в виде блок-схемы. В этом случае вы должны использовать переменные, аналогичные переменным, используемым в алгоритме, записанном на естественном языке, с учетом синтаксиса и особенностей используемого вами языка программирования.

Решение задачи №1

ПаскальБейсикСиЕстественный язык
m := -2000;
for i:=1 to N - 1 do
if A[i] + A[i+1] > m
then m := A[i] + A[i+1];
WriteLn(m);
M = -2000
FOR I = 1 TO N - 1
IF A(I) + A(I+1) > M
M = A(I) + A(I+1)
ENDIF
NEXT I
PRINT M
m = -2000;
for(i = 0; i < N - 1;
i++)
if (A[i] + A[i+1] > m)
m = A[i] + A[i+1];
printf("%d", m);
Записываем в переменную M
значение –2000. В цикле
для переменной I от 1 до
N-1 сравниваем значение
переменной M с суммой A
[I]+A[I +1]. Если A[I]+A
[I +1] больше M, то
присваиваем M значение A
[I]+A[I+1].
После окончания цикла
выводим значение M.

Алгоритм решения задачи
Переменная m будет принимать величину наибольшего значения суммы соседних двух элементов. Начальное значение переменной m присвоим -2000 (т.к. по условию задачи минимальное значение которое может принимать элемент массива равно -1000 (-1000+(-1000)=-2000)).
В цикле от 1 до 29 сравниваем сумму соседних элементов с значением переменной m, если сумма соседних элементов больше значения переменной m, то переменная m принимает значение суммы двух соседних элементов.
После прохода цикла переменная m имеет значение наибольшей суммы соседних элементов.
Возврат к списку задач
Реклама
Календарь
«  Май 2024  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Счетчик яндекс
Яндекс.Метрика