Составить программу для расчета общей зарплаты, полученной за год человеком, информация о з/п которого - в массиве - 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;
}
Объяснение кода листинга программы
- Объединение
и в начале кода для использования функций вывода и булевых значений. - Определение константы EMPLOYEES, которая задает количество сотрудников (20).
- Создание двумерного массива salaries для хранения зарплаты каждого сотрудника в каждом месяце.
- Функция fill() используется для заполнения массива salaries случайными значениями зарплаты от 1000.00 до 1327.68 в месяц.
- Функция get_year_salary(int employee) используется для расчета годовой зарплаты сотрудника по его номеру.
- В цикле while в функции main() пользователю предлагается ввести номер сотрудника или нажать Enter для выхода.
- Если пользователь вводит номер сотрудника в допустимом диапазоне (1-20), выводится годовая зарплата этого сотрудника.
- Если пользователь вводит недействительный номер сотрудника, выводится сообщение об ошибке.