Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Помогите решить задачи по информатике:

1) Дан массив, содержащий 10 целых чисел. Опишите на C++ алгоритм, позволяющий найти и вывести наибольшую чётную сумму двух рядом стоящих чисел, учитывая, что оба элемента при этом должны быть обязательно двузначными, содержащихся в массиве. Каждый элемент может принимать значения от 0 до 10000.

2) Дан целочисленный массив из 40 элементов. Элементы массива могут принимать целые значения от 1 до 10000 включительно. Опишите на C++ алгоритм, позволяющий найти и вывести наибольший из элементов массива, восьмеричная запись которого содержит не менее трёх цифр и оканчивается на 5. Если таких чисел нет, нужно вывести ответ 0.

3) Дан целочисленный массив из 200 элементов, в котором записаны значения последовательных результатов измерений. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на C++ алгоритм, который выполняет выбраковку данных в массиве: заменяет на 0 значения всех элементов, которые отличаются от среднего арифметического всех четных элементов более, чем на половину этого значения. Гарантируется, что хотя бы один чётный положительный элемент в массиве есть.

ЗадачиЗадания по информатике
Артём С.
  ·   · 466
< Frontend-разработчик /> "Это не похоже на...  · 17 мая 2020

Дам в качестве ответа алгоритм решения.

а) если длина массива известна, то проходится он циклом for. От какого-то номера до какого-то.

б) во время перебора массива в цикле for у вас есть переменная-счетчик, позволяющая обратиться к i-тому элементу, а также к любому, номер которого можно выразить через эту переменную-счетчик (например, к элементу номер i-1 или i+1, и к любым другим выражениям с этой переменной).

в) если используете во время перебора массива такие выражения типа i-1 - обязательно указывайте границы цикла так, чтобы не вылезти случайно за пределы массива.

Теперь, алгоритм к первой задаче:

max = 0; // инициализируем переменную, в которой будет лежать наибольшая сумма. Т.к. элементы от 0 до 10000, самая маленькая возможная сумма 0.

нц для i от 1 до 9 // здесь идет от 1, вполне возможно, что ваш массив идет от 0, в таком случае надо будет вести до 8, как раз из-за пункта в)

если (9<a[i]) и (a[i]<100) // проверяем, что текущий элемент двузначный

и (9<a[i+1]) и (a[i+1]<100) // проверяем, что следующий элемент двузначный

и ( (a[i] + a[i+1]) mod 2 == 0 ) // проверям, что сумма четная

и ( (a[i] + a[i+1]) > max ) // проверяем, что новая сумма больше, чем уже сохраненная

то max = a[i] + a[i+1]; // если все-все-все условия выполняются, сохраняем в переменную max сумму текущего элемента и следующего

кц

вывод max;

думаю, алгоритмически задачу понять лучше, чем просто получить решение, ну а синтаксис вот:

#include <iostream>
using namespace std;
int main() {
    int max = 0;
    int a[3] = { 1, 2, 3 };
    for (int i = 0; i < 2; i++) {
        if (a[i]+a[i+1] > max) {
                max = a[i] + a[i+1];
        }
    }
    cout<<max;
    return 0;
}

P.S. естественно, можно было проверять на двузначность любым другим способом.