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

Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.73
drageon
0 / 0 / 0
Регистрация: 13.01.2013
Сообщений: 10
04.06.2013, 22:16     Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами #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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <iostream>
#include <clocale>
using namespace std;
int const n=5;
 
//=================== Номер 1 отриц. эл-та =======================
double otric1(double massiv[n])
{
    
    int i;
    int n1;
    //int n2=0;
    for (i = 0; i <= n; i++) //определение номера первого отрицательного элемента
        {
        if (massiv[i] < 0)
                {
                n1=i;
                return n1;
                }  
        }
}
//=================== Номер 1 отриц. эл-та =======================
 
 
 
//=================== Номер 2 отриц. эл-та =======================
double otric2(double massiv[n])
{
    int i;
    int n2;
    int n1;
    n1=otric1(massiv);
    for (i = n1+1; i <= n; i++) //определение номера второго отрицательного элемента
        {
        if (massiv[i] < 0)
                {
                n2 = i;
                return n2;
                }
        }   
}
//=================== Номер 2 отриц. эл-та =======================
 
 
 
//=================== Сумма между двумя отриц. эл-тами ============
double summa(double massiv[n])
{
    int i;
    int n2;
    int n1;
    n1=otric1(massiv);
    n2=otric2(massiv);
        if ((n2 != 0) && (n1 != n2)) //проверка на существование границ отрицательных элементов
             {
             int sum_mezhdu=0;
 
             //нахождение суммы элементов между первым и последним отрицательным элементом
             for (i = n1+1; i <= n2; i++)
                {
                sum_mezhdu += massiv[i];      //sum_mezhdu=n1+n2;    (Если сложить их индексы, то прога пашет)
                return sum_mezhdu;
                }
              }
        else
               cout<<("В массиве отсутствуют два отрицательных элемента!\n");
}
//=================== Сумма между двумя отриц. эл-тами ============
 
 
int main()
{
    setlocale(LC_ALL, "RUS");
    double massiv[n];
    int i;
    double max=0;
    for (i=0;i<=(n-1);i++)
    {
        cout<<"Введите "<<(i+1)<<" элемент: ";
        cin>>massiv[i];
        while (cin.fail())
        {
            cin.clear();
            cin.ignore(numeric_limits<streamsize>::max(),'\n');
            cout << "Введено некорректное значение. Введите "<<(i+1)<<" элемент: ";
            cin >> massiv[i];
        }
    }
    
 
    cout<<("номер 1 отриц эл-та: = ")<<otric1(massiv)<<endl; // Норм считает (Номер 1 отриц. эл-т)
 
    cout<<("номер 2 отриц эл-та: = ")<<otric2(massiv)<<endl; // Норм считает (Номер 2 отриц. эл-т)
 
    cout<<("Сумма между 2 отриц: = ")<<summa(massiv)<<endl;  // Пишет не то :(
 
    system ("PAUSE");
    return 0;
    
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2013, 22:16     Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами
Посмотрите здесь:

Найти сумму элементов между первым и вторым отрицательными элементами массива C++
C++ Вычислить сумму элементов массива, расположенных между первым и вторым положительными элементами
C++ Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами
Массив: вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами. C++
Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами C++
Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами C++
C++ Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Xsenon_rus
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104
04.06.2013, 22:56     Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами #2
Я конечно могу ошибаться но попробуй
C++
1
2
3
4
5
6
for (i = n1+1;i < n2; i++) // Тут строгое поставить
                {
                sum_mezhdu += massiv[i];      
                return sum_mezhdu;
                }
              }
drageon
0 / 0 / 0
Регистрация: 13.01.2013
Сообщений: 10
04.06.2013, 23:04  [ТС]     Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами #3
Цитата Сообщение от Xsenon_rus Посмотреть сообщение
Я конечно могу ошибаться но попробуй
C++
1
2
3
4
5
6
for (i = n1+1;i < n2; i++) // Тут строгое поставить
                {
                sum_mezhdu += massiv[i];      
                return sum_mezhdu;
                }
              }
Тоже пробовал, не помогло..
Xsenon_rus
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104
04.06.2013, 23:15     Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами #4
C++
1
2
3
4
5
6
             for (i = n1+1; i < n2; i++)
                {
                sum_mezhdu += massiv[i];      //sum_mezhdu=n1+n2;    (Если сложить их индексы, то прога пашет)
                }
             return sum_mezhdu;
              }
return был в цикле, а так нельзя =) в итоге был только 1 пробег
Genn55
342 / 189 / 37
Регистрация: 26.12.2012
Сообщений: 661
04.06.2013, 23:28     Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами #5
Скорее всего не верно определяются индексы.Попробуйте инициализировать переменные
C++
1
2
int n1=-1;
int n2=-1;
drageon
0 / 0 / 0
Регистрация: 13.01.2013
Сообщений: 10
04.06.2013, 23:49  [ТС]     Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами #6
Цитата Сообщение от Genn55 Посмотреть сообщение
Скорее всего не верно определяются индексы.Попробуйте инициализировать переменные
C++
1
2
int n1=-1;
int n2=-1;
Нашел ошибку!!!! return нужно было вне скобки написать, теперь всё норм пашет)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//=================== Сумма между двумя отриц. эл-тами ============
double summa(double massiv[n])
{
    int i;
    int n2;
    int n1;
    n1=otric1(massiv);
    n2=otric2(massiv);
        if ((n2 != 0) && (n1 != n2)) //проверка на существование границ отрицательных элементов
             {
             int sum_mezhdu=0;
 
             //нахождение суммы элементов между первым и последним отрицательным элементом
             for (i = n1+1; i < n2; i++)
                {
                sum_mezhdu += massiv[i];      
                 }
              return sum_mezhdu;
              }
        else
               cout<<("В массиве отсутствуют два отрицательных элемента!\n");
}
//=================== Сумма между двумя отриц. эл-тами ============
Только с ветками else проблема, неадекватно реагирует
Вроде должен выводить сообщение на экран, а он продолжает считать что-то левое -_-
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2013, 20:53     Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами
Еще ссылки по теме:

C++ Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами
C++ Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами
Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами C++
Вычислить сумму элементов массива, расположенных между первым и вторым положительными элементами C++
Вычислить сумму элементов массива расположенных между первым и вторым отрицательными элементами C++

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

Или воспользуйтесь поиском по форуму:
drageon
0 / 0 / 0
Регистрация: 13.01.2013
Сообщений: 10
06.06.2013, 20:53  [ТС]     Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами #7
Цитата Сообщение от drageon Посмотреть сообщение
Нашел ошибку!!!! return нужно было вне скобки написать, теперь всё норм пашет)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//=================== Сумма между двумя отриц. эл-тами ============
double summa(double massiv[n])
{
    int i;
    int n2;
    int n1;
    n1=otric1(massiv);
    n2=otric2(massiv);
        if ((n2 != 0) && (n1 != n2)) //проверка на существование границ отрицательных элементов
             {
             int sum_mezhdu=0;
 
             //нахождение суммы элементов между первым и последним отрицательным элементом
             for (i = n1+1; i < n2; i++)
                {
                sum_mezhdu += massiv[i];      
                 }
              return sum_mezhdu;
              }
        else
               cout<<("В массиве отсутствуют два отрицательных элемента!\n");
}
//=================== Сумма между двумя отриц. эл-тами ============
Только с ветками else проблема, неадекватно реагирует
Вроде должен выводить сообщение на экран, а он продолжает считать что-то левое -_-
Всем спасибо, кто пытался помочь. я ветки ELSE тоже исправил)
Yandex
Объявления
06.06.2013, 20:53     Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами
Ответ Создать тему
Опции темы

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