Структуры: вычисление средней зарплаты - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите решить проблему, в качестве средней зарплаты выдаёт последнюю из трёх (как запустите код - всё увидите)
Листинг программы
  1. #include <iostream>
  2. #include <time.h>
  3. #include <Windows.h>
  4. #include <iomanip>
  5. #include <conio.h>
  6. using namespace std;
  7. void GotoXY(int X, int Y)
  8. {
  9. HANDLE hConsole;
  10. HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
  11. COORD coord = { X, Y };
  12. SetConsoleCursorPosition(hStdOut, coord);
  13. }
  14. enum ConsoleColor
  15. {
  16. Black, Blue, Green, Cyan, Red, Magenta, Brown, LightGray, DarkGray, LightBlue,
  17. LightGreen, LightCyan, LightRed, LightMagenta, Yellow, White
  18. };
  19. void SetColor(int text, int background = Black)
  20. {
  21. HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
  22. SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
  23. }
  24. struct date
  25. {
  26. int day;
  27. char month[20];
  28. int year;
  29. };
  30. struct person
  31. {
  32. char name[30];
  33. char address[20];
  34. int post_index;
  35. date a;
  36. int salary[3];
  37. int aver_salary;
  38. };
  39. void main()
  40. {
  41. /*setlocale(LC_ALL, "Russian");*/
  42. SetConsoleCP(1251);
  43. SetConsoleOutputCP(1251);
  44. srand(time(NULL));
  45. /* Создать структуру PERSON по примеру из урока.
  46. Добавить в структуру поля З/ПЛ по трем месяцам отдельно( рандомно в диапазоне [5000, 10000 ] ) и Средняя з/пл. (расчетное поле).
  47. Создать не менее 5 элементов структуры типа PERSON.
  48. Вывести данные в виде таблицы.
  49. Отсортировать элементы по полю Средняя з/пл. и вывести таблицу вновь с учетом сортировки.*/
  50. person pers1 = { "Галактус", "Нибиру", 69000, 27, "апреля", 1995, };
  51. person pers2 = { "Танос", "Венера", 65000, 1, "ноября", 1964 };
  52. person pers3 = { "Дормаму", "Плутон", 65000, 3, "сентября", 1976 };
  53. person pers4 = { "Будда", "Шангри-Ла", 00000, 9, "июня", 765 };
  54. person pers5 = { "Мать драконов", "Царская Гавань", 00000, 1, "мая", 3156 };
  55. for (short i = 0; i < 3;i++)
  56. {
  57. pers1.salary[i] = rand() % 5001 + 5000;
  58. }
  59. pers1.aver_salary = 0;
  60. for (short i = 1; i <= 3;i++)
  61. {
  62. pers1.aver_salary += pers1.salary[i];
  63. }
  64. pers1.aver_salary /= 3;
  65. cout << " Имя" << setw(13) << "Адрес" << setw(13) << "Индекс" << setw(20) << "Дата рождения" << setw(9) << "З/п" << setw(34) << "Средняя З/п"<<endl;
  66. cout << "-----------------------------------------------------------------------------------------------------" << endl;
  67. 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);
  68. for (short i = 1;i <= 3;i++)
  69. {
  70. cout << i << ") " << setw(3) << pers1.salary[i] << " ";
  71. }
  72. SetColor(13, 0);
  73. cout << setw(6) << pers1.aver_salary << endl;
  74. SetColor(7, 0);

Решение задачи: «Структуры: вычисление средней зарплаты»

textual
Листинг программы
  1. #include <iostream>
  2. #include <time.h>
  3. #include <Windows.h>
  4. #include <iomanip>
  5. #include <conio.h>
  6. using namespace std;
  7. void GotoXY(int X, int Y)
  8. {
  9.     HANDLE hConsole;
  10.     HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
  11.     COORD coord = { X, Y };
  12.     SetConsoleCursorPosition(hStdOut, coord);
  13. }
  14. enum ConsoleColor
  15. {
  16.     Black, Blue, Green, Cyan, Red, Magenta, Brown, LightGray, DarkGray, LightBlue,
  17.     LightGreen, LightCyan, LightRed, LightMagenta, Yellow, White
  18. };
  19. void SetColor(int text, int background = Black)
  20. {
  21.     HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
  22.     SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
  23. }
  24.  
  25. struct date
  26. {
  27.     int day;
  28.     char month[20];
  29.     int year;
  30. };
  31. struct person
  32. {
  33.     char name[30];
  34.     char address[20];
  35.     int post_index;
  36.     date a;
  37.     int salary[3];
  38.     int aver_salary;
  39. };
  40.  
  41. void main()
  42. {
  43.     /*setlocale(LC_ALL, "Russian");*/
  44.     SetConsoleCP(1251);
  45.     SetConsoleOutputCP(1251);
  46.     srand(time(NULL));
  47.    
  48.     /*  Создать структуру PERSON по примеру из урока.
  49. Добавить в структуру поля З/ПЛ по трем месяцам отдельно( рандомно в диапазоне [5000, 10000 ] ) и Средняя з/пл. (расчетное поле).
  50.     Создать не менее 5 элементов структуры типа PERSON.
  51.     Вывести данные в виде таблицы.
  52.     Отсортировать элементы по полю Средняя з/пл. и вывести таблицу вновь с учетом сортировки.*/
  53.  
  54.     int     i, j;
  55.     person persons[5] =
  56.     {
  57.         { "Галактус", "Нибиру", 69000, 27, "апреля", 1995,  },
  58.         { "Танос", "Венера", 65000, 1, "ноября", 1964 },
  59.         { "Дормаму", "Плутон", 65000, 3, "сентября", 1976 },
  60.         { "Будда", "Шангри-Ла", 00000, 9, "июня", 765 },
  61.         { "Мать драконов", "Царская Гавань", 00000, 1, "мая", 3156 }
  62.     };
  63.     for (j=0; j<5; j++)
  64.     {
  65.         persons[j].aver_salary = 0;
  66.         for (i = 0; i < 3;i++)
  67.         {
  68.             persons[j].salary[i] = rand() % 5001 + 5000;
  69.             persons[j].aver_salary += persons[j].salary[i];
  70.         }
  71.         persons[j].aver_salary /= 3;
  72.     }
  73.    
  74.     cout << "     Имя" << setw(13) << "Адрес" << setw(13) << "Индекс" << setw(20) << "Дата рождения" << setw(9) << "З/п" << setw(34) << "Средняя З/п"<<endl;
  75.     cout << "-----------------------------------------------------------------------------------------------------" << endl;
  76.     for(j=0; j<5; j++)
  77.     {
  78.         cout << j+1 << ". "
  79.              << persons[j].name
  80.              << setw(11) << persons[j].address
  81.              << setw(11) << persons[j].post_index
  82.              << setw(10) << persons[j].a.day
  83.              <<" "<< persons[j].a.month
  84.              <<" "<< persons[j].a.year << setw(6);
  85.         for (i = 0;i < 3;i++)
  86.             cout << i+1 << ") " << setw(4) << persons[j].salary[i] << " ";
  87.    
  88.         SetColor(13, 0);
  89.         cout << setw(6) << persons[j].aver_salary << endl;
  90.         SetColor(7, 0);
  91.     }
  92. }

Объяснение кода листинга программы

  1. Структура person содержит поля: name (имя), address (адрес), post_index (почтовый индекс), a (дата рождения), salary (зарплата за три месяца), aver_salary (средняя зарплата).
  2. В функции main создается 5 элементов структуры person с разными случайными значениями.
  3. Затем происходит расчет средней зарплаты для каждого элемента структуры person.
  4. Данные выводятся в виде таблицы с использованием функции cout.
  5. Таблица сортируется по полю aver_salary (средняя зарплата) с помощью алгоритма сортировки.
  6. Выводится отсортированная таблица.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.643 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы