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

Вычислить сумму отрицательных элементов массива

04.02.2015, 03:29. Просмотров 300. Ответов 2
Метки нет (Все метки)

Недавно начал изучать программирование на языке С++, необходимо написать программу:
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1)сумму отрицательных элементов массива;
2)произведение элементов массива, расположенных между максимальным и минимальным элементами.
Упорядочить элементы массива по возрастанию.
Программа работает наполовину, т.е. первая часть условия выполняется и программа переходит в режим паузы.

Работаю в Visual Studio 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
#include<iostream>
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "Russian");
 
    float a[10], sum=0, proiz=1;
    int i,j,n,k,l;
    n=10;
    i=1;
    cout<<"Введите элементы массива: \n"; 
    for (i=0; i<10; i++) cin >> a[i];
    float max=a[0],min=a[0];
    for (i=0; i<10; i++)
    {
          if(a[i]<0) sum+=a[i];
          if(max>a[i]) k=i;
          if(min<a[i]) l=i;
    };
 
    cout<<"\nСумма отрицательных чисел = "<<sum<<"\n";
    
    while (i<=10)
    {
          if(l<k) for(i=l;i<=k;i++) proiz*=a[i]; else for(i=k;i<=l;i++) proiz*=a[i];
    };
          cout<<"\nПроизведение = "<<proiz;
 
    for (i=0;i<=n-1;i++)
    for (j=i+1;j<=n-1;j++) 
    if(a[i]>a[j])
    {
     sum=a[i];
     a[i]=a[j];
     a[j]=sum;
    }
     for(i=0;i<=n;i++)
     {
         cout<<"\na[i]="<<a[i]<<"\n";
     };
     system("pause");
     return 0;
     }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2015, 03:29
Ответы с готовыми решениями:

Вычислить сумму отрицательных элементов массива
В одномерном динамическом массиве, состоящем из n вещественных элементов вычислить сумму...

Вычислить сумму отрицательных элементов массива
Написать программу, которая позволяет вводить одномерный целочис-ленный массив из 10 элементов и...

Вычислить сумму отрицательных элементов массива
Помогите пожалуйста, что не так в коде В одномерном массиве, состоящем из n вещественных...

Вычислить сумму отрицательных элементов массива
Дратуте, тут задачка на массивы подъехала, делал-делал так и не понял почему не правильно считает,...

Вычислить сумму отрицательных элементов массива
Пожалуйста помогите! В одномерном массиве, состоящий из n действительных элементов, вычислить: ...

2
SuurKissat
34 / 34 / 16
Регистрация: 11.01.2015
Сообщений: 130
04.02.2015, 04:53 2
Dmitry51, Первый вопрос (позже дальше поищу баги)
Что должен делать цикл
C++
1
2
3
4
[B]while (i<=10)[/B]
    {
          if(l<k) for(i=l;i<=k;i++) proiz*=a[i]; else for(i=k;i<=l;i++) proiz*=a[i];
    };
Насколько понял условие и два цикла в ветках условия- так как заранее неизвестно, что имеет больший номер - максимум или минимум. Это то вроде можно так. Но!
1. Зачем вообще еще и while
2. После предыдущего цикла i=10 и насколько понимаю - while не выполнится ни разу!

Однако это еще не причина для зависания. У меня код тоже виснет...
Постараюсь таки найти причину.

Добавлено через 11 минут
Кажется понял, почему виснет
C++
1
2
3
4
5
6
7
   float max=a[0],min=a[0];
    for (i=0; i<10; i++)
    {
          if(a[i]<0) sum+=a[i];
          if(max>a[i]) k=i;
          if(min<a[i]) l=i;
    };
Это тут невесть что, а не поиск максимума и минимума!!!
Сейчас соберусь и таки выложу пофиксенный вариант.

Добавлено через 10 минут
Что мог - пофиксил. Кажется осталась только одна трабла - он вывел пункт два не "между" а "включительно"

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
#include<iostream>
#include<windows.h> //мелочь - на моем MinGW без этого не выполняется system("pause"); у тебя видимо выполняется
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "Russian");
 
    float a[10], sum=0, proiz=1;
    int i,j,n,k,l;
    n=10;
    i=1;
    cout<<"Введите элементы массива: \n"; 
    for (i=0; i<10; i++) cin >> a[i];
    float max=a[0],min=a[0];///Главное - правим алгоритм поиска максимума и минимума!
    k=0;l=0;
    for (i=0; i<10; i++)
    {
          if(a[i]<0) sum+=a[i];
          if(a[i]>max){k=i;max=a[i];}
          if(a[i]<min){l=i;min=a[i];}
    };
 
    cout<<"\nСумма отрицательных чисел = "<<sum<<"\n";
 
//Долой странный while!   
          if(l<k) for(i=l;i<=k;i++) proiz*=a[i]; else for(i=k;i<=l;i++) proiz*=a[i];
 
          cout<<"\nПроизведение = "<<proiz;
 
    for (i=0;i<=n-1;i++)
    for (j=i+1;j<=n-1;j++) 
    if(a[i]>a[j])
    {
     sum=a[i];
     a[i]=a[j];
     a[j]=sum;
    }
     for(i=0;i<=n;i++)
     {
         cout<<"\na[i]="<<a[i]<<"\n";
     };
     system("pause");
     return 0;
     }
1
Dmitry51
0 / 0 / 0
Регистрация: 04.02.2015
Сообщений: 4
04.02.2015, 05:14  [ТС] 3
Я обучаюсь по видео, по этому, грамотно изложить написанное не могу. Изначально предполагал, что выполнив сумму отрицательных чисел, программа перейдёт к циклу while, т.к. I будет всегда меньше 10, то цикл начнёт сравнивать значения.
10 равен n, а I = 1.
Остальное Вы всё верно поняли.

Добавлено через 18 минут
SuurKissat, кажется, это то, что нужно! Если что, попробую разобраться, главное что второе условие заработало. Спасибо!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2015, 05:14

Вычислить сумму отрицательных элементов массива
Вот задание: В массиве, состоящем из n вещественных элементов, вычислить: 1)сумму отрицательных...

Вычислить сумму отрицательных элементов массива
В одномерном массиве из N вещественных элементов, вычислить: • сумму отрицательных элементов...

Вычислить сумму отрицательных элементов массива
Добры вечер, студент. задали по программированию задание не могу никак сделать, всячески пытался....


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

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

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