Не выполнятся условие, чтобы вычислить зарплату - C (СИ)
Формулировка задачи:
//---------------------------------------------------------------------------
#include <stdio.h>
#include <conio.h>
//---------------------------------------------------------------------------
int main()
{
int i,n,d;
struct zarplata
{
char name[15];
int god_r;
int stag;
int oklad;
float zarplatta;
};
struct zarplata base [50];
puts("kolichestvo-->");
scanf("%d",&n);
for (i = 0; i < n; i++)
{
puts ("fio-->");
scanf("%s",base[i].name);
puts ("data-->");
scanf("%d",&base[i].god_r);
puts ("staj-->");
scanf("%d",&base[i].stag);
puts ("oklad-->");
scanf("%d",&base[i].oklad);
}
printf("|Fio |Data |Staj |Oklad |\n");
printf("___________________________________________________________________________\n");
for (i = 0; i < n; i++)
{
printf("|%15s|%15d|%15d|%15d|\n",base[i].name,base[i].god_r,base[i].stag,base[i].oklad);
printf("___________________________________________________________________________\n");
}
if (base[i].stag>0 && base[i].stag<4)
base[i].zarplatta=base[i].oklad;
if (base[i].stag>5 && base[i].stag<9)
base[i].zarplatta=base[i].oklad+base[i].oklad*10/100;
if (base[i].stag>10 && base[i].stag<19)
base[i].zarplatta=base[i].oklad+base[i].oklad*(float)30/100;
if (base[i].stag>20 && base[i].stag<50)
base[i].zarplatta=base[i].oklad+base[i].oklad*50/100;
{
printf("|%15s|%15d|%15d|%15d|\n",base[i].name,base[i].god_r,base[i].stag,base[i].zarplatta);
printf("___________________________________________________________________________\n");
}
getch();
return 0;
}
//---------------------------------------------------------------------------Решение задачи: «Не выполнятся условие, чтобы вычислить зарплату»
textual
Листинг программы
int main()
{
int i,n,d;
struct zarplata
{
char name[15];
int god_r;
int stag;
int oklad;
float zarplatta;
};
struct zarplata base [50];
puts("kolichestvo-->");
scanf("%d",&n);
for (i = 0; i < n; i++)
{
puts ("fio-->");
scanf("%s",base[i].name);
puts ("data-->");
scanf("%d",&base[i].god_r);
puts ("staj-->");
scanf("%d",&base[i].stag);
puts ("oklad-->");
scanf("%d",&base[i].oklad);
}
printf("|Fio |Data |Staj |Oklad | Zp|\n");
printf("<br> ___\n");
for (i = 0; i < n; i++)
{
if (base[i].stag>0 && base[i].stag<=4)
base[i].zarplatta=base[i].oklad;
if (base[i].stag>=5 && base[i].stag<=9)
base[i].zarplatta=base[i].oklad+base[i].oklad*10/100;
if (base[i].stag>=10 && base[i].stag<=19)
base[i].zarplatta=base[i].oklad+base[i].oklad*(float)30/100;
if (base[i].stag>=20 && base[i].stag<=50)
base[i].zarplatta=base[i].oklad+base[i].oklad*50/100;
printf("|%15s|%10d|%10d|%10d|%10.2f|\n",
base[i].name,base[i].god_r,base[i].stag,base[i].oklad, base[i].zarplatta);
}
printf("<br> ___\n");
getch();
return 0;
}
Объяснение кода листинга программы
- В начале кода объявлены переменные
i,n,dи структураzarplata. - В структуре
zarplataсодержатся поляname,god_r,stag,okladиzarplatta. - Создается массив структур
zarplataразмером 50 элементов с именемbase. - Пользователю предлагается ввести количество сотрудников (переменная
n). - Затем происходит цикл, в котором пользователю предлагается ввести данные для каждого сотрудника: ФИО, год рождения, стаж, оклад.
- Данные записываются в соответствующие поля структуры
zarplata. - После ввода всех данных выводится таблица с данными о сотрудниках, включая их ФИО, год рождения, стаж, оклад и зарплату.
- Зарплата рассчитывается в зависимости от стажа: если стаж от 0 до 4, зарплата равна окладу. Если стаж от 5 до 9, к окладу добавляется 10% от оклада. Если стаж от 10 до 19, к окладу добавляется 30% от оклада. Если стаж от 20 до 50, к окладу добавляется 50% от оклада.
- В конце программы пользователю предлагается нажать любую клавишу для выхода.
- Программа возвращает 0, что означает успешное выполнение.