Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
inesta
0 / 0 / 0
Регистрация: 30.03.2010
Сообщений: 19
#1

Массивы: рассчитать зарплату работника - C++

02.06.2010, 02:15. Просмотров 708. Ответов 4
Метки нет (Все метки)

Уважаемые ГУРУ, дошел до массивов. Суть задачи такова: использовать одномерный массив, вводить валовую прибыль работников за неделю, рассчитать зарплату работника за формулой 9% от валовой прибыли + 200 уе - ставка. Соответственно от величины валовой прибыли будет меняться диапазон зарплат. Посчитать сколько работников получили зарплату в каждом диапазоне. Пожалуйста замечания к коду. Спасибо огромное!

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
//Зарплата
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>
 
main()
{
    const int arraySize = 10, frequency = 10;
    int pay[arraySize] = {200, 299, 399, 499, 599, 699, 799, 899, 999, 1000};
    int pay1[frequency] = {0};  //массив-счетчик
    int forWeek, sum;
 
    do{
    cout << "gross profit ( 1 worker ) -> ";
    cin >> forWeek;
 
    sum = forWeek * 0.09 + 200 + 1; //зарплата 1-го работника
 
    for(int i = 0; sum > pay[i]; i++)   //пока зарплата работника больше данного диапазона
        if(pay[i] >= sum || sum <= pay[i + 1])  //если нах. между определ. диапазонами(напр. 200-299)
            ++pay1[i+1];    //плюсуем к индексу 1 массива-счетчика(напр. диапазон 200-299; 299 нах в массиве под индексом 1)
        if(sum >= pay[9])   //если же зарплата больше чем 1000
            ++pay1[9];  //тогда плюс к 10 индексу массива счетчика
 
     }while(forWeek != -1);
 
    cout << endl <<"-------"<< setw(14) << "-----------" << endl
         << " range"<< setw(14) << "frequency" << endl
         << "-------"<< setw(14) << "-----------"<<endl;
         
    for(int j = 1; j < frequency; j++ )
        cout << j << ". " << setw(4) <<pay[j]
             << setw(9) << pay1[j] << endl;
 
 
 
getch();
return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2010, 02:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массивы: рассчитать зарплату работника (C++):

Расчитать зарплату госслужащего исходя из количества отработанных часов и почасовой ставки работника - C++
Здравствуйте, ув. программисты. Наткнулся на задачу. Ниже условия: &quot;Необходимо расчитать зарплату госслужащего исходя из...

Рассчитать зарплату для каждого рабочего - C++
Рабочие изготавливают различные изделия. Рассчитать зарплату для каждого рабочего, учитывая, что стоимость изделия, зависит от его кода....

Одномерные массивы. Рассчитать в новом массиве выручку от продаж каждого товара - C++
Нужна помощь в проге по данным условиям: Имеются сведения о продажах: название товара, количество товара, его цена. Эти свдения хранятся...

Двухмерные массивы. Рассчитать среднюю температуру в первом столбце и среднюю во втором столбце - C++
Здравствуйте. Мне нужна программа, в которой используются двухмерные массивы. Массив должен состоять из семи строчек и двух столбцов....

зар. плата работника - C++
составить алгоритм и программу определения разницы между наибольшей и наименьшей зарплатой N работников, если заработная плата каждого...

Поиск работника по базе данных - C++
Всем доброго времени суток, прошу сказать в чем ошибка. Писал программу которая как бы добавляет работников в базу данных и потом по имени...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
easybudda
Модератор
Эксперт CЭксперт С++
9632 / 5580 / 948
Регистрация: 25.07.2009
Сообщений: 10,714
02.06.2010, 02:36 #2
inesta, 1:
Цитата Сообщение от inesta Посмотреть сообщение
main()
На С++ правильно
C++
1
int main()
2.
Цитата Сообщение от inesta Посмотреть сообщение
const int arraySize = 10, frequency = 10;
Не понятно, зачем две константных переменных с одинаковым значением...
Но это всё цветочки, а вот ягодка:
Цитата Сообщение от inesta Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    do{
    cout << "gross profit ( 1 worker ) -> ";
    cin >> forWeek;
 
    sum = forWeek * 0.09 + 200 + 1;     //зарплата 1-го работника
 
    for(int i = 0; sum > pay[i]; i++)   //пока зарплата работника больше данного диапазона
        if(pay[i] >= sum || sum <= pay[i + 1])  //если нах. между определ. диапазонами(напр. 200-299)
            ++pay1[i+1];        //плюсуем к индексу 1 массива-счетчика(напр. диапазон 200-299; 299 нах в массиве под индексом 1)
        if(sum >= pay[9])       //если же зарплата больше чем 1000
            ++pay1[9];  //тогда плюс к 10 индексу массива счетчика
 
     }while(forWeek != -1);
Когда пользователь введёт -1, это значение вместе с остальными посчитается, а уж потом цикл прервётся.
Если не считать возможным случай, что какой-нибудь бедолага ноль денег заработает, я бы как-то так сделал:
C++
1
2
3
4
5
...
while ( cout << "gross profit ( 1 worker ) -> " && cin >> forWeek && forWeek > 0 ){
...
}
...
И ещё: денежные суммы как-то принято в переменных double хранить, и это не с проста:
Цитата Сообщение от inesta Посмотреть сообщение
sum = forWeek * 0.09 + 200 + 1;
sum имеет тип int. Какой там она после отбрасывания дробной части будет - разбираться лень, но точно кто-то пары тугриков не досчитается...
1
inesta
0 / 0 / 0
Регистрация: 30.03.2010
Сообщений: 19
02.06.2010, 02:39  [ТС] #3
спасибо, но если он заработает 0 то у него будет голая ставка 200 уе) -1 не в счет - проверено. Если допустим ввести 12, 12, 12 и ввести метку -1 в итоге будет равно 3 работника заработали до 299 )
на счет дабл знаем, автор разрешил опустить. Нам главное целые показать
0
easybudda
Модератор
Эксперт CЭксперт С++
9632 / 5580 / 948
Регистрация: 25.07.2009
Сообщений: 10,714
02.06.2010, 02:51 #4
Цитата Сообщение от inesta Посмотреть сообщение
если он заработает 0 то у него будет голая ставка 200 уе)
Вот с этим согласен, а
Цитата Сообщение от inesta Посмотреть сообщение
Если допустим ввести 12, 12, 12 и ввести метку -1 в итоге будет равно 3 работника заработали до 299 )
это потому, что значения меньше 200 просто не проверяются. А так присутствует ещё один персонаж с отрицательной зарплатой...
1
inesta
0 / 0 / 0
Регистрация: 30.03.2010
Сообщений: 19
02.06.2010, 02:54  [ТС] #5
Цитата Сообщение от easybudda Посмотреть сообщение
Вот с этим согласен, а

это потому, что значения меньше 200 просто не проверяются. А так присутствует ещё один персонаж с отрицательной зарплатой...
неа, все нормально выводит, хоть 300 раз 300
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2010, 02:54
Привет! Вот еще темы с ответами:

Функции: подсчет годовой зарплаты работника - C++
Задача: Известна ежемесячная заработная плата персонала предприятия в течение календарного года. Вывести фамилии тех сотрудников, у...

Ошибки в программе вычисления пособия работника (Лафоре) - C++
Прошу проверить правильность решения задания из книги Лафоре 4. Создайте структуру с именем employee, содержащую два поля: номер со-...

Определить на каком станке продуктивность каждого работника будет максимальной. - C++
На заводе есть N-работников и N-станков . Задана матрица a , где a - продуктивность i-го работника на j-м станке. Определить на каком...

Известны данные о зарплате каждого работника бригады, в бригаде 25 человек - C++
Известны данные о зарплате каждого работника бригады, в бригаде 25 человек. Определить суммарную заработную плату бригады и количество...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.06.2010, 02:54
Ответ Создать тему
Опции темы

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