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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
mmeexx
0 / 0 / 0
Регистрация: 09.10.2013
Сообщений: 177
#1

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

21.02.2014, 17:33. Просмотров 917. Ответов 28
Метки нет (Все метки)

На С++ написана программа подсчета суммы элементов массива между первым и вторым отрицательными элементами . Но не получается сделать вывод сообщения о том, что нет положительных элементов между ними. Пробовал очень много, но не получается. Помогите пожалуйста
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
  #include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{    
    int i1,i2;
    int s;
int n;
cout<<"Enter the number of elements in the array:";/* Ввод  количества элементов массива*/
cin>>n;
int a [n];
 s=0;
for ( int i =0; i<n; i++) {  /*ввод массива*/
    cout<<"a["<<i<<"]=";
    cin>>a[i];
     for (int i=0; i<n; i++){ /*Нахождение первого отрицательного*/
        if (a[i] < 0)
        {
            i1 = i;
            break; /*если нашли, то сразу выход из цикла*/
        }
}
    for (int i=i1+1; n; i++) /*поиск второго отрицательного элемента*/
 {       if (a[i] < 0)
        {
            i2 = i;
            break;/* Выход из цикла */
  }   
    for (int i=i1+1; i<i2; i++) /*подсчет суммы и вывод на экран*/
    {    s=s+a[i];}
    cout << "s= " << s ;}
} 
    system("PAUSE");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2014, 17:33     Вывод на экран подсчета суммы элементов массива между первым и вторым отрицательными элементами
Посмотрите здесь:

Найти сумму элементов между первым и вторым отрицательными элементами массива - C++
Прошу разъяснить как в массиве из 10 вещ. чисел найти сумму элементов между первым и вторым отрицательными элементами.

Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами - C++
Вот условие задания: В одномерном целочисленном массиве (размер массива (не больше 20) и значения его элементов вводить с клавиатуры)...

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

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

Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами - C++
В одномерном массиве,состоящем из n вещественных элементов, вычислить : 1.Номер минимального элемента массива 2.Сумма элементов массива,...

Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами - C++
В одномерном массиве Y, состоящий из N целых элементов, из промежутка , вычислить сумму элементов массива, расположенных между первым и...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,954
Записей в блоге: 27
21.02.2014, 17:35     Вывод на экран подсчета суммы элементов массива между первым и вторым отрицательными элементами #2
C++
1
2
 
if(i1 == i2 == 0) { ...  }
Попробуйте так. После форов. Только присвойте i1 и i2 сверху нули.
mmeexx
0 / 0 / 0
Регистрация: 09.10.2013
Сообщений: 177
21.02.2014, 17:37  [ТС]     Вывод на экран подсчета суммы элементов массива между первым и вторым отрицательными элементами #3
Сумму считает нормально, только нет вывода на экран сообщения о отсутствии элементов между отрицательными

Добавлено через 1 минуту
То есть условие на поиск отрицательных элементов навесить?
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,954
Записей в блоге: 27
21.02.2014, 17:41     Вывод на экран подсчета суммы элементов массива между первым и вторым отрицательными элементами #4
Я имела в виду - после форов, где находите первый и второй отрицательный элементы. Если их не найдется - то i1 и i2 останутся нулями.

Добавлено через 47 секунд
А, пардон. Я сплю, потому неверно поняла задание...
mmeexx
0 / 0 / 0
Регистрация: 09.10.2013
Сообщений: 177
21.02.2014, 17:58  [ТС]     Вывод на экран подсчета суммы элементов массива между первым и вторым отрицательными элементами #5
А можно в самый последний цикл вписать if(...) {вычисление суммы}
else {"Нет подходящих цифр} ? Вместо ... не знаю что написать.
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,954
Записей в блоге: 27
21.02.2014, 18:23     Вывод на экран подсчета суммы элементов массива между первым и вторым отрицательными элементами #6
Если (i1 == i2 == 0)
mmeexx
0 / 0 / 0
Регистрация: 09.10.2013
Сообщений: 177
21.02.2014, 18:31  [ТС]     Вывод на экран подсчета суммы элементов массива между первым и вторым отрицательными элементами #7
Не выводит сообщение о сумме на эеран
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
  #include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{    
    int i1,i2;
    double s;
int n;
cout<<"Enter the number of elements in the array:";/* Ââîä  ГЄГ®Г«ГЁГ·ГҐГ±ГІГўГ* ýëåìåГ*òîâ 
Г¬Г*Г±Г±ГЁГўГ**/
cin>>n;
double a [n];
 s=0;
 i1=0;
 i2=0;
for ( int i =0; i<n; i++) {  /*ââîä Г¬Г*Г±Г±ГЁГўГ**/
    cout<<"a["<<i<<"]=";
    cin>>a[i];
     for (int i=0; i<n; i++){ /*ГЌГ*õîæäåГ*ГЁГҐ ïåðâîãî îòðèöГ*òåëüГ*îãî*/
        if (a[i] < 0)
        {
            i1 = i;
            break; /*åñëè Г*Г*øëè, ГІГ® Г±Г°Г*çó âûõîä ГЁГ§ öèêëГ**/
        }
}
    for (int i=i1+1; n; i++) /*ïîèñê âòîðîãî îòðèöГ*òåëüГ*îãî ýëåìåГ*ГІГ**/
 {       if (a[i] < 0)
        {
            i2 = i;
            break;/* Âûõîä ГЁГ§ öèêëГ* */
  }   
    for (int i=i1+1; i<i2; i++) /*ïîäñ÷åò ñóììû*/
    {  if(i1==i2==0){  s=s+a[i];
    cout << "s= " << s ;}
    else {cout<<"No suitable elements";} }
} }
    system("PAUSE");
    return 0;
}
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,954
Записей в блоге: 27
21.02.2014, 18:42     Вывод на экран подсчета суммы элементов массива между первым и вторым отрицательными элементами #8
Цитата Сообщение от mmeexx Посмотреть сообщение
if(i1==i2==0)
Это и есть проверка наличия элементов.
C++
1
2
3
4
5
6
 for (int i=i1+1; i<i2; i++) /*подсчет суммы*/
    {  if(i1==i2==0) cout<<"No suitable elements"; 
     else {  s=s+a[i];
    cout << "s= " << s ;}
    }
}
mmeexx
0 / 0 / 0
Регистрация: 09.10.2013
Сообщений: 177
21.02.2014, 18:42  [ТС]     Вывод на экран подсчета суммы элементов массива между первым и вторым отрицательными элементами #9
я ввожу массив из 5 элементов -9 -9 5 6 1. По идее должен выводить "Нет подходящих элементов" , а выводит "нажмите любую кнопку для продолженияЭ
some_name
Вежливость-главное оружие
221 / 221 / 55
Регистрация: 19.02.2013
Сообщений: 1,431
21.02.2014, 18:59     Вывод на экран подсчета суммы элементов массива между первым и вторым отрицательными элементами #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
include "stdafx.h"
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[]){
 
    int n;
    cout << "Enter the number of elements in the array: "; cin >> n;
 
    int *a = new int[n], i1 = -1, i2 = -1, s = 0;
    for ( int i = 0; i < n; ++i) {
        cout<<"a["<<i<<"] = "; cin>>a[i];
        if (a[i] < 0) {
            if(i1 == -1) {              
                i1 = i;         
                continue;
            }
            if(i2 == -1){ 
                i2 = i;             
            }  
        }  
        if(i1 >=0 && i2 == -1) s += a[i];
    }
 
    if(i1 == -1) {
        cout << "Not found negative elements" << endl;
    }
    if(i2 == -1 && i1 >= 0) {
        cout << "Array contains only one negative element" << endl;
        s = 0;
    }
    cout << "Summ = " << s <<endl;
 
    delete[] a;
 
    system("PAUSE");
    return 0;
}
//-1 для того чтобы алгоритм работал, 
                //если 1-й эл-т масс будет отрицат.
//это типа флаг
ValeryS
Модератор
6552 / 5018 / 463
Регистрация: 14.02.2011
Сообщений: 16,739
21.02.2014, 19:00     Вывод на экран подсчета суммы элементов массива между первым и вторым отрицательными элементами #11
Цитата Сообщение от Тамика Посмотреть сообщение
if(i1==i2==0)
а что делает эта конструкция?
some_name
Вежливость-главное оружие
221 / 221 / 55
Регистрация: 19.02.2013
Сообщений: 1,431
21.02.2014, 19:04     Вывод на экран подсчета суммы элементов массива между первым и вторым отрицательными элементами #12
Цитата Сообщение от mmeexx Посмотреть сообщение
я ввожу массив из 5 элементов -9 -9 5 6 1. По идее должен выводить "Нет подходящих элементов" , а выводит "нажмите любую кнопку для продолженияЭ
для этого случая подправь условия на эти:

C++
1
2
3
4
5
6
7
8
if(i1 == -1) {
        cout << "Not found negative elements" << endl;
    } else if(i2 == -1 && i1 >= 0) {
        cout << "Array contains only one negative element" << endl;
        s = 0;
    } else if(abs(i2 - i1) == 1){
        cout << "No suitable elements" << endl;
    }
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,954
Записей в блоге: 27
21.02.2014, 19:09     Вывод на экран подсчета суммы элементов массива между первым и вторым отрицательными элементами #13
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
#include <cstdlib>
#include <iostream>
 
int main(int argc, char *argv[])
{    
        int *mas = new int[];
        std::cout << "Enter number of elements";
        int n;
        std::cin >> n;
        std::cout << "Enter elements\n";
        for (int i = 0; i < n; ++i)
        {
            int temp;
            std::cout<<"a["<<i<<"]=";
            std::cin >> mas[i];
        }
        int n1 = 0, n2 = 0, n1_id, n2_id;
 
        for (int i =0 ; i < n; ++i )
        {
            if (mas[i] < 0) 
            {
                n1 = mas[i];
                n1_id = i;
                break;
            }
 
        }
        for (int i =n1_id + 1; i < n; ++i)
        {
                if (mas[i] < 0)
                {
                    n2 = mas[i];
                    n2_id = i;
                    break;
                }
        }
 
        int s = 0;
 
        if ((n1 == 0) && (n2 == 0))
            std::cout << "No elements between\n";
        else
        {
            for (int i = n1_id; i < n2_id; ++i)
                s += mas[i];
            std::cout << "Sum of elements between are " << s;
        }
 
}
Добавлено через 3 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
а что делает эта конструкция?
А тут срабатывает тупое неявное преобразование, которое я не учла.
mmeexx
0 / 0 / 0
Регистрация: 09.10.2013
Сообщений: 177
21.02.2014, 19:31  [ТС]     Вывод на экран подсчета суммы элементов массива между первым и вторым отрицательными элементами #14
Что за ........?
Миниатюры
Вывод  на экран подсчета суммы элементов массива между первым и вторым отрицательными элементами  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2014, 19:32     Вывод на экран подсчета суммы элементов массива между первым и вторым отрицательными элементами
Еще ссылки по теме:

Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами - C++
Помогите решить найти ошибку, код вроде как правильный, но все равно выдает ошибку, помогите найти ошибку, пожалуйста? Вот собственно...

Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами - C++
помогите пожалуйста: В однородном массиве, состоящем из N вещественных элементов, вычислить: • Номер минимального элемента массива; ...

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

Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами - C++
Здравствуйте, помогите пожалуйста закончить эту программу Код C++ #include &lt;iostream.h&gt; #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; ...

Массив: вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами. - C++
помогите, плиз: в одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) номер минимального элемента...


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

Или воспользуйтесь поиском по форуму:
mmeexx
0 / 0 / 0
Регистрация: 09.10.2013
Сообщений: 177
21.02.2014, 19:32  [ТС]     Вывод на экран подсчета суммы элементов массива между первым и вторым отрицательными элементами #15
Цитата Сообщение от some_name Посмотреть сообщение
для этого случая подправь условия на эти:

C++
1
2
3
4
5
6
7
8
if(i1 == -1) {
        cout << "Not found negative elements" << endl;
    } else if(i2 == -1 && i1 >= 0) {
        cout << "Array contains only one negative element" << endl;
        s = 0;
    } else if(abs(i2 - i1) == 1){
        cout << "No suitable elements" << endl;
    }
Куда это писать?
Yandex
Объявления
21.02.2014, 19:32     Вывод на экран подсчета суммы элементов массива между первым и вторым отрицательными элементами
Ответ Создать тему
Опции темы

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