Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет acmp.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
13 Мб
Скачать
☆

Оттепель

Уставшие от необычно теплой зимы, жители решили узнать, действительно ли это самая длинная оттепель за всю историю наблюдений за погодой. Они обратились к синоптикам, а те, в свою очередь, занялись исследованиями статистики за прошлые годы. Их интересует, сколько дней длилась самая длинная оттепель.

Оттепелью они называют период, в который среднесуточная температура ежедневно превышала 0 градусов Цельсия. Напишите программу, помогающую синоптикам в работе.

#include <iostream>

using namespace std;

int main()

{

int n,i,a,k=0,max,x=0;

cin>>n;

max=0;

for(i=1;i<=n;i++)

{cin>>a;

if(a>0) k++;

else k=0;

if(k>max) max=k;

}

cout<<max;

return 0;

}

Алгоритм решения:

Вводим количество элементов. В цикле от 1 до n включительно вводим значения температуры. Находим максимальное количество дней с положительной температурой: когда находится положительное число, увеличиваем счетчик k, и сравниваем его с max. И когда заканчивается цикл выводим max.

Сумма максимума и минимума

Задана последовательность целых чисел. Числа нумеруются по порядку следования, начиная с единицы.

Требуется написать программу, которая найдет сумму максимума из чисел с четными номерами и минимума из чисел с нечетными номерами – max{a2, a4, …}+min{a1, a3, …}.

#include <iostream>

using namespace std;

int main() {

int mx = -10000, mn = 10000, a, k = 0;

while (cin >> a) {

k += 1;

if (k % 2 == 0) {

if (mx < a) mx = a;

} else { if (mn >a) mn = a; }}

cout << mn + mx;

return 0;

}

Алгоритм решения:

Пока происходит ввод чисел, увеличивается счетчик, который отвечает за номер элемента, если номер четный, то находим mx, если номер нечетный mn. Выводим сумму mn и mx.

Школьная алгебра

Трёхчлен a + bx + сy от двух переменных x и y однозначно определяется коэффициентами a, b и c. Написать программу, которая по заданным a, b и c выводит соответствующий трёхчлен, записанный с использованием алгебраических соглашений:

коэффициент при члене, содержащем переменную, опускается, если его модуль равен единице;

член, коэффициент при котором равен нулю, опускается (кроме случая, когда все коэффициенты равны нулю, тогда трехчлен состоит из одной цифры 0);

знак "+" опускается, если он предшествует отрицательному коэффициенту;

знак "+" опускается, если он стоит в начале выражения (так называемый унарный плюс);

знак умножения между коэффициентом и переменной опускается.

Алгоритм решения:

Вводим три коэффициента. Если они все равны 0, выводим 0. Если а != 0 выводим а. Дальше если b != 0, следуем условиям, выводим b, аналогичные операции проводим с коэффициентом c.

Подмассив массива

Пусть задан массив целых чисел а1, а2, ..., аn. Назовем его подмассивом f(i,j) массив, составленный из чисел массива аi, ai+1,..., aj-1, aj. Напишите программу, которая будет выводить подмассивы массива a.

#include <iostream>

using namespace std;

int main()

{

long long n,m,i,x,y,j;

int a[n+1];

cin>>n;

for(i=1;i<=n;i++)

cin>>a[i];

cin>>m;

for(i=1;i<=m;i++)

{ cin>>x>>y;

for(j=x;j<=y;j++)

cout<<a[j]<<" ";

cout<<endl;

}

}

Алгоритм решения:

Вводим количество элементов в массиве. В цикле от 1 до n включительно, заполняем массив. Дальше вводим количество пар, в цикле от 1 до m, вводим сами пары x и y. В цикле от x до y выводим элементы.

Налоги

В некотором государстве действует N фирм, конкурирующих между собой. У каждой фирмы есть некоторая прибыль в год, равная V[i] американских рублей. У царя есть любимые фирмы, а есть нелюбимые. Соответственно, налог для всех фирм разный и назначается царем в индивидуальном порядке. Налог на i-ую фирму равен p[i] процентов.

Собиратели статистики решили посчитать, с какой фирмы в государственную казну идет наибольший доход (в казну идут все налоги). К сожалению, они не учили в детстве ни математику, ни информатику (так что учитесь, дети!), и их задача резко осложняется.

Помогите им в этой нелегкой задаче.

#include <iostream>

using namespace std;

int main()

{

int n,i,max=-1,k=0;

cin>>n;

int a[n],p[n],o[n];

for(i=1;i<=n;i++)

cin>>a[i];

for(i=1;i<=n;i++)

cin>>p[i];

for(i=1;i<=n;i++)

o[i]=a[i]*p[i];

for(i=1;i<=n;i++)

if(o[i]>max) {max=o[i]; k=i;}

cout<<k;

return 0;

}

В цикле от 1 до n включительно заполняем массив а[i] - прибыль i-ой фирмы, массив p[i] - процент на i-ую фирму. Массив o[i] заполняем налогом возложенным на i-ую фирму. В цикле от 1 до n включительно находим номер фирмы, имеющей максимальный налог. Выводим номер.