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

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

Войти
Регистрация
Восстановить пароль
 
UKOL
112 / 64 / 7
Регистрация: 17.11.2009
Сообщений: 258
#1

Одномерный массив - C++

15.03.2010, 10:16. Просмотров 1042. Ответов 3
Метки нет (Все метки)

Помогите решить задачу на С++.
Используйте одномерный массив для решения следующей задачи.
Компания платит своим продавцам на комиссионной основе. Продавцы получают $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-800
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
40
41
42
43
#include <iostream>
#include <time.h>
#include <iomanip>
using namespace std;
 
int main()
{
    srand(time(NULL));
    int arraySize, raschet=200, kategor=10;
    float procent=(float)(0.09);
    cout << "Please enter kol-vo prodavcov: ";
    cin >> arraySize;
    int prodaji[100]={0};
    int frequency[100]={0};
    int zarplata[100]={0};
 
    //Забиваем в массив значения валого дохода
    for(int i=0; i<arraySize; i++)
    {
        prodaji[i]=(1+rand()%5000);
    }
    //Вывод на экран валого дохода
    for(int i=0; i<arraySize; i++)
        cout << "Prodaja " <<i+1<<" rabochego: " << prodaji[i] << endl;
    cout << endl;
    //Расчет зарполаты каждого продавца с учетом процентов и положенных 200 баксов
    for(int i=0;i<arraySize; i++)
        zarplata[i]=((prodaji[i]*procent)+200);
    //Вывод на экран
    for(int i=0;i<arraySize;i++)
        cout << "Zarplata " << i+1 << " rabocego:" << zarplata[i] << endl;
    cout << endl;
    //То самое место где непонятно что дальше делать и как определить диапазон и вбить в него счетчик
    /*for(int i=0;i<arraySize;i++)
    {
        ++frequency[zarplata[i]];
    }
 
    for(int i=1;i<kategor;i++)
        cout << i << '.' << setw(10) << frequency[i] << endl;*/
 
    return 0;
}
Добавлено через 16 часов 12 минут
Народ! Жду ваших отзывов, и расчитываю на вас.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2010, 10:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Одномерный массив (C++):

Матрица и одномерный массив (Составить одномерный массив, содержащий количество буквенных символов в каждом из ее столбцов, подсчет символов) - C++
Помогите решить задачку: Дана матрица 5х7, элементами которой являются значения символьного типа. Составить одномерный массив, содержащий...

Массив: преобразорвать двумерный массив в одномерный и отсортировать его методом пузырька - C++
всем привет. народ помогите с прогой, конкретно с функцией sort (65 строка), она должна двухмерный массив перевести построчно в одномерный...

Массив: Все элементы массива, кратные трем, записать в одномерный массив. - C++
Дан двумерный массив размером n x n? заполненный целыми числами. Все его элементы кратные трем, записать в одномерный массив.

Массив: найти номера столбцов с положительными элементами и записать их в одномерный массив - C++
ввести двумерный массив I . найти номера столбцов с положительными элементами и записать их в одномерный массив, отобразить его на экране. ...

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

Целочисленный массив с размером 4*4 .Написать прогу , формирующую одномерный массив - C++
Целочисленный массив с размером 4*4 .Написать прогу , формирующую одномерный массив. #include &lt;iostream&gt; using namespace std; ...

3
Yurii_74
paladin
280 / 180 / 3
Регистрация: 25.02.2009
Сообщений: 592
15.03.2010, 10:56 #2
Здесь нужен массив из 9 элементов (пусть будет conters). В зависимости от того, куда попала зарплата продавцов увеличиваем значение одного из элементов.
C++
1
2
3
4
5
6
7
8
9
10
11
12
int counters[9];
for (i=0;i<9;i++) counters = 0;
 
for (i=0;i<arraySize;i++)
if (zarplata[i]>999)
{
  counters[8]++;
}
else
{
  counters[((zarplata[i]-200)/100)]++;
};
1
UKOL
112 / 64 / 7
Регистрация: 17.11.2009
Сообщений: 258
15.03.2010, 11:20  [ТС] #3
Благодарю!!!

Вот полный код, может кому то пригодится

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
#include <iostream>
#include <time.h>
#include <iomanip>
using namespace std;
 
int main()
{
    srand(time(NULL));
    int arraySize, raschet=200, kategor=10;
    float procent=(float)(0.09);
    cout << "Please enter kol-vo prodavcov: ";
    cin >> arraySize;
    int prodaji[100]={0};
    int frequency[100]={0};
    int zarplata[100]={0};
 
    //Забиваем в массив значения валого дохода
    for(int i=0; i<arraySize; i++)
    {
        prodaji[i]=(1+rand()%50000);
    }
    //Вывод на экран валого дохода
    for(int i=0; i<arraySize; i++)
        cout << "Prodaja " << i+1 <<" rabochego: " << prodaji[i] << endl;
    cout << endl;
    //Расчет зарполаты каждого продавца с учетом процентов и положенных 200 баксов
    for(int i=0;i<arraySize; i++)
        zarplata[i]=((prodaji[i]*procent)+200);
    //Вывод на экран
    for(int i=0;i<arraySize;i++)
        cout << "Zarplata " << i+1 << " rabocego:" << zarplata[i] << endl;
    cout << endl;
    //счетчик количества зарплаты по диапазону
    for (int i=0;i<arraySize;i++)
    {
        if (zarplata[i]>999)
        {
            frequency[9]++;
        }
        else
        {
             frequency[((zarplata[i]-200)/100)]++;
        }
    }
 
        for(int i=0;i<kategor;i++)
                cout << i << '.' << setw(10) << frequency[i] << endl;
    return 0;
}
0
System16v
3 / 3 / 0
Регистрация: 19.02.2014
Сообщений: 115
01.04.2015, 18:42 #4
А почему з/п считается рандомно? .Мне кажется по заданию просилось чтоб ты ее сам вбивал,да и логичней так, зарплата ведь не может быть рандомной . Я вот написал код,где кол-во сотрудников не ограничено(образно).Т.е. создал просто большой массив,и количество сотрудников никогда не превысит размер массива(образно).Хотел сначала вообще чтоб размер определялся только после введения зарплат,но так не получилось,пришлось просто большой размер массива делать.Ну сделал чтоб зарплаты вводишь сам,в цикле с выходом "-1",ну и вывод на экран. В общем как понял задачу,так и реализовал (надеюсь правильно в плане реализации),выводит вроде всё правильно .Есть одна не понятка со счетом процентов(указал в комментариях кода),так не допер,почему он считает сумму на 1 меньше,чем нужно,пришлось прибавлять единицу,чтоб считал нормально.Кто знает почему,объясните. Ну и так, может кому код пригодится
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
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <iomanip>
 
using namespace std;
 
 
int main()
{
   int sum=0,pr=0; // pr - счетчик подсчета количества продавцов
   const int size=100,size1=12;
   // 1ый массив для суммы продаж (изначально планровал любой,но т.к.
   // не получилось,пришлось ставить заведомо большое число которое будет всегда
   // больше,чем кол-во сотрудников. 2й массив для вывода кол-ва сотрудников
   int array[size]={0};
   int array1[size1]={0};
   while(sum!=-1)
     {
      cout << "Vvedite summy prodag prodavcov(-1 dlya vihoda): " ;
      cin >> sum;
      array[pr]=201+sum*0.09;  // не знаю почему,но пришлось добавить к 200
      // единицу,иначе считает на единицу меньше,так и не понял почему
      pr++;
     }
   cout << endl << endl;
   cout << "  Zarplata" << "  Kol-vo ch" << endl;
   cout << "--------------------------------" <<endl;
   for(int a=0;a<pr-1;a++)
   // pr-1 стоит потому,что если использовать просто pr,то в массив
   // прописывается лишнее значение "-1",использумое для выхода из цикла while
   {  // считаем какой элемент во 2ом массиве нужно увеличить
      if(array[a]/100<10)
          array1[array[a]/100]++;
      // если получаем индекс до 10ти,то увеличиваем тот элемент,
      // который получился,если больше 10ти,то увеличиваем только 10ый элемент
      // нужно это для того,чтоб если при расчете получается индекс более 10ти,
      // чтоб не вылезло за предел массива
      else if(array[a]/100>10)
          array1[10]++;
   }
   for(int b=0;b<size1-3;b++) // вывод на экран количество сотрудников
   // size-3 - потому что не используются первые 2 значения 0-99,100-199
      {
         if(b==0)
            cout << " 200$-299$: ";
         else if(b==8)
            cout << "Over 1000$: ";
         else
            cout << " " << (b*100)+200 << "$" << "-" << (b*100)+299 << "$: ";
      // array1[b+2] - потому,у нас не учитываются зарплаты 0-99$,100-199,и
      // нужный нам 1ый элемент находится на позиции array[2],а не array[0]
      // без использования +2,у нас вывод элементов был бы неправильным,
      // смещенным на 2 позиции влево. Отсюда и размерность 2го массива была
      // увеличена на 2,т.е. 12,а не 10
         cout << "\t" << array1[b+2];
         cout << endl;
      }
   cout << endl;
   system("pause");
   return 0;
}
Добавлено через 1 час 6 минут
Кстати заметил косяк...В 40вой строке надо условие изменить на
C++
1
 else if(array[a]/100>=10)
,а то не все значения входят.Ну и сообразил переделал 2й массив с размерностью 9,а не 12ть. В общем,вот доделанная
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
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <iomanip>
 
using namespace std;
 
 
int main()
{
   int sum=0,pr=0;
   const int size=100,size1=9;
   int array[size]={0};
   int array1[size1]={0};
   while(sum!=-1)
     {
      cout << "Vvedite summy prodag prodavcov(-1 dlya vihoda): " ;
      cin >> sum;
      array[pr]=201+sum*0.09;
      pr++;
     }
   cout << "  Zarplata" << "  Kol-vo ch" << endl;
   cout << "--------------------------------" <<endl;
   for(int a=0;a<pr-1;a++)
   {
      if(array[a]/100<10)
          array1[(array[a]/100)-2]++;
      else if(array[a]/100>=10)
          array1[8]++;
   }
   for(int b=0;b<size1;b++)
      {
         if(b==0)
            cout << " 200$-299$: ";
         else if(b==8)
            cout << "Over 1000$: ";
         else
            cout << " " << (b*100)+200 << "$" << "-" << (b*100)+299 << "$: ";
         cout << "\t" << array1[b];
         cout << endl;
      }
   cout << endl;
   system("pause");
   return 0;
}
0
01.04.2015, 18:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2015, 18:42
Привет! Вот еще темы с ответами:

Дан двумерный массив 3х3. Получить одномерный массив из из отрицательных элементов матрицы. - C++
Пожалуйста, помогите решить простым методом задачку, просто не могу понять смысл ее выполнения. Дан двумерный массив 3х3.Получить...

Создать одномерный массив, заполнить его случайными значениями, отсортировать массив по убыванию - C++
создать одномерный массив, заполнить его случайными значениями, отсортировать массив по убыванию. получилось вот что: #include...

Сформировать одномерный массив, удалить первый элемент с заданным значением, сдвинуть массив циклически - C++
1)сформировать одномерный массив целых чисел 2)удалить первый элемент с заданным значением 3)сдвинуть массив циклически на К элементов...

Организовать одномерный массив с вещественными числами и найти первый и последний отрицательный элемент массив - C++
Организовать одномерный массив с вещественными числами и найти первый и последний отрицательный элемент массива;


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

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

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