Составить программу для расчета общей зарплаты, полученной за год человеком, информация о з/п которого - в массиве - C (СИ)

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

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

В двумерном массиве хранится информация „о зарплате 20 человек за каждый месяц года (первого человека — в первой строке, второго — во второй и т. д.). Составить программу для расчета общей зарплаты, полученной за год любым человеком, информация о зарплате которого представлена в массиве.
надо в С,а не в C++

Решение задачи: «Составить программу для расчета общей зарплаты, полученной за год человеком, информация о з/п которого - в массиве»

textual
Листинг программы
#include <stdio.h>
#include <stdbool.h>
 
#define EMPLOYEES 20
// зарплату надо хранить в копейках/центах во избежание известных проблем с машинной арифметикой
unsigned long salaries[EMPLOYEES][12];
 
void fill()
{
    srand(time(NULL));
    for( int i = 0; i < EMPLOYEES; ++i ) {
        for( int j = 0; j < 12; ++j ) {
            salaries[i][j] = 100000 + rand(); // зарплата от 1000.00 до 1327.68 в месяц
        }
    }
}
 
double get_year_salary(int employee)
{
    --employee;
    unsigned long salary = 0;
    for( int i = 0; i < 12; ++i ) {
        salary += salaries[employee][i];
    }
    return (double)salary / 100.0;
}
 
int main() {
    fill();
    char buf[3]; // буфер для хранения двузначного числа и нуль-терминатора
    int employee;
    while( true ) {
        puts("Input employee number or press ENTER to exit.");
        fflush(stdin);
        fgets(buf, sizeof(buf), stdin);
        if( buf[0] == '\n' ) break;
        employee = atoi(buf);
        if( employee >= 1 && employee <= EMPLOYEES ) {
            printf("Year salary for employee No.%d: %.2f dollars\n", employee, get_year_salary(employee));
        } else {
            printf("Employees have numbers from 1 to %d\n", EMPLOYEES);
        }
    }
    return 0;
}

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

  1. Объединение и в начале кода для использования функций вывода и булевых значений.
  2. Определение константы EMPLOYEES, которая задает количество сотрудников (20).
  3. Создание двумерного массива salaries для хранения зарплаты каждого сотрудника в каждом месяце.
  4. Функция fill() используется для заполнения массива salaries случайными значениями зарплаты от 1000.00 до 1327.68 в месяц.
  5. Функция get_year_salary(int employee) используется для расчета годовой зарплаты сотрудника по его номеру.
  6. В цикле while в функции main() пользователю предлагается ввести номер сотрудника или нажать Enter для выхода.
  7. Если пользователь вводит номер сотрудника в допустимом диапазоне (1-20), выводится годовая зарплата этого сотрудника.
  8. Если пользователь вводит недействительный номер сотрудника, выводится сообщение об ошибке.

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


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

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

10   голосов , оценка 4 из 5
Похожие ответы