Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 19.02.2016
Сообщений: 15
1

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

20.02.2016, 18:37. Показов 868. Ответов 6

Author24 — интернет-сервис помощи студентам
Данные массивы чисел 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;
            }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.02.2016, 18:37
Ответы с готовыми решениями:

Слияние отсортированных массивов.
задача: есть двумерный целочисленный массив n на n в котором каждая строка отсортирована по...

Сравнение двух отсортированных массивов
Есть задача: Даны два массива a1≤a2≤⋯≤an и b1≤b2≤⋯≤bm. Нужно посчитать кол-во пар элементов...

функция поиска для отсортированных массивов?
есть класс объект которого отсортированный массив,нужно написать для этого класса функцию int...

Слияние двух отсортированных массивов в третий
Здравствуйте всем! Только начинаю изучать языки программирования. Помогите найти ошибку....

6
55 / 55 / 12
Регистрация: 01.12.2012
Сообщений: 456
20.02.2016, 18:55 2
C
1
2
float S= 0;
for(int i= 0; i<n; i++)//где n - число складываемых крупнейших членов отсортированного массива
Добавлено через 3 минуты
На будущее: ошибки компилятора надо выкладывать.
0
0 / 0 / 0
Регистрация: 19.02.2016
Сообщений: 15
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;
 
 
 
  }
0
55 / 55 / 12
Регистрация: 01.12.2012
Сообщений: 456
20.02.2016, 21:37 4
В протипе в 6 Obr неверно объявлена как void, в 74 - получается переобъявление как float.
В 25 нехватает аргументов и несоответствие типа - должно быть столько, сколько объявлено в функции, в том же порядке. Если третий не нужен (а он нигде не используется) - надо удалить из обоих заголовков.
1
0 / 0 / 0
Регистрация: 19.02.2016
Сообщений: 15
20.02.2016, 22:19  [ТС] 5
много ошибок, поэтому я вообще не знаю как написать код, который бы нашел суммы. а последняя функция только допущение
0
55 / 55 / 12
Регистрация: 01.12.2012
Сообщений: 456
20.02.2016, 22:28 6
Какое допущение? Последняя функция ищет сумму n крупнейших членов отсортированного по убыванию массива.
Исправить только заголовки:
C
1
float Obr(int n, float X[]) //оба!
и вызов функции
Obr(<число крупнейших членов>,<отсортированный по убыванию массив>);
1
0 / 0 / 0
Регистрация: 19.02.2016
Сообщений: 15
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;
 
 }
0
21.02.2016, 00:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.02.2016, 00:53
Помогаю со студенческими работами здесь

Из двух отсортированных по возрастанию массивов сформировать третий, отсортированный также по возрастанию
Нужно написать программу с тремя массивами :| Из двух отсортированных по возрастанию массивов...

Слияние отсортированных массивов
Опишите предикат sortedMerge(L1, L2), получающий два отсортированных в порядке возрастания числовых...

Объединение отсортированных массивов
Привет всем! У меня есть 2 массива $arr = array ('one'=&gt;array(1,2,3,51),'two'=&gt;array(0,16,32));...

Слияние двух массивов отсортированных по убыванию
Нужно написать прогу: Даны два массива. Массив А состоит из N элементов , массив В состоит из М...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru