Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Код выводит ответ символами вместо русского языка. попробовала добавить setlocale во все функции, но результата не дало

Хаборим Ученик (140), на голосовании 6 дней назад
вот код:
#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;
}
Голосование за лучший ответ
/bin/laden Искусственный Интеллект (121339) 1 месяц назад
setlocale влияет только на обработку внутри программы, на ввод/вывод оно влияния не оказывает.
для ввода-вывода нужно использовать SetConsoleCP/SetConsoleOutputCP
Похожие вопросы