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

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

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

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

26.05.2013, 23:40. Просмотров 1036. Ответов 19
Метки нет (Все метки)

нужно найти сумму последних 5 положительных элементов массива.
вот я кое что написал
но программа не работает.
гляньте
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
#include<stdlib.h>
#include<iostream>
int main()
{
    int a[1000];
    int n,i,s;
    std::cout<<"vvedit n: ";
    std::cin>>n;
    std::cout<<"vvedit elementy: \n";
    for(i=0;i<n;i++)
        std::cin>>a[i];
    for(i=0;i<n;i++)
        std::cout<<a[i]<<" ";
  
    for(i=0;i<n;i++)
    if (a[i]>0)
  std::cout<<a[i];
  
    s=0;
    for(i=n-5;i<n;i++)
    s+=a[i];
    std::cout<<"  s="<<s;
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2013, 23:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти сумму последних 5 положительных элементов массива (C++):

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

Найти сумму квадратов последних шести элементов массива - C++
Хочу чтобы массив заполнялся случайными числами (это не обязательно). #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; ...

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

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

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

Найти сумму положительных элементов массива - C++
Запишите фрагмент программы, с помощью которого находится сумма положительных элементов массива A (массив из 15 целых элементов...

19
Genn55
370 / 217 / 41
Регистрация: 26.12.2012
Сообщений: 713
26.05.2013, 23:54 #2
У вас переменная s не инициализирована.
C++
1
s =0;
0
kravam
быдлокодер
1697 / 884 / 45
Регистрация: 04.06.2008
Сообщений: 5,483
27.05.2013, 00:06 #3
Цитата Сообщение от Genn55 Посмотреть сообщение
У вас переменная s не инициализирована.
Она потом ициализирована.

+++++++++++++++++++++++++

В таких случаях надо давать исходные данные, которые приводят к ошибке. glushara, чё вводишь, что прога не работает?
0
Genn55
370 / 217 / 41
Регистрация: 26.12.2012
Сообщений: 713
27.05.2013, 00:08 #4
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
#include<stdlib.h>
#include<iostream>
int main()
{
    int a[1000];
    int n,i,s=0;
    std::cout<<"vvedit n: ";
    std::cin>>n;
    std::cout<<"vvedit elementy: \n";
    for(i=0;i<n;i++)
        std::cin>>a[i];
    for(i=0;i<n;i++)
        std::cout<<a[i]<<" ";
 
    //for(i=0;i<n;i++)
    //if (a[i]>0)
  //std::cout<<a[i];
 
    //s=0;
    for( i=n-5;i<n;i++)
    s+=a[i];
    std::cout<<"  s="<<s;
    //system("pause");
    return 0;
}
Зачем вам закомментированные строки?Не забудте ввести условие ввода размера.
0
Croessmah
Эксперт CЭксперт С++
13510 / 7668 / 866
Регистрация: 27.09.2012
Сообщений: 18,869
Записей в блоге: 3
Завершенные тесты: 1
27.05.2013, 00:09 #5
Цитата Сообщение от glushara Посмотреть сообщение
последних 5 положительных элементов массива.
а Вы просто сумму пяти последних пытаетесь найти
0
Genn55
370 / 217 / 41
Регистрация: 26.12.2012
Сообщений: 713
27.05.2013, 00:14 #6
Извиняюсь не совсем внимательно прочитал условие
C++
1
//std::cout<<a[i];
с этой строкой в консоли лишний раз выведится массив одной строкой.
0
glushara
0 / 0 / 0
Регистрация: 20.04.2012
Сообщений: 33
27.05.2013, 00:21  [ТС] #7
Цитата Сообщение от kravam Посмотреть сообщение
Она потом ициализирована.

+++++++++++++++++++++++++

В таких случаях надо давать исходные данные, которые приводят к ошибке. glushara, чё вводишь, что прога не работает?
она работает, но совсем не правильно.
почему не знаю

Добавлено через 1 минуту
Цитата Сообщение от Genn55 Посмотреть сообщение
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
#include<stdlib.h>
#include<iostream>
int main()
{
    int a[1000];
    int n,i,s=0;
    std::cout<<"vvedit n: ";
    std::cin>>n;
    std::cout<<"vvedit elementy: \n";
    for(i=0;i<n;i++)
        std::cin>>a[i];
    for(i=0;i<n;i++)
        std::cout<<a[i]<<" ";
 
    //for(i=0;i<n;i++)
    //if (a[i]>0)
  //std::cout<<a[i];
 
    //s=0;
    for( i=n-5;i<n;i++)
    s+=a[i];
    std::cout<<"  s="<<s;
    //system("pause");
    return 0;
}
Зачем вам закомментированные строки?Не забудте ввести условие ввода размера.
я думал сначала выделить все положительные элементы, а потом ужи из них искать сумму 5 последних.

Добавлено через 58 секунд
Цитата Сообщение от Croessmah Посмотреть сообщение
а Вы просто сумму пяти последних пытаетесь найти
а что добавить/исправить?
вот не могу додуматься.
0
kravam
быдлокодер
1697 / 884 / 45
Регистрация: 04.06.2008
Сообщений: 5,483
27.05.2013, 00:29 #8
glushara, тебя сколько раз можно спрашивать, какие элементы вводишь?
0
glushara
0 / 0 / 0
Регистрация: 20.04.2012
Сообщений: 33
27.05.2013, 00:37  [ТС] #9
Цитата Сообщение от kravam Посмотреть сообщение
glushara, тебя сколько раз можно спрашивать, какие элементы вводишь?
ввожу
n=8
элементы: 3 7 -3 2 6 -1 4 7
выводит
s=18
0
kravam
быдлокодер
1697 / 884 / 45
Регистрация: 04.06.2008
Сообщений: 5,483
27.05.2013, 00:41 #10
C++
1
2
3
4
    for(i=n-5;i<n;i++) {
    if (a[i]>0)
    s+=a[i];
    }
и всё будет круто
0
glushara
0 / 0 / 0
Регистрация: 20.04.2012
Сообщений: 33
27.05.2013, 00:55  [ТС] #11
Цитата Сообщение от kravam Посмотреть сообщение
C++
1
2
3
4
    for(i=n-5;i<n;i++) {
    if (a[i]>0)
    s+=a[i];
    }
и всё будет круто
в этом случае, я так понимаю, программа среди последних 5 элементов ищет положительные и суммирует.
а нужно что бы суммировало 5 последних положительных
например
элементы 4 5 -1 4 7 3 -4 -2 5 3 2
то s=2+3+5+3+7=20
а выводит s=2+3+5=10
0
kravam
быдлокодер
1697 / 884 / 45
Регистрация: 04.06.2008
Сообщений: 5,483
27.05.2013, 01:09 #12
C++
1
2
3
4
5
6
7
8
9
    s=0;
    int k= 0;
    for(i=n-1;i>=0&&k<5 ;i--) {
     if (a[i]>0) {
      k++;
      s+=a[i];
     } 
    }
    std::cout<<"  s="<<s;
1
glushara
0 / 0 / 0
Регистрация: 20.04.2012
Сообщений: 33
27.05.2013, 01:17  [ТС] #13
Цитата Сообщение от kravam Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
    s=0;
    int k= 0;
    for(i=n-1;i>=0&&k<5 ;i--) {
     if (a[i]>0) {
      k++;
      s+=a[i];
     } 
    }
    std::cout<<"  s="<<s;
большое спасибо!
все работает
0
Genn55
370 / 217 / 41
Регистрация: 26.12.2012
Сообщений: 713
27.05.2013, 01:21 #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
#include<stdlib.h>
#include<iostream>
int main()
{
    int a[1000];
    int b[5];
    int n,i,s=0;
    std::cout<<"vvedit n: ";
    std::cin>>n;
    std::cout<<"vvedit elementy: \n";
    for(i=0;i<n;i++)
        std::cin>>a[i];
    for(i=0;i<n;i++)
        std::cout<<a[i]<<" ";
 
    int m= 0;
    for(i=n-1;i>=0;i--)
     {
     if (a[i]>0)
     {
      m++;
      s+=a[i];
     }
     if (m ==5)
     break;
     }
    std::cout<<"  s="<<s;
      //system("pause");
    return 0;
}
Но нужно добавить условие ввода размера
2
BAADF00D
Заблокирован
27.05.2013, 01:39 #15
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 <iostream>
 
int is_positive (int *pbeg, int *pend, int num_positives, int *res) {
    int cnter = 0;
    int sum = 0;
 
    while (cnter != num_positives && pend >= pbeg) {
        if (*pend > 0) {
            ++cnter;
            sum += *pend;
        }
        --pend;
    }
    return (cnter == num_positives) ? (*res = sum) : (*res = -1);
}
 
int main()
{
    // size = 9
    int a[] = {1, 2, 3, 4, 5, -6, -7, -8, -9};
    int b[] = {-1, -2, 3, 4, 5, -6, -7, -8, -9};
    int res = -1;
 
    if (is_positive(a, (int*)&a + 8, 5, &res) != -1)
        std::cout << res << std::endl;
    else
        std::cerr << "array \"a\" not have five positive numbers" << std::endl;
 
    if (is_positive(b, (int*)&b + 8, 5, &res) != -1)
        std::cout << res << std::endl;
    else
        std::cerr << "array \"b\" not have five positive numbers" << std::endl;
 
    return 0;
}
Добавлено через 46 секунд
с проверкой на существование 5 положительных вообще.
3
27.05.2013, 01:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2013, 01:39
Привет! Вот еще темы с ответами:

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

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

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

Найти сумму положительных элементов массива и количество этих элементов - C++
Задан массив d. Найти сумму корней положительных элементов массива и количество этих элементов .


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

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

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