Семинар по информатике



Средняя продолжительность жизни населения региона равна А лет. Ожидается ее ежегодный
рост на р % вследствие улучшения медицинского обслуживания и на Q лет вследствие улучшения экологии. Определить, через сколько лет средняя продолжительность жизни превысит 60 лет.

Рассматривать срок не более 30 лет.
#include<iostream>// Библиотека для ввода/вывода данных в окно консоли
#include<string>// Библиотека для исползования типа данных string (строки)

std::stringYears(int i)// Функция, позволяющая правильно выводить числительные
{
int o = i % 10; // остаток от деления на 10 = последняя цифра числа
if (o == 1) // условие для последней цифры — 1.
{
return "год";
}
elseif( o>= 2 && o <= 4 )// иначе, если последняя цифра от 2 до 4.
{
return "года";
}
else
return "лет"; // все остальные случаи.

}

intmain()
{
setlocale(LC_ALL, "Russian"); //просто подключили подддержку русских символов в консоли.

std::cout<< "Введите среднюю продолжительность жизни(A): ";//Выводит сообщение в консоль.
float A; // объявление переменной, хранящей значение средней продолжительности жизни. Тип данных float позволяет хранить нецелочисленные значения.
std::cin>> A; //считали значение.
if (A<0) // проверяем введенное число, т.к. оно не может быть отрицательным
{

std::cout<< "Введены некорректные данные";
return 1; // выход из программы
}
std::cout<< "\nВведите ежегодный прирост в процентах(p): ";
float p;
std::cin>> p;

std::cout<< "\nВведите ежегодный прирост в годах(Q): ";
float Q;
std::cin>> Q;

int i; // i будет использоваться как счетчик
for (i = 0; i < 30; i++) // цикл будет продолжаться либо до достижения 30 лет, либо при продолжительности жизни больше 60 лет
{
A += A*p/100 + Q; // каждая итерация цикла = году. К продолжительности в данный момент прибавляется процент за медицину и Q лет за экологию.

if (A > 60) // Если продолжительность уже стала больше 60 — выходим.
break;

}
if (i==30) // если уже рассмотрено 30 лет, но продолжительность жизни < 60
std::cout<< "Продолжительность жизни не превысит 60 лет меньше чем за 30

лет\n";
else //если 60 лет достигнуто
std::cout<< "Продолжительность жизни превысит 60 лет через " << i + 1 << " "

<<Years(i + 1) << "\n";
system("pause"); // не позволяет программе автоматически закрываться, ожидается нажатие любой кнопки.
return 0;
}

 Найти среднее арифметическое положительных элементов вектора X, имеющих четный номер, и среднее арифметическое отрицательных элементов вектора Y, имеющих нечетный номер.

#include <algorithm>
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
#include <cstdlib>
#include <sstream>

int main()
{
double average1 = 0; // Здесьбудетхранитьсясумманужныхэлементовпервоговектора.
double average2 = 0;
int count1 = 0; // Здесь хранится количество нужных элементов.
int count2 = 0;

setlocale(LC_ALL, "Russian"); //просто подключили подддержку русских символов в консоли.

std::cout<< "Введите числа первого вектора (X) через пробел. В конце ввода нажмите
Enter.\n";

std::string s1; // Ввод вектора в консоль будет происходить через ввод строки, здесь она объявляется.
std::getline(std::cin, s1); // Функция считывает всю строку до Enter из консоли.
if (s1.length()==0) // Если не было введено ни одного числа — программа завершается с ошибкой.
{
std::cout<< "Ошибка: данные не введены.\n";
system("pause");

return 1;
}
std::stringstreamss(s1); // Нужно чтобы перевести строку в вектор чисел.

std::vector<int> X;

copy(std::istream_iterator<int>(ss), {}, back_inserter(X)); // Копированиеэлементовввектор.

std::cout<< "Введите числа второго вектора (Y) через пробел. В конце ввода нажмите
Enter.\n";

std::string s2;
std::getline(std::cin, s2);
if (s2.length()==0)
{
std::cout<< "Ошибка: данные не введены.\n";
system("pause");
return 1;
}
std::stringstream ss2(s2);

std::vector<int> Y;

copy(std::istream_iterator<int>(ss2), {}, back_inserter(Y));

for (auto i = 0; i <X.size(); i++) // Проходим в цикле от 1 элемента вектора до последнего. Т.к. индексация начинается с 0, четные позиции чисел соответствуют нечетному индексу.
{
if (i % 2 == 1) // Условие четной позиции.
{
if (X.at(i) >= 0) // Условие положительности числа.
{
average1 += X.at(i); // Прибавляем число к сумме.

count1++; // Увеличиваем значение счетчика чисел.
}
}
}

for (auto i = 0; i <Y.size(); i++) // Такой же цикл, как и предыдущий, но с условиями для второго вектора.
{
if (i % 2 == 0)
{
if (Y.at(i) < 0)
{
average2 += Y[i];
count2++;
}
}
}

std::cout<< "Среднееарифмеитческоеэлементоввектора X:" << (double)(average1 / count1)
<< "\n"

<< "Среднее арифмеитческое элементов вектора Y:" << (double)(average2 / count2)

<< "\n";
system("pause");
}

Найти число строк матрицы, сумма элементов которых меньше 0.

#include <iostream>
#include <vector>

int main()
{
setlocale(LC_ALL, "Russian"); //просто подключили подддержку русских символов в консоли.

Int str = 0, stlb = 0; // Переменные, хранящие размер матрицы.
std::cout<< "Количество строк:";
std::cin>>str;
std::cout<< "Количество столбцов:";
std::cin>>stlb;

std::vector<std::vector<float>>matrix(str, std::vector<float>(stlb));/*Создается вектор, каждый
элемент которго тоже является вектором. В результате matrix — двумерный вектор.*/
std::cout<< "Вводите числа построчно через пробел. в конце строки нажмите Enter:\n";
for (auto i = 0; i <str; i++) // В цикле считываются все элементы матрицы.
{
for (auto j = 0; j <stlb; j++)
{
std::cin>> matrix[i][j];
}
}

Int count = 0; // Переменная, в которой хранится количество нужных строк.
for (auto i = 0; i< str; i++)
{
float summ = 0;
for (auto j = 0; j <stlb; j++)

{
summ+=matrix[i][j]; // Суммируем все элементы строки.
}
if (summ< 0) // Если сумма элементов какой-либо строки < 0, то увеличиваем счетчик.

count++;

}

std::cout<< "Количество строк, сумма элементов которых меньше 0 = " <<count; //Выводим полученное значение.
}

Нужна помощь
с дистанционным обучением?
Узнайте точную стоимость или получи консультацию по своему вопросу.
 

X