Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
ArxRash
0 / 0 / 0
Регистрация: 06.01.2016
Сообщений: 89
1

Программа неправильно считает еженедельную зарплату каждого служащего

06.01.2016, 14:27. Просмотров 903. Ответов 4
Метки нет (Все метки)

Есть задача:
Компания платит своим служащим как администраторам (это те, кто получает еженедельно фиксированную зарплату), работникам с почасовой оплатой (те, кто получает фиксированную почасовую оплату за первые 40 отработанных часов и «полуторную», т.е. превышающую в 1.5 раз их почасовую, оплату за сверхурочные часы работы), работникам с комиссионным вознаграждением (те, кто по*лучает $250 плюс 5.7% от их валовых еженедельных продаж) и ра*ботникам со сдельной оплатой труда (те, кто получает фиксирован*ную сумму денег за каждую единицу произведенной ими продукции- каждый сдельщик в этой компании работает только с одной разновидностью продукции). Напишите программу для расче*та еженедельной зарплаты каждого служащего. Вам неизвестно за*ранее количество служащих. Служащий каждой из групп имеет соб*ственный код оплаты: администраторы имеют код оплаты 1, работники с почасовой оплатой имеют код 2, работники с комисси*онным вознаграждением имеют код 3 и работники со сдельной опла*той труда имеют код 4. Используйте оператор switch для расчета зарплаты каждого служащего в зависимости от его кода. Внутри оператора switch попросите пользователя (т.е. клерка, рассчитываю*щего зарплату) ввести соответствующие данные, которые потребу*ются вашей программе для расчета зарплаты каждого служащего, исходя из его кода оплаты.
Есть код на Си:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#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;
}
Почти все нормально работает,но когда при вводе кода №3 и вводе любого числа в еженедельные валовые продажи пишет 0, Причем! Если я убираю из этой формулы прибавление 250(ну или как у меня q) процент он считает и выводит число,а не 0. Что не так?
P.S. Знаю что код не очень то хорош но по другому остальные пункты не работали.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2016, 14:27
Ответы с готовыми решениями:

Strlen неправильно считает
Вот код: #include &lt;stdio.h&gt; #include &lt;string.h&gt; void...

Неправильно считает интеграл
написал два метода Симпсона и Монте-Карло, но 2-ой не правильно считает,...

Почему неправильно считает матрицу?
#include &quot;stdafx.h&quot; #include &quot;conio.h&quot; #include&quot;stdio.h&quot; #define N 3...

Треугольник задан координатами своих вершин. Составить программу вычисления его площади. Почему-то считает неправильно
Задачу нужно решить с помощью функций.Почему-то все время вместо площади...

Программа работает, а не считает
Всем доброго времени суток! Делаю себе лабораторные. Скоро модуль. Блок-схемы...

4
Apostol584
243 / 149 / 118
Регистрация: 26.11.2012
Сообщений: 375
Завершенные тесты: 2
06.01.2016, 15:41 2
%d замените на %f
C
1
printf("Ваша еженедельная зарплата: %f\n", zarplata);
0
ArxRash
0 / 0 / 0
Регистрация: 06.01.2016
Сообщений: 89
06.01.2016, 15:45  [ТС] 3
Нет,не помогло. Выводит только 250,000000 и все расчет процентов и сложение не идет
0
Apostol584
243 / 149 / 118
Регистрация: 26.11.2012
Сообщений: 375
Завершенные тесты: 2
06.01.2016, 15:59 4
Лучший ответ Сообщение было отмечено ArxRash как решение

Решение

для double используем спецификатор "%lf"
1
ArxRash
0 / 0 / 0
Регистрация: 06.01.2016
Сообщений: 89
06.01.2016, 16:06  [ТС] 5
Спасибо,помогло.
0
06.01.2016, 16:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.01.2016, 16:06

Программа не считает количество пробелов в строке
Добрый день! Программа компилируется, подсчитывает количество строк и...

Программа не считает минимальный элемент главной диагонали
#include &lt;stdio.h&gt; int main(void) { int a; int i, j,...

Почему программа на линуксе считает одно а на 7-ке другое?
#include &lt;stdio.h&gt; #include &lt;math.h&gt; #define w 4 double temp_matrix; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru