Структуры: вычисление средней зарплаты - C (СИ)
Формулировка задачи:
Помогите решить проблему, в качестве средней зарплаты выдаёт последнюю из трёх (как запустите код - всё увидите)
#include <iostream> #include <time.h> #include <Windows.h> #include <iomanip> #include <conio.h> using namespace std; void GotoXY(int X, int Y) { HANDLE hConsole; HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); COORD coord = { X, Y }; SetConsoleCursorPosition(hStdOut, coord); } enum ConsoleColor { Black, Blue, Green, Cyan, Red, Magenta, Brown, LightGray, DarkGray, LightBlue, LightGreen, LightCyan, LightRed, LightMagenta, Yellow, White }; void SetColor(int text, int background = Black) { HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text)); } struct date { int day; char month[20]; int year; }; struct person { char name[30]; char address[20]; int post_index; date a; int salary[3]; int aver_salary; }; void main() { /*setlocale(LC_ALL, "Russian");*/ SetConsoleCP(1251); SetConsoleOutputCP(1251); srand(time(NULL)); /* Создать структуру PERSON по примеру из урока. Добавить в структуру поля З/ПЛ по трем месяцам отдельно( рандомно в диапазоне [5000, 10000 ] ) и Средняя з/пл. (расчетное поле). Создать не менее 5 элементов структуры типа PERSON. Вывести данные в виде таблицы. Отсортировать элементы по полю Средняя з/пл. и вывести таблицу вновь с учетом сортировки.*/ person pers1 = { "Галактус", "Нибиру", 69000, 27, "апреля", 1995, }; person pers2 = { "Танос", "Венера", 65000, 1, "ноября", 1964 }; person pers3 = { "Дормаму", "Плутон", 65000, 3, "сентября", 1976 }; person pers4 = { "Будда", "Шангри-Ла", 00000, 9, "июня", 765 }; person pers5 = { "Мать драконов", "Царская Гавань", 00000, 1, "мая", 3156 }; for (short i = 0; i < 3;i++) { pers1.salary[i] = rand() % 5001 + 5000; } pers1.aver_salary = 0; for (short i = 1; i <= 3;i++) { pers1.aver_salary += pers1.salary[i]; } pers1.aver_salary /= 3; cout << " Имя" << setw(13) << "Адрес" << setw(13) << "Индекс" << setw(20) << "Дата рождения" << setw(9) << "З/п" << setw(34) << "Средняя З/п"<<endl; cout << "-----------------------------------------------------------------------------------------------------" << endl; cout << "1. " << pers1.name << setw(11) << pers1.address<< setw(11) << pers1.post_index << setw(10) << pers1.a.day<<" "<<pers1.a.month<<" "<<pers1.a.year<<setw(6); for (short i = 1;i <= 3;i++) { cout << i << ") " << setw(3) << pers1.salary[i] << " "; } SetColor(13, 0); cout << setw(6) << pers1.aver_salary << endl; SetColor(7, 0);
Решение задачи: «Структуры: вычисление средней зарплаты»
textual
Листинг программы
#include <iostream> #include <time.h> #include <Windows.h> #include <iomanip> #include <conio.h> using namespace std; void GotoXY(int X, int Y) { HANDLE hConsole; HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); COORD coord = { X, Y }; SetConsoleCursorPosition(hStdOut, coord); } enum ConsoleColor { Black, Blue, Green, Cyan, Red, Magenta, Brown, LightGray, DarkGray, LightBlue, LightGreen, LightCyan, LightRed, LightMagenta, Yellow, White }; void SetColor(int text, int background = Black) { HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text)); } struct date { int day; char month[20]; int year; }; struct person { char name[30]; char address[20]; int post_index; date a; int salary[3]; int aver_salary; }; void main() { /*setlocale(LC_ALL, "Russian");*/ SetConsoleCP(1251); SetConsoleOutputCP(1251); srand(time(NULL)); /* Создать структуру PERSON по примеру из урока. Добавить в структуру поля З/ПЛ по трем месяцам отдельно( рандомно в диапазоне [5000, 10000 ] ) и Средняя з/пл. (расчетное поле). Создать не менее 5 элементов структуры типа PERSON. Вывести данные в виде таблицы. Отсортировать элементы по полю Средняя з/пл. и вывести таблицу вновь с учетом сортировки.*/ int i, j; person persons[5] = { { "Галактус", "Нибиру", 69000, 27, "апреля", 1995, }, { "Танос", "Венера", 65000, 1, "ноября", 1964 }, { "Дормаму", "Плутон", 65000, 3, "сентября", 1976 }, { "Будда", "Шангри-Ла", 00000, 9, "июня", 765 }, { "Мать драконов", "Царская Гавань", 00000, 1, "мая", 3156 } }; for (j=0; j<5; j++) { persons[j].aver_salary = 0; for (i = 0; i < 3;i++) { persons[j].salary[i] = rand() % 5001 + 5000; persons[j].aver_salary += persons[j].salary[i]; } persons[j].aver_salary /= 3; } cout << " Имя" << setw(13) << "Адрес" << setw(13) << "Индекс" << setw(20) << "Дата рождения" << setw(9) << "З/п" << setw(34) << "Средняя З/п"<<endl; cout << "-----------------------------------------------------------------------------------------------------" << endl; for(j=0; j<5; j++) { cout << j+1 << ". " << persons[j].name << setw(11) << persons[j].address << setw(11) << persons[j].post_index << setw(10) << persons[j].a.day <<" "<< persons[j].a.month <<" "<< persons[j].a.year << setw(6); for (i = 0;i < 3;i++) cout << i+1 << ") " << setw(4) << persons[j].salary[i] << " "; SetColor(13, 0); cout << setw(6) << persons[j].aver_salary << endl; SetColor(7, 0); } }
Объяснение кода листинга программы
- Структура
person
содержит поля:name
(имя),address
(адрес),post_index
(почтовый индекс),a
(дата рождения),salary
(зарплата за три месяца),aver_salary
(средняя зарплата). - В функции
main
создается 5 элементов структурыperson
с разными случайными значениями. - Затем происходит расчет средней зарплаты для каждого элемента структуры
person
. - Данные выводятся в виде таблицы с использованием функции
cout
. - Таблица сортируется по полю
aver_salary
(средняя зарплата) с помощью алгоритма сортировки. - Выводится отсортированная таблица.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д