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

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

Войти
Регистрация
Восстановить пароль
 
 
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
#1

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

07.01.2013, 20:42. Просмотров 826. Ответов 16
Метки нет (Все метки)

программа, которая для вещественного массива из 20 элементов определяет сумму его элементов, расположенных правее последнего отрицательного элемента.
массив одномерный подскажите алгоритм нахождения самого правого отрицательного элемента и как сложить последующие положительные элементы массива.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2013, 20:42     Найти сумму элементов, расположенных правее последнего отрицательного элемента
Посмотрите здесь:

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

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

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

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

Найти сумму элементов, расположенных до первого отрицательного элемента - C++
Дан массив − 19 элементов целого типа. Найти сумму элементов, распо- ложенных до первого отрицательного элемента. Если отрицательных ...

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

Найти сумму модулей элементов массива, расположенных после первого отрицательного элемента - C++
Найти сумму модулей элементов массива, расположенных после первого отрицательного элемента. Вот код: #include <conio.h> #include...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
07.01.2013, 20:48     Найти сумму элементов, расположенных правее последнего отрицательного элемента #2
в цикле перебираем элементы от конца массива к началу. проверяем элемент на то, что он не отрицательный. если не отрицательный, наращиваем сумму, если отрицательный - выходим их цикла и выводим сумму.
Ev[G]eN
Эксперт С++
5097 / 1535 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
07.01.2013, 21:05     Найти сумму элементов, расположенных правее последнего отрицательного элемента #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
или так
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
int main() {
    srand(time(0));
    const int size = 20;
    int arr[size], sum = 0, ind = 0;
    
    std::cout << "Array: " << std::endl;
    for (int i = 0; i < size; i++) {
        std::cout << (arr[i] = rand() % 20 - 5) << " ";
        ind = (arr[i] < 0) ? i : ind;
    }
    std::cout << std::endl;
    
    if (ind != size - 1) {
       for (int i = ind + 1; i < size; i++)
           sum += arr[i];
       std::cout << "Sum: " << sum << std::endl;
    }
    else std::cout << "Negative element is the last!" << std::endl;
    
    system("pause");
    return 0;
}
Добавлено через 9 минут

Не по теме:

илья1995, поблагодарили бы DU..его алгоритм более оптимален. ИМХО

илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
07.01.2013, 21:09  [ТС]     Найти сумму элементов, расположенных правее последнего отрицательного элемента #4
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
или так
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
int main() {
    srand(time(0));
    const int size = 20;
    int arr[size], sum = 0, ind = 0;
    
    std::cout << "Array: " << std::endl;
    for (int i = 0; i < size; i++) {
        std::cout << (arr[i] = rand() % 20 - 5) << " ";
        ind = (arr[i] < 0) ? i : ind;
    }
    std::cout << std::endl;
    
    if (ind != size - 1) {
       for (int i = ind + 1; i < size; i++)
           sum += arr[i];
       std::cout << "Sum: " << sum << std::endl;
    }
    else std::cout << "Negative element is the last!" << std::endl;
    
    system("pause");
    return 0;
}
Добавлено через 9 минут

Не по теме:

илья1995, поблагодарили бы DU..его алгоритм более оптимален. ИМХО

спасибо за ваш вариант реализации программы но я все таки буду делать по своему вашу возьму как пример
алгоритм DU хорош но я не знаю как начать перебирать массив с конца
Ev[G]eN
Эксперт С++
5097 / 1535 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
07.01.2013, 21:12     Найти сумму элементов, расположенных правее последнего отрицательного элемента #5
Цитата Сообщение от илья1995 Посмотреть сообщение
я не знаю как начать перебирать массив с конца
C++
1
for (int i = size - 1; i >= 0; i--)
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
07.01.2013, 21:16  [ТС]     Найти сумму элементов, расположенных правее последнего отрицательного элемента #6
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
C++
1
for (int i = size - 1; i >= 0; i--)
спасибо щас попробую
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
09.01.2013, 17:10  [ТС]     Найти сумму элементов, расположенных правее последнего отрицательного элемента #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
#include <iostream>
using namespace std;
#include <math.h>
#include <conio.h>
int main()
{ int imin,i,j,sum;
 int s;
cout<<"vvedite razmer massiva ";
cin>>s;
 int *a = new int[s];
for ( i = 0; i < s; i++)
 {
 a[i]=rand() % 20 - 5; 
 cout<<a[i]<<" ";
 }
  if (i = s - 1) {
       for (int i = s - 1; i >= 0; i--)
           sum += a[i];
       cout << "Sum: " << sum <<endl;
    }
    else cout << "Negative element is the last!" << endl;
system("pause");
return 0;
}
вот попробовал сделать. вашу взял как пример что то оно в ответе выводит числа какие то странные и при компиляции окно появляется
Миниатюры
Найти сумму  элементов, расположенных правее последнего отрицательного элемента   Найти сумму  элементов, расположенных правее последнего отрицательного элемента  
Ev[G]eN
Эксперт С++
5097 / 1535 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
09.01.2013, 17:16     Найти сумму элементов, расположенных правее последнего отрицательного элемента #8
Цитата Сообщение от илья1995 Посмотреть сообщение
C++
1
if (i = s - 1) {
здесь как минимум должно быть "=="
и я, если честно, не понял того, что Вы делаете
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
09.01.2013, 17:22  [ТС]     Найти сумму элементов, расположенных правее последнего отрицательного элемента #9
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
здесь как минимум должно быть "=="
и я, если честно, не понял того, что Вы делаете
ну я перебираю массив с конца ищу отрицательный элемент и потом складываю все элементы которые до него

Добавлено через 1 минуту
исправил как вы сказали теперь программа работает но почему то все время выводится сообщение что отрицательный последний хотя он стоит предпоследним
Ev[G]eN
Эксперт С++
5097 / 1535 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
09.01.2013, 17:22     Найти сумму элементов, расположенных правее последнего отрицательного элемента #10
Цитата Сообщение от илья1995 Посмотреть сообщение
C++
1
2
3
4
5
6
if (i = s - 1) {
* * * *for (int i = s - 1; i >= 0; i--)
* * * * * *sum += a[i];
* * * *cout << "Sum: " << sum <<endl;
* * }
* * else cout << "Negative element is the last!" << endl;
это явно не то, чего вы хотите)
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
09.01.2013, 17:25  [ТС]     Найти сумму элементов, расположенных правее последнего отрицательного элемента #11
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
это явно не то, чего вы хотите)
а как тогда должно быть подскажите?)
Croessmah
Модератор
Эксперт CЭксперт С++
13052 / 7315 / 814
Регистрация: 27.09.2012
Сообщений: 18,052
Записей в блоге: 3
Завершенные тесты: 1
09.01.2013, 17:27     Найти сумму элементов, расположенных правее последнего отрицательного элемента #12
Цитата Сообщение от илья1995 Посмотреть сообщение
исправил как вы сказали теперь программа работает но почему то все время выводится сообщение что отрицательный последний хотя он стоит предпоследним
переделка из вашей программы:
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
#include <iostream>
using namespace std;
#include <math.h>
#include <conio.h>
int main()
{ int imin,i,j,sum=0;//
 int s;
cout<<"vvedite razmer massiva ";
cin>>s;
 int *a = new int[s];
for ( i = 0; i < s; i++)
 {
 a[i]=rand() % 20 - 5; 
 cout<<a[i]<<" ";
 }
std::cout<<std::endl;//
    if(a[s-1]>=0){//
    for (int i = s - 1; i >= 0 && a[i]>=0; i--)//
           sum += a[i];
    cout << "Sum: " << sum <<endl;
    }
    else cout << "Negative element is the last!" << endl;
     delete [] a;//
system("pause");
return 0;
}
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
09.01.2013, 17:32  [ТС]     Найти сумму элементов, расположенных правее последнего отрицательного элемента #13
C++
1
2
3
std::cout<<std::endl;//
    if(a[s-1]>=0){//
    for (int i = s - 1; i >= 0 && a[i]>=0; i--)//
можете пояснить вот этот кусок а так программа все гут работает как надо.
Ev[G]eN
Эксперт С++
5097 / 1535 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
09.01.2013, 17:34     Найти сумму элементов, расположенных правее последнего отрицательного элемента #14
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
int main()
{
    srand(time(0));
    
    int size = 0;
    std::cout << "Size: ";
    std::cin >> size; 
    
    int *array = new int [size];
    std::cout << "Array: " << std::endl;
    for (int i = 0; i < size; i++)
        std::cout << (array[i] = rand() % 25 - 5) << " ";
    
    if (array[size - 1] > 0) {
                   int sum = 0;
                   int i = size - 1;
                   while (array[i] > 0) {
                         sum += array[i];
                         i--;
                   }
                   std::cout << "\nSum: " << sum << std::endl;
    } else {
           std::cout << "\nNegative element is the last!" << std::endl;
    }          
    delete [] array;
    
    system("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2013, 17:38     Найти сумму элементов, расположенных правее последнего отрицательного элемента
Еще ссылки по теме:

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

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

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

Найти сумму элементов массива, расположенных до последнего положительного элемента - C++
2) сумму элементов массива, расположенных до последнего положительного элемента. #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace...

Найти сумму элементов массива, расположенных до последнего положительного элемента - C++
2. Найти сумму элементов массива, расположенных до последнего положительного элемента.


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

Или воспользуйтесь поиском по форуму:
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
09.01.2013, 17:38  [ТС]     Найти сумму элементов, расположенных правее последнего отрицательного элемента #15
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
int main()
{
    srand(time(0));
    
    int size = 0;
    std::cout << "Size: ";
    std::cin >> size; 
    
    int *array = new int [size];
    std::cout << "Array: " << std::endl;
    for (int i = 0; i < size; i++)
        std::cout << (array[i] = rand() % 25 - 5) << " ";
    
    if (array[size - 1] > 0) {
                   int sum = 0;
                   int i = size - 1;
                   while (array[i] > 0) {
                         sum += array[i];
                         i--;
                   }
                   std::cout << "\nSum: " << sum << std::endl;
    } else {
           std::cout << "\nNegative element is the last!" << std::endl;
    }          
    delete [] array;
    
    system("pause");
    return 0;
}
ваша вариант все гут тоже работает. я так понял нужно еще учесть если нету в массиве отрицательных элементов. а так он если все положительные выводит последний элемент как сумму
Yandex
Объявления
09.01.2013, 17:38     Найти сумму элементов, расположенных правее последнего отрицательного элемента
Ответ Создать тему
Опции темы

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