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

Сумма отсортированных массивов - C++

Восстановить пароль Регистрация
 
varchenko
0 / 0 / 0
Регистрация: 19.02.2016
Сообщений: 14
20.02.2016, 18:37     Сумма отсортированных массивов #1
Данные массивы чисел a (i), b(i),c(i) . (i..1..2..3..k) .В массиве a вычислить сумму n крупнейших членов, в массиве b b - сумму 5 крупнейших членов, в массиве с c - сумму l (n, l<k ; k>5) k- количество чисел в масиве
отсортировано, но не могу найти сумму. помогите кодом, или идеей

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
#include <stdio.h>
 
 void InPut(float [], int & ,char);
 void OutPut(float[], int ,char);
 void BubbleSort(float[], int );
 
 
 
int main()
 {
          float a[100],b[100],c[100], u;
          int Na,Nb,Nc;
          InPut(a,Na,'A');
          OutPut(a,Na,'A');
          InPut(b,Nb,'B');
          OutPut(b,Nb,'B');
          InPut(c,Nc,'C');
          OutPut(c,Nc,'C');
          BubbleSort(a,Na);
          BubbleSort(b,Nb);
          BubbleSort(c,Nc);
          OutPut(a,Na,'A');
          OutPut(b,Nb,'B');
          OutPut(c,Nc,'C');
        
 
 
}
 
 void InPut(float X[], int &n, char S)
 {
      int i;
     while(1)
      {
        printf("Ведiть кiлькiсть масиву %c ",S);
        scanf("%d",&n);
        if (n>0&&n<=100) break;
        printf("ППВ");
        }
 
      for(i=0;i<n;i++)
      {
  printf("Введiть %c[%d] ", S,i);
  scanf("%f",X+i);
      }
}
 
 
 void OutPut(float X[], int n, char S)
 {
      int i;
   printf(" Масив %c \n",S);
   for(i=0;i<n;i++)
   printf("%6.2f  ",*(X+i));
   printf("\n");
}
void BubbleSort(float X[], int n)
  {
      int zn, k, i;
      for(i=0;i<n;i++) //До те пор пока количество циклов не больше размерности массива, выполняем цикл:
    {
        for(k=0;k<n-1;k++) //До тех пор пока не переберём все элементы массива, выполняем цикл:
          {
            if(X[k]<X[k+1])    // если текущий элемент массива меньше следующего, то
            {
             /*меняем их местами*/
             zn=X[k];
             X[k]=X[k+1];
             X[k+1]=zn;
 
            }
                     }
    }
  }
преподаватель сказал создать функцию
C++
1
2
3
4
5
6
7
8
 float Obr(int n, float X[], int &m)
    S=0;
    for(i=0; i<k-1; i+1)
    {
   S=S+X[i];
    }
    return S;
            }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MihalNik
55 / 55 / 6
Регистрация: 01.12.2012
Сообщений: 431
20.02.2016, 18:55     Сумма отсортированных массивов #2
C
1
2
float S= 0;
for(int i= 0; i<n; i++)//где n - число складываемых крупнейших членов отсортированного массива
Добавлено через 3 минуты
На будущее: ошибки компилятора надо выкладывать.
varchenko
0 / 0 / 0
Регистрация: 19.02.2016
Сообщений: 14
20.02.2016, 20:25  [ТС]     Сумма отсортированных массивов #3
Компилятор
1.obr.cpp: In function ‘int main()’:
1.obr.cpp:25:19: error: invalid conversion from ‘float*’ to ‘int’ [-fpermissive]
Obr(a,Ma);
^
1.obr.cpp:25:19: error: invalid conversion from ‘int’ to ‘float*’ [-fpermissive]
1.obr.cpp:25:19: error: too few arguments to function ‘void Obr(int, float*, int&)’
1.obr.cpp:6:7: note: declared here
void Obr(int, float[], int &);
^
1.obr.cpp: In function ‘float Obr(int, float*, int&)’:
1.obr.cpp:74:37: error: new declaration ‘float Obr(int, float*, int&)’
float Obr(int n, float X[], int &m)
^
1.obr.cpp:6:7: error: ambiguates old declaration ‘void Obr(int, float*, int&)’
void Obr(int, float[], int &);



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
79
80
81
82
83
84
#include <stdio.h>
 
 void InPut(float [], int & ,char);
 void OutPut(float[], int ,char);
 void BubbleSort(float[], int );
 void Obr(int, float[], int &);
 
 
int main()
 {
          float a[100],b[100],c[100], u;
          int Na,Nb,Nc, Ma;
          InPut(a,Na,'A');
          OutPut(a,Na,'A');
          InPut(b,Nb,'B');
          OutPut(b,Nb,'B');
          InPut(c,Nc,'C');
          OutPut(c,Nc,'C');
          BubbleSort(a,Na);
          BubbleSort(b,Nb);
          BubbleSort(c,Nc);
          OutPut(a,Na,'A');
          OutPut(b,Nb,'B');
          OutPut(c,Nc,'C');
          Obr(a,Ma);
 
 
}
 
 void InPut(float X[], int &n, char S)
 {
      int i;
     while(1)
      {
        printf("Ведiть кiлькiсть масиву %c ",S);
        scanf("%d",&n);
        if (n>0&&n<=100) break;
        printf("ППВ");
        }
 
      for(i=0;i<n;i++)
      {
  printf("Введiть %c[%d] ", S,i);
  scanf("%f",X+i);
      }
}
 
 
 void OutPut(float X[], int n, char S)
 {
      int i;
   printf(" Масив %c \n",S);
   for(i=0;i<n;i++)
   printf("%6.2f  ",*(X+i));
   printf("\n");
}
void BubbleSort(float X[], int n)
  {
      int zn, k, i;
      for(i=0;i<n;i++) //До те пор пока количество циклов не больше размерности массива, выполняем цикл:
    {
        for(k=0;k<n-1;k++) //До тех пор пока не переберём все элементы массива, выполняем цикл:
          {
            if(X[k]<X[k+1])    // если текущий элемент массива меньше следующего, то
            {
             /*меняем их местами*/
             zn=X[k];
             X[k]=X[k+1];
             X[k+1]=zn;
                    }
           }
    }
  }
  float Obr(int n, float X[], int &m)
  {
    int  i;
   float S=0;
for(int i= 0; i<n; i++)
    S=S+X[i];
    return S;
 
 
 
  }
MihalNik
55 / 55 / 6
Регистрация: 01.12.2012
Сообщений: 431
20.02.2016, 21:37     Сумма отсортированных массивов #4
В протипе в 6 Obr неверно объявлена как void, в 74 - получается переобъявление как float.
В 25 нехватает аргументов и несоответствие типа - должно быть столько, сколько объявлено в функции, в том же порядке. Если третий не нужен (а он нигде не используется) - надо удалить из обоих заголовков.
varchenko
0 / 0 / 0
Регистрация: 19.02.2016
Сообщений: 14
20.02.2016, 22:19  [ТС]     Сумма отсортированных массивов #5
много ошибок, поэтому я вообще не знаю как написать код, который бы нашел суммы. а последняя функция только допущение
MihalNik
55 / 55 / 6
Регистрация: 01.12.2012
Сообщений: 431
20.02.2016, 22:28     Сумма отсортированных массивов #6
Какое допущение? Последняя функция ищет сумму n крупнейших членов отсортированного по убыванию массива.
Исправить только заголовки:
C
1
float Obr(int n, float X[]) //оба!
и вызов функции
Obr(<число крупнейших членов>,<отсортированный по убыванию массив>);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2016, 00:53     Сумма отсортированных массивов
Еще ссылки по теме:

Из двух отсортированных по возрастанию массивов сформировать третий, отсортированный также по возрастанию C++
C++ Сумма элементов массивов
Сумма двух целочисленных массивов C++

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

Или воспользуйтесь поиском по форуму:
varchenko
0 / 0 / 0
Регистрация: 19.02.2016
Сообщений: 14
21.02.2016, 00:53  [ТС]     Сумма отсортированных массивов #7
Добавлено через 2 часа 3 минуты
MihalNik,
Очень, очень благодарю. Все работает, суммирует и выводит.
последний вопрос, как сделать, чтобы выполнялось это неравенство? (N, l <k; k> 5)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
    int  i;
   float SumMas=0;
   while(1)
      {
        printf("Ввод n");
        scanf("%d",&n);
        if (n>0&&n<=100) break;
        printf("ППВ");
        }
for(int i= 0; i<n; i++)
    SumMas=SumMas+X[i];
   printf("%6.2f  ",SumMas);
   printf("\n");
    return SumMas;
 
 }
Yandex
Объявления
21.02.2016, 00:53     Сумма отсортированных массивов
Ответ Создать тему

Метки
c++, новичок, сортировка, сумма
Опции темы

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