Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

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

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

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

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

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

16
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
07.01.2013, 20:48 #2
в цикле перебираем элементы от конца массива к началу. проверяем элемент на то, что он не отрицательный. если не отрицательный, наращиваем сумму, если отрицательный - выходим их цикла и выводим сумму.
1
Ev[G]eN
iOS/Android Developer
Эксперт С++
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..его алгоритм более оптимален. ИМХО

1
илья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 хорош но я не знаю как начать перебирать массив с конца
0
Ev[G]eN
iOS/Android Developer
Эксперт С++
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--)
0
илья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--)
спасибо щас попробую
0
илья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;
}
вот попробовал сделать. вашу взял как пример что то оно в ответе выводит числа какие то странные и при компиляции окно появляется
0
Миниатюры
Найти сумму  элементов, расположенных правее последнего отрицательного элемента   Найти сумму  элементов, расположенных правее последнего отрицательного элемента  
Ev[G]eN
iOS/Android Developer
Эксперт С++
5097 / 1535 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
09.01.2013, 17:16 #8
Цитата Сообщение от илья1995 Посмотреть сообщение
C++
1
if (i = s - 1) {
здесь как минимум должно быть "=="
и я, если честно, не понял того, что Вы делаете
0
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
09.01.2013, 17:22  [ТС] #9
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
здесь как минимум должно быть "=="
и я, если честно, не понял того, что Вы делаете
ну я перебираю массив с конца ищу отрицательный элемент и потом складываю все элементы которые до него

Добавлено через 1 минуту
исправил как вы сказали теперь программа работает но почему то все время выводится сообщение что отрицательный последний хотя он стоит предпоследним
0
Ev[G]eN
iOS/Android Developer
Эксперт С++
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;
это явно не то, чего вы хотите)
0
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
09.01.2013, 17:25  [ТС] #11
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
это явно не то, чего вы хотите)
а как тогда должно быть подскажите?)
0
Croessmah
Ушел
Эксперт CЭксперт С++
13554 / 7705 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 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;
}
1
илья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--)//
можете пояснить вот этот кусок а так программа все гут работает как надо.
0
Ev[G]eN
iOS/Android Developer
Эксперт С++
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;
}
1
илья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;
}
ваша вариант все гут тоже работает. я так понял нужно еще учесть если нету в массиве отрицательных элементов. а так он если все положительные выводит последний элемент как сумму
0
09.01.2013, 17:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2013, 17:38
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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