Программа неправильно считает еженедельную зарплату каждого служащего - C (СИ)
Формулировка задачи:
Есть задача:
Компания платит своим служащим как администраторам (это те, кто получает еженедельно фиксированную зарплату), работникам с почасовой оплатой (те, кто получает фиксированную почасовую оплату за первые 40 отработанных часов и «полуторную», т.е. превышающую в 1.5 раз их почасовую, оплату за сверхурочные часы работы), работникам с комиссионным вознаграждением (те, кто по*лучает $250 плюс 5.7% от их валовых еженедельных продаж) и ра*ботникам со сдельной оплатой труда (те, кто получает фиксирован*ную сумму денег за каждую единицу произведенной ими продукции- каждый сдельщик в этой компании работает только с одной разновидностью продукции). Напишите программу для расче*та еженедельной зарплаты каждого служащего. Вам неизвестно за*ранее количество служащих. Служащий каждой из групп имеет соб*ственный код оплаты: администраторы имеют код оплаты 1, работники с почасовой оплатой имеют код 2, работники с комисси*онным вознаграждением имеют код 3 и работники со сдельной опла*той труда имеют код 4. Используйте оператор switch для расчета зарплаты каждого служащего в зависимости от его кода. Внутри оператора switch попросите пользователя (т.е. клерка, рассчитываю*щего зарплату) ввести соответствующие данные, которые потребу*ются вашей программе для расчета зарплаты каждого служащего, исходя из его кода оплаты.
Есть код на Си:
Почти все нормально работает,но когда при вводе кода №3 и вводе любого числа в еженедельные валовые продажи пишет 0, Причем! Если я убираю из этой формулы прибавление 250(ну или как у меня q) процент он считает и выводит число,а не 0. Что не так?
P.S. Знаю что код не очень то хорош но по другому остальные пункты не работали.
Листинг программы
- #include <stdio.h>
- #include <locale.h>
- int main()
- {
- int cog,chas,sverh,i,e,valprod,q;
- double oplata,zarplata,g,w;
- setlocale(LC_ALL, "Russian");
- puts("Введите код оплаты(1-Администратор,2-почасовая оплата,\n3-с коммисионным вознагрождением,4-сдельная оплата");
- puts("Ctrl + Z для окончания");
- oplata=0;
- i=40;
- g=1.5;
- valprod=0;
- w=5.7;
- e=100;
- q=250;
- while((cog=getchar())!=EOF)
- {
- switch (cog)
- {
- case'1':
- puts("Ведите вашу еженедельную оплату");
- scanf("%d",&oplata);
- printf("Ваша еженедельная зарплата: %d",oplata);
- break;
- case'2':
- puts("Ведите вашу часовую зарплату");
- scanf("%d",&oplata);
- puts("Сколько часов на этой неделе вы работали?");
- scanf("%d",&chas);
- if(chas>40){
- sverh=chas-i;
- zarplata=((oplata*g)*sverh)+(oplata*i);
- printf("Ваша еженедельная зарплата: %d\n",zarplata);
- }
- else{
- zarplata=oplata*(double)chas;
- printf("Ваша еженедельная зарплата: %d\n",zarplata);}
- break;
- case'3':
- puts("Ведите ваши валовые еженедельный продажи");
- scanf("%d",&oplata);
- zarplata= ((oplata*w)/e+q) ;
- printf("Ваша еженедельная зарплата: %d\n", zarplata);
- break;
- case'4':
- puts("Ведите сколько вы получаете денег за единицу продукции");
- scanf("%d",&oplata);
- puts("Ведите сколько вы произвели продукцию за неделю");
- scanf("%d",&chas);
- zarplata=oplata*(double)chas;
- printf("Ваша еженедельная зарплата: %d\n",zarplata);
- break;
- case'\n':
- case'\t':
- case' ':
- break;
- default:
- puts("Неккоректный ввод");
- break;
- }
- }
- return 0;
- }
Решение задачи: «Программа неправильно считает еженедельную зарплату каждого служащего»
textual
Листинг программы
- printf("Ваша еженедельная зарплата: %f\n", zarplata);
Объяснение кода листинга программы
- Программа запрашивает у пользователя информацию о зарплате каждого служащего
- Полученные данные сохраняются в переменную
zarplata
- Затем программа выводит на экран сообщение с еженедельной зарплатой каждого служащего, используя функцию printf
- Форматирование вывода осуществляется с помощью спецификатора формата
%f
, который указывает на то, что необходимо вывести переменнуюzarplata
в формате с плавающей точкой - После вывода сообщения на экран программа завершается
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д