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

Нужен совет по условию задачи. - C++

Восстановить пароль Регистрация
 
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
09.10.2011, 03:37     Нужен совет по условию задачи. #1
Всем доброго дня.

Занимаюсь по Дейтелу. в седьмой главе есть задача. Моя проблема в том что я не могу понять условие задачи.
Вот она на русском

Используйте одномерный массив для решения следующей задачи. Компания
платит своим продавцам на комиссионной основе. Продавцы получают 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 и более

Вот она на английском

Use a one-dimensional array to solve the following problem. A company pays its salespeople on a commission basis. The salespeople each receive $200 per week plus 9 percent of their gross sales for that week. For example, a salesperson who grosses $5000 in sales in a week receives $200 plus 9 percent of $5000, or a total of $650. Write a program (using an array of counters) that determines how many of the salespeople earned salaries in each of the following ranges (assume that each salesperson's salary is truncated to an integer amount):

a. $200$299

b. $300$399

c. $400$499

d. $500$599

e. $600$699

f. $700$799



На мой взгляд, исходя из того что каждый продовец может получить премию сумма которой может быть абсолютно любой, то в любом из следующих диапазонов может быть только один продавец. Что тогда должна делать программа? не могу понять.

з.ы. пожалуйста не пишите в качестве ответа код. Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2011, 03:37     Нужен совет по условию задачи.
Посмотрите здесь:

C++ нужен совет!!!
Нужен совет! C++
C++ Нужен совет
Нужен совет! C++
Нужен совет C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aeshes
 Аватар для aeshes
437 / 200 / 13
Регистрация: 07.10.2011
Сообщений: 462
09.10.2011, 03:54     Нужен совет по условию задачи. #2
по-моему. твоя задача аналог задачи про кубики и про опрос о студенческой столовой из той же главы.
У тебя есть массив зарплат продавцов. Например, 250, 317, 211, 799, 1024, 567, 619, 821, 2033
Тебе нужно подсчитать, сколько зарплат попадают в диапазон 200-299, 300-399 (все зарплаты выше 1000 считать одним диапазоном) и т.д., т.е. получить на выходе массив:
1 2 3 4 5 6 7 8 9 -> индексы - это номера диапазонов
2 1 0 1 1 1 1 0 2 -> элементы массива - число продавцов с зарплатой в диапазоне
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
09.10.2011, 04:31  [ТС]     Нужен совет по условию задачи. #3
aeshes,
т.е. фактически я должен взять на свое усмотрение любое количество продавцов, дать возможность пользователю ввести сумму валовых продаж за неделю для каждого продавца (или например приготовить заранее массив) и затем с учетом 9типроцентной премии посчитать сколько из них входит в диапазон. Мдя.. с точки зрения програмиирования задача элементарная.
aeshes
 Аватар для aeshes
437 / 200 / 13
Регистрация: 07.10.2011
Сообщений: 462
09.10.2011, 16:24     Нужен совет по условию задачи. #4
greeezz, да, именно так. Можно даже еще упростить и сразу считать, что у тебя есть N чисел - уже вычисленных зарплат. Суть задачи здесь не в том, чтоб она была сложная или очень приближенная к реальности, а в том, чтобы закрепить навыки использования элементов массива как счетчиков - просто тренировка одного из навыков
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
09.10.2011, 16:36     Нужен совет по условию задачи. #5
Ничего сложно, вот я когда-то делал
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
//Программа для вывода диаграммы зп работников
 
# include <iostream>
# include <iomanip>
# include <ctime>
# include <cstdlib>
using namespace std;
 
int main()
{
    const int size=15;
    int a[size]={0};
    int temp;
    for (int i=1;i<=10;i++)
    {
        cout<<"Enter sum for worker N"<<i<<": ";
        cin>>temp;
        a[(200+(temp/100*9))/100]++;
    }
    for (int i=2; i<size; i++)
    {
        if (i==10)
        {
            cout<<endl;
            cout<<i<<". $"<<"more "<<i*100;
        }
        else if (i>10);
        else
        {
            cout<<endl;
            cout<<i<<". $"<<i*100<<"-"<<i*100+99;
        }
        for(int j=0;j<a[i];j++)
        cout<<"*";
    }
    return 0;
}

Хотя вот теперь что-то вижу что в ней есть недостатки, нука сейчас поправлю ...
А нет, всё верно она делает, я забыл что там проценты начисляются так что всё правильно считает (за исключением проверки на переполнение).
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
09.10.2011, 18:33  [ТС]     Нужен совет по условию задачи. #6
Gepar,
С точки зрения программирования задача элементарная. Просто для меня программирование как математика. Задача должна быть поставлена однозначно, чтобы не надо было домысливать. С моей точки зрения у готовой программы только одна правильная логика. Именно та, которая нужна "заказчику". В данном случае автору книги.


P.S. ваш код не рабочий. Если например ввести sum 15000 в вашем массиве не к чему будет прибавлять единицу.

уж лучше тогда (на мой взгляд)
как то так

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
 
# include <iostream>
 
using namespace std;
 
int main() {
    const int size=11;
    int a[size]={0};
    int temp;
    int salary;
 
    for (int i=1;i<=5;i++) {
        cout<<"Enter sum for worker N"<<i<<": ";
        cin>>temp;
        salary = (200+(temp/100*9))/100;
        if(salary>=10){
            a[10]++;
        } else {
            a[salary]++;
        }
    }
    for (int i=2; i<size; ++i)  {
        if (i==10) {
            cout<<endl;
            cout<<i<<". $"<<"more "<<i*100;
        }
        else {
            cout<<endl;
            cout<<i<<". $"<<i*100<<"-"<<i*100+99;
        }
        for(int j=0;j<a[i];j++)  {
            cout<<"*";
        }
            
    }
 
    return 0;
}
Yandex
Объявления
09.10.2011, 18:33     Нужен совет по условию задачи.
Ответ Создать тему
Опции темы

Текущее время: 02:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru