Структуры: вычисление средней зарплаты - 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);
    }
}

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

  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
Похожие ответы