void inputChildrenData() // ввожу информацию { for (int i = 0; i < 20; i++) { cout << "Введите информацию для ребенка: " << i + 1 << endl; cout << "Имя: "; cin >> kids[i].name; cout << "Пол (m/f): "; cin >> kids[i].gen; cout << "Рост: "; cin >> kids[i].height; } }
void findTallestBoy(string& tallestBoyName)// Функция для поиска самого высокого мальчика (результат через параметр) { double maxHei = 0.0; tallestBoyName = ""; // Инициализация пустой строкой for (int i = 0; i < 20; i++) { if (kids[i].gen == 'm') { if (kids[i].height > maxHei) { maxHei = kids[i].height; tallestBoyName = kids[i].name; } } } }
void calculateAverageHeight(double& averageHeight)// Функция для вычисления среднего роста мальчиков (результат через параметр) { double totalHei = 0.0; int znachBoys = 0; for (int i = 0; i < 20; i++) { if (kids[i].gen == 'm') { totalHei += kids[i].height; znachBoys++; } } if (znachBoys > 0) { averageHeight = totalHei / znachBoys; } else { averageHeight = 0.0; //Инициализация на 0,0 } }
void printBoysBelowAverageHeight(double sredHei)// Функция для вывода мальчиков с ростом ниже среднего { cout << "Мальчики с ростом ниже среднего: " << endl; for (int i = 0; i < 20; i++) { if (kids[i].gen == 'm' && kids[i].height < sredHei) { cout << kids[i].name << endl; } } }
int main() { setlocale(LC_ALL, "RUS"); inputChildrenData(); //вызывается эта функция, в которой информация о детях string tallestBoyName; //Объявляется переменная tallestBoyName типа string, в ней хранится имя высокого мальчика findTallestBoy(tallestBoyName); //Вызывается эта функция в ней находим самого высокого мальчика. он сохранится в переменной в скобках tallestBoyName if (tallestBoyName != "") { cout << "Самый высокий мальчик: " << tallestBoyName << endl; } else { cout << "Нет данных о мальчиках." << endl; } double averageHeight; calculateAverageHeight(averageHeight); // Вызывается эта функция, она считает средний рост, он сохранится в переменной в скобках averageHeight
if (averageHeight > 0.0) { cout << "Средний рост мальчиков: " << averageHeight << endl; } else { cout << "Нет данных о мальчиках." << endl; } if (averageHeight > 0.0) { printBoysBelowAverageHeight(averageHeight); // Вызывается эта, она выводит имена мальчиков ростом ниже среднего, они сохраняются в averageHeight. }
setlocale влияет только на обработку внутри программы, на ввод/вывод оно влияния не оказывает. для ввода-вывода нужно использовать SetConsoleCP/SetConsoleOutputCP
#include <iostream>
#include <string>
using namespace std;
struct children
{
string name;
char gen;
double height;
} kids[20];
void inputChildrenData() // ввожу информацию
{
for (int i = 0; i < 20; i++)
{
cout << "Введите информацию для ребенка: " << i + 1 << endl;
cout << "Имя: ";
cin >> kids[i].name;
cout << "Пол (m/f): ";
cin >> kids[i].gen;
cout << "Рост: ";
cin >> kids[i].height;
}
}
void findTallestBoy(string& tallestBoyName)// Функция для поиска самого высокого мальчика (результат через параметр)
{
double maxHei = 0.0;
tallestBoyName = ""; // Инициализация пустой строкой
for (int i = 0; i < 20; i++)
{
if (kids[i].gen == 'm')
{
if (kids[i].height > maxHei)
{
maxHei = kids[i].height;
tallestBoyName = kids[i].name;
}
}
}
}
void calculateAverageHeight(double& averageHeight)// Функция для вычисления среднего роста мальчиков (результат через параметр)
{
double totalHei = 0.0;
int znachBoys = 0;
for (int i = 0; i < 20; i++)
{
if (kids[i].gen == 'm')
{
totalHei += kids[i].height;
znachBoys++;
}
}
if (znachBoys > 0)
{
averageHeight = totalHei / znachBoys;
}
else
{
averageHeight = 0.0; //Инициализация на 0,0
}
}
void printBoysBelowAverageHeight(double sredHei)// Функция для вывода мальчиков с ростом ниже среднего
{
cout << "Мальчики с ростом ниже среднего: " << endl;
for (int i = 0; i < 20; i++)
{
if (kids[i].gen == 'm' && kids[i].height < sredHei)
{
cout << kids[i].name << endl;
}
}
}
int main()
{
setlocale(LC_ALL, "RUS");
inputChildrenData(); //вызывается эта функция, в которой информация о детях
string tallestBoyName; //Объявляется переменная tallestBoyName типа string, в ней хранится имя высокого мальчика
findTallestBoy(tallestBoyName); //Вызывается эта функция в ней находим самого высокого мальчика. он сохранится в переменной в скобках tallestBoyName
if (tallestBoyName != "")
{
cout << "Самый высокий мальчик: " << tallestBoyName << endl;
}
else
{
cout << "Нет данных о мальчиках." << endl;
}
double averageHeight;
calculateAverageHeight(averageHeight); // Вызывается эта функция, она считает средний рост, он сохранится в переменной в скобках averageHeight
if (averageHeight > 0.0)
{
cout << "Средний рост мальчиков: " << averageHeight << endl;
}
else
{
cout << "Нет данных о мальчиках." << endl;
}
if (averageHeight > 0.0)
{
printBoysBelowAverageHeight(averageHeight); // Вызывается эта, она выводит имена мальчиков ростом ниже среднего, они сохраняются в averageHeight.
}
return 0;
}