Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
S1NetT
0 / 0 / 0
Регистрация: 21.12.2013
Сообщений: 23
#1

Обработка одномерных массивов. Сортировка массивов - C++

27.12.2013, 19:51. Просмотров 790. Ответов 8
Метки нет (Все метки)

Здравствуйте, помогите пожалуйста решить задачу легким способом.
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1) сумму отрицательных элементов массива;
2) произведение элементов массива, расположенных между максимальным и минимальным элементами. Упорядочить элементы массива по возрастанию.
http://www.cyberforum.ru/cpp-beginners/thread1065148.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2013, 19:51
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Обработка одномерных массивов. Сортировка массивов (C++):

Обработка одномерных массивов
1. a) Одномерный массив из 5 элементов целого типа в диапазоне ; b) Дополнить...

Обработка одномерных массивов
При заданных XT,YT, абциссах X1,X2,..,Xn и ординатах Y1,Y2,..,Yn n точек...

Обработка одномерных массивов С++
Написать программу решения задачи, используя оператор цикла FOR. Значения...

Обработка одномерных массивов
Помогите пожалуйста с написанием программы. ПОСЛЕДОВАТЕЛЬНОСТЬ ВЫПОЛНЕНИЯ:...

Обработка одномерных массивов С++
Написать программу решения задачи, используя оператор цикла FOR. Значения...

8
DirectX
23 / 17 / 21
Регистрация: 07.10.2013
Сообщений: 47
27.12.2013, 20:13 #2
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
#include <iostream>
using namespace std;
 
int main()
{
    const int N = 50;
    int n;
    cin >> n;
    
    double masiv[N] = {0}, sum = 0;
    for (int i = 0; i < n; i++)
        cin >> masiv[i];
        
    for (int i = 0; i < n; i++)
    {
        if (masiv[i] < 0)
            sum += masiv[i];
    }
    
    cout << "suma otritsatelnix elementov = " << sum << endl;
 
    system("pause");
    return 0;
}
1
XRoy
860 / 710 / 305
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
27.12.2013, 20:25 #3
S1NetT, 2)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int multiply(int const *arr, int const &size)
{
    int min, max, i, mult;
    min = max = 0;
 
    for ( i = 1; i < size; ++i )
    {
        if (arr[min] > arr[i]) min = i;
        if (arr[max] < arr[i]) max = i;
    }
 
    mult = 1;
    for ( i = min+1; i < max; ++i )
    {
        mult *= arr[i];
    }
 
    return mult;
}
1
MicM
824 / 483 / 324
Регистрация: 29.12.2009
Сообщений: 1,106
Завершенные тесты: 1
27.12.2013, 20:30 #4
Цитата Сообщение от S1NetT Посмотреть сообщение
Упорядочить элементы массива по возрастанию
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int tmp;
bool f;
do
{
    f = true;
    for (int i=0; i<n-1; i++)
    if (a[i+1]<a[i])
    {
        tmp = a[i+1];
        a[i+1] = a[i];
        a[i] = tmp;
        f = false;
    }
}
while (!f);
1
DirectX
23 / 17 / 21
Регистрация: 07.10.2013
Сообщений: 47
27.12.2013, 20:33 #5
кину еще и свой вариант решения 2 задачи(без сортировки)
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 <iostream>
#include <cfloat>
using namespace std;
 
int main()
{
    const int N = 50;
    int n, index_min, index_max;
    cin >> n;
    
    float masiv[N] = {0}, product = 1, max = FLT_MIN, min = FLT_MAX;
    for (int i = 1; i <= n; i++)
        cin >> masiv[i];
        
    for (int i = 1; i <= n; i++)
    {
        if (masiv[i] < min)
        {
            min = masiv[i];
            index_min = i;
        }
        if (masiv[i] > max)
        {
            max = masiv[i];
            index_max = i;
        }
    }
    
    int temp;
    if (index_min > index_max) 
    {
        temp = index_max; 
        index_max = index_min;
        index_min = temp;
    }
    
    for (int i = index_min; i <= index_max; i++)
    {
        product *= masiv[i];
    }
    
    cout << "proizvedenie elementov = " << product << endl;
 
    system("pause");
    return 0;
}
0
S1NetT
0 / 0 / 0
Регистрация: 21.12.2013
Сообщений: 23
27.12.2013, 20:35  [ТС] #6
если кто-то может помогите пожалуйста,я сам написал только не все правильно походу
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
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <math.h>
using namespace std;
int main()
{
 setlocale(LC_ALL,"Russian");
int S,max,min,t,c,d,w,g,i,j,z,mini,maxi;
double pr=1;
 S=0;
 const int n=10;
 int  A[n]; 
 for (t=0; t<n;t++)
 {
 printf("Введите  %d-й элемент массива: ", t+1);
 scanf ("%d", &A[t]);
 }
  for (c=0; c>n; c++)
 {
 if (A[c]>0)
    {
     S=S+A[c];
    }
 }
//нахождение минимального  элемента массива
 min=A[0];
for (d=0; d<n; d++)
{
if (A[d]<min)
{
min=A[d];
mini=d;
}
}
//нахождение максимального  элемента массива
max=A[0];
for (w=0; w<n; w++)
{
if (A[w]>=max)
{
max=A[w];
maxi=w;
}
 }
 //нахождение произведения элементов, раположенных между максимальным и минимальным элементами
 for(g=mini; g=maxi; g++)
 {
     pr=pr*A[g];
 }
 //расположение элементов массива по возрастанию
 for (i=0; i<n; i++)
 for (j=0; j<n-1; j++)
 {
  if (A[j]<A[j-1])
    {
      z=A[j];
      A[j]=A[j-1];
      A[j-1]=z;
    }
 }
  cout<<"\nОтсортированный массив ";
  for (i=0; i<n; i++)
      cout<<"\nA["<<i<<"]="<<A[i];
 printf ("\n\nСумма отрицательных элементов массива = %d",S);
 cout<<"\n\nПроизведение элементов между мин."<<min<<" и макс. "<<max<<"  элементами = "<<pr;
 _getch ();
 return 0;
}
0
DirectX
23 / 17 / 21
Регистрация: 07.10.2013
Сообщений: 47
27.12.2013, 20:39 #7
S1NetT, учти тот факт что макс елемент может встретиться в масиве раньше чем мин
0
XRoy
860 / 710 / 305
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
27.12.2013, 21:03 #8
Цитата Сообщение от DirectX Посмотреть сообщение
кину еще и свой вариант решения 2 задачи(без сортировки)
C++
1
2
3
4
5
    for (int i = 1; i <= n; i++)
    ... 
    for (int i = index_min; i <= index_max; i++)
 
}
Элементы массива идут от 0 до n-1. И по условию "расположенных между максимальным и минимальным элементами", а у Вас максимальный и минимальный тоже входят в произведение.
0
Donet
21 / 21 / 3
Регистрация: 19.11.2013
Сообщений: 74
27.12.2013, 21:11 #9
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
#include <iostream>
#include <conio.h>
#include <stdio.h>
using namespace std;
int main(){
    setlocale(LC_ALL,"Russian");
    int S=0,max,min,mini,maxi,x=0;
    int pr=1;
    const int n=5;
    int  A[n]; 
    for (int i=0; i<n; i++){
        printf("Введите  %d-й элемент массива: ", i+1);
        scanf ("%d", &A[i]);
    }
    for (int i=0; i<n; i++){
        if (A[i]<0){
            S=S+A[i];
        }
    }
    //нахождение минимального  элемента массива
    min=A[0];
    for (int i=0; i<n; i++){
        if (A[i]<=min){
            min=A[i];
            mini=i;
        }
    }
    //нахождение максимального  элемента массива
    max=A[0];
    for (int i=0; i<n; i++){
        if (A[i]>=max){
            max=A[i];
            maxi=i;
        }
    }
    //нахождение произведения элементов, раположенных между максимальным по модулю и минимальным элементами
    if(mini < maxi){
        for(int i=mini; i<=maxi; i++){
            pr=pr*A[i];
        }
    }else{
        for(int i=maxi; i<=mini; i++){
            pr=pr*A[i];
        }
    }
    //расположение элементов массива по возрастанию
    for (int i=0; i<n-1; i++)
        for (int j=0; j<n-1-i; j++)
            if (A[j]>A[j+1]){
                swap (A[j],A[j+1]);
            }
    cout<<"\nОтсортированный массив ";
    for (int i=0; i<n; i++)
        cout<<"\nA["<<i<<"]="<<A[i];
    printf ("\n\nСумма отрицательных элементов массива = %d",S);
    cout<<"\n\nПроизведение элементов между мин."<<min<<" и макс. "<<max<<"  элементами = "<<pr;
    _getch ();
    return 0;
}
Добавлено через 1 минуту
Этот код я уже полностью исправил...
1
27.12.2013, 21:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2013, 21:11
Привет! Вот еще темы с решениями:

Обработка одномерных массивов

Обработка одномерных динамических массивов
Помогите написать программу (Динамические массивы) Написать программу, которая...

Обработка одномерных динамических массивов
Помогите написать программу (Динамические массивы) Написать программу, которая...

Обработка одномерных динамических массивов
1. Удалить из массива положительный элемент. 2. Вставить число 99 после...


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

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

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