Структуры: вычисление средней зарплаты - 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
(средняя зарплата) с помощью алгоритма сортировки. - Выводится отсортированная таблица.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д