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

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

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

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

20.01.2016, 13:48. Просмотров 205. Ответов 4
Метки нет (Все метки)

Как исправить код, чтобы он решал поставленную задачу?

В книжке попалась вот такая задача:

Используйте одномерный массив для решения следующий задачи. Компания платит продавцам на комиссионной основе. Продавцы получают 200 долларов в неделю плюс 9% от валовой продажи за эту неделю. Например, продавец, валовая продажа которого за неделю составила 5000 долларов, получает 200 долларов плюс 9% от 5000 долларов, или всего 650 долларов. Напишите программу (используя массив счетчиков), которая определяет, сколько продавцов получили заработную плату в каждом из следующих диапазонов (примем допущение, что зарплата каждого продавца округляется до целого значения):

1.200-299
2.300-399
3.400-499
4.500-599
5.600-699
6.700-799
7.800-899
8.900-999
9. 1000 и более.

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>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"RUS");
 
    int sellers[9] = {0}; // массив счетчиков... сколько итого бабла получит продавец... sellers[0] - 200-299, sellers[1] - 300-399 и т.д.
    int numberOfSales (0); // сколько продавец наторговал за неделю!
 
    while (cin >> numberOfSales) {
 
        numberOfSales = numberOfSales* 0.09 + 200;
        
        if (numberOfSales > 1000) // все результаты, когда продавец получит больше штуки засунуть в последний элемент массива
            ++sellers[8];
 
        ++sellers[numberOfSales / 100 - 2];
    }
    
    int lessValue (200), largerValue (299); // "от" и "до" для вывода результатов
    for (auto i = begin(sellers); i != end(sellers); ++i) {
        
        if (i == end(sellers)-1)
            cout << '$' << lessValue 
                 << " и более: "
                 << *i << '\n';
        else
        cout << '$' << lessValue 
             << "-$" << largerValue
             << ": " << *i << '\n';
 
        lessValue  +=100; largerValue += 100;
    }
 
    system("PAUSE");
    return 0;
}
Собственно, такая проблема - когда вводишь большое число (причем каждый раз по разному - может заругаться и на 300 тысяч, и на миллионе), компилятор пишет, что нарушил права чтения по адресу такому-то.... Хотя, вроде бы, в условии поставил, что все что больше тысячи - сувать в последний элемент массива
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2016, 13:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить, сколько продавцов получили заработную плату в каждом заданном диапазоне (C++):

Определить, какую заработную плату получит на фирме работник за выполненную работу, если ему начислено S, а налог составляет 20%. - C++
Использование функций возвращающих одно значение. Определить, какую заработную плату получит на фирме работник за выполненную работу,...

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

C++ сосчитать сколько и каких цифр встретилось в заданном диапазоне - C++
Помогите пожалуйста с кодом C++ сосчитать сколько и каких цифр встретилось в заданном диапазоне от a до b(которые заданы)

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

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

Сколько семерок использовано в записи всех возможных натуральных чисел в заданном диапазоне - C++
Сколько семерок использовано в записи ВСЕХ ВОЗМОЖНЫХ НАТУРАЛЬНЫХ ЧИСЕЛ от 1 до 10^8.

4
rikimaru2013
C++ Game Dev
2436 / 1130 / 240
Регистрация: 30.11.2013
Сообщений: 3,688
20.01.2016, 13:52 #2
Дам подсказку, неуверен что код ++sellers[numberOfSales / 100 - 2]; делает - зачем писать, что у других возникают вопросы, что он делает:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
using namespace std;
 
int main()
{
    int a = 433;
    cout << ( a / 100 ) << endl;
    return 0;
}
0
Strax77
0 / 0 / 0
Регистрация: 02.12.2015
Сообщений: 9
20.01.2016, 14:04  [ТС] #3
rikimaru2013,
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
++sellers[numberOfSales / 100 - 2];
Я не додумался как это еще можно реализовать..
К примеру продавец получит 350. Что соответствует
C++
1
sellers[1]
т.е. 300-399. 300/100 == sellers[3].
и -2 чтобы инкрементировать значение нужного элемента массива, т.е. не sellers[3] а sellers[1].
560 / 100 == sellers[5]. Надо sellers[3], поэтому -2.
За границы не должен выйти, потому что продавец в любом случае получит 200 баксов. 200/100 == sellers[2] - 2, в итоге sellers[0]
Надеюсь понятно стало

Подсказку не понял, к сожалению. Что-то не так с округлением, надо думать?
0
rikimaru2013
C++ Game Dev
2436 / 1130 / 240
Регистрация: 30.11.2013
Сообщений: 3,688
20.01.2016, 14:09 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Тоесть если ввести миллион, то будет +sellers[902 - 2]; ?
1
Strax77
0 / 0 / 0
Регистрация: 02.12.2015
Сообщений: 9
20.01.2016, 14:13  [ТС] #5
rikimaru2013, я вроде поставил в условии, что при значениях больше тысячи (если продавец бог торговли) инкрементировать последний счетчик.
C++
1
2
if (numberOfSales > 1000)
            ++sellers[8];

ептыть... я else забыл поставить... во дубина...
извиняюсь, вон в чем дело было
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2016, 14:13
Привет! Вот еще темы с ответами:

Определить сколько различных символов в каждом слове - C++
Разъясните, пожалуйста. Не могу понять как выполняется тело цикла while на примере строки &quot;1233&quot;(результат-3). Вот само задание:определить...

Определить, сколько бригад работает на каждом объекте стройки - C++
Написать программу. На стройке работает N бригад, причем на объекте Dom1 их в K раз больше, чем на объекте Dom2. Сколько их работает на...

Определить сколько раз в заданном тексте встречается A - C++
Дана строка из произвольного текста. Определить сколько раз в заданном тексте встречается A.

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


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

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

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