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

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

Восстановить пароль Регистрация
 
glushara
0 / 0 / 0
Регистрация: 20.04.2012
Сообщений: 33
26.05.2013, 23:40     Найти сумму последних 5 положительных элементов массива #1
нужно найти сумму последних 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2013, 23:40     Найти сумму последних 5 положительных элементов массива
Посмотрите здесь:

C++ Найти сумму и количество положительных элементов массива
C++ Найти сумму положительных элементов двумерного массива
C++ Найти сумму четных отрицательных и сумму нечетных положительных элементов массива.
C++ Найти сумму нечетных положительных элементов массива
C++ Определить сумму третьего, четвертого и пятого числа и трех последних положительных элементов массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
26.05.2013, 23:54     Найти сумму последних 5 положительных элементов массива #2
У вас переменная s не инициализирована.
C++
1
s =0;
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
27.05.2013, 00:06     Найти сумму последних 5 положительных элементов массива #3
Цитата Сообщение от Genn55 Посмотреть сообщение
У вас переменная s не инициализирована.
Она потом ициализирована.

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

В таких случаях надо давать исходные данные, которые приводят к ошибке. glushara, чё вводишь, что прога не работает?
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
27.05.2013, 00:08     Найти сумму последних 5 положительных элементов массива #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;
}
Зачем вам закомментированные строки?Не забудте ввести условие ввода размера.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 771
Регистрация: 27.09.2012
Сообщений: 16,905
Записей в блоге: 2
Завершенные тесты: 1
27.05.2013, 00:09     Найти сумму последних 5 положительных элементов массива #5
Цитата Сообщение от glushara Посмотреть сообщение
последних 5 положительных элементов массива.
а Вы просто сумму пяти последних пытаетесь найти
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
27.05.2013, 00:14     Найти сумму последних 5 положительных элементов массива #6
Извиняюсь не совсем внимательно прочитал условие
C++
1
//std::cout<<a[i];
с этой строкой в консоли лишний раз выведится массив одной строкой.
glushara
0 / 0 / 0
Регистрация: 20.04.2012
Сообщений: 33
27.05.2013, 00:21  [ТС]     Найти сумму последних 5 положительных элементов массива #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 Посмотреть сообщение
а Вы просто сумму пяти последних пытаетесь найти
а что добавить/исправить?
вот не могу додуматься.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
27.05.2013, 00:29     Найти сумму последних 5 положительных элементов массива #8
glushara, тебя сколько раз можно спрашивать, какие элементы вводишь?
glushara
0 / 0 / 0
Регистрация: 20.04.2012
Сообщений: 33
27.05.2013, 00:37  [ТС]     Найти сумму последних 5 положительных элементов массива #9
Цитата Сообщение от kravam Посмотреть сообщение
glushara, тебя сколько раз можно спрашивать, какие элементы вводишь?
ввожу
n=8
элементы: 3 7 -3 2 6 -1 4 7
выводит
s=18
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
27.05.2013, 00:41     Найти сумму последних 5 положительных элементов массива #10
C++
1
2
3
4
    for(i=n-5;i<n;i++) {
    if (a[i]>0)
    s+=a[i];
    }
и всё будет круто
glushara
0 / 0 / 0
Регистрация: 20.04.2012
Сообщений: 33
27.05.2013, 00:55  [ТС]     Найти сумму последних 5 положительных элементов массива #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
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
27.05.2013, 01:09     Найти сумму последних 5 положительных элементов массива #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;
glushara
0 / 0 / 0
Регистрация: 20.04.2012
Сообщений: 33
27.05.2013, 01:17  [ТС]     Найти сумму последних 5 положительных элементов массива #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;
большое спасибо!
все работает
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
27.05.2013, 01:21     Найти сумму последних 5 положительных элементов массива #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;
}
Но нужно добавить условие ввода размера
BAADF00D
Заблокирован
27.05.2013, 01:39     Найти сумму последних 5 положительных элементов массива #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 положительных вообще.
volodin661
 Аватар для volodin661
575 / 508 / 82
Регистрация: 10.12.2013
Сообщений: 1,691
Записей в блоге: 1
22.03.2014, 18:06     Найти сумму последних 5 положительных элементов массива #16
но ведь есть и человеческие языки



Perl 5
  1. use utf8;
  2. sub http://www.cyberforum.ru/cgi-bin/latex.cgi?\Sigma(@) { $sum += $_ for @_; return $sum }
  3. print http://www.cyberforum.ru/cgi-bin/latex.cgi?\Sigma grep { $_>0 } (1, 3,'слово затесалось', 5, 7,-4, 8, -1, 'и ещё одно',-6 ,7)[-5 .. -1];


  1. используем в исходном тексте символы Юникода
  2. определяем функцию с красивым греческим именем http://www.cyberforum.ru/cgi-bin/latex.cgi?\Sigma, суммирующую свои аргументы
  3. выбираем из списка последние 5 членов ( лишь бы были положительные), вызываем http://www.cyberforum.ru/cgi-bin/latex.cgi?\Sigma и печатаем результат

Добавлено через 9 минут
или академический С-подобный стиль:

Perl 6
1
2
3
4
5
6
my @a = ( 1, 3, 5, 7, -4, 8, 0, 6, 1 );
my $sum;
for(my $i=-5; $i; ++$i) {
    $sum += $a[$i] if $a[$i]>0
}
print $sum;
PAMPA
 Аватар для PAMPA
6 / 7 / 2
Регистрация: 20.03.2014
Сообщений: 115
22.03.2014, 18:45     Найти сумму последних 5 положительных элементов массива #17
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
// nadeyus eto to chto vi hoteli
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
 
{
   int n,*a; 
   cout<<"vvedit n: ";
      cin>>n;
    a= new int[n];
    cout<<"vvedit elementy: \n";
    
    for(int i=0;i<n;i++){
       
       cin >> a[i];
}
cout << " vse elementi massiva:\n";
    
    for(int i=0;i<n;i++)
        {
             cout <<' ' << a[i] << endl;
}
    
    int s=0;
    
    for(int i=n-5;i<n;i++) {
    if (a[i]>0)
    s+=a[i];
    }
    cout<<"summa 5 polojitelnih elementov:  "<<s;
    
 getch();
    return 0;
}
 Комментарий модератора 
Обрамляйте код тегами!
volodin661
 Аватар для volodin661
575 / 508 / 82
Регистрация: 10.12.2013
Сообщений: 1,691
Записей в блоге: 1
22.03.2014, 19:32     Найти сумму последних 5 положительных элементов массива #18
в юниксе getch() отсутствует, соответственно код не откомпилируется.
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
22.03.2014, 22:36     Найти сумму последних 5 положительных элементов массива #19
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
#include <iostream>
#include <cstdlib>
#include <time.h>
 
using namespace std;
 
int main()
{
    int *mas,n;
    srand(time(NULL));
    cout <<"\t Enter n  \t\n";
    cin >>n;
    mas = new int[n];
    cout<<"\t Massiv \t\n";
    //Заполним рандомно,чтобы не заполнять вручную
    for(int i = 0; i < n; i++)
    {
        mas[i] = rand()% 25 - 10;//заполняем
        cout<<mas[i]<<" ";//выводим
    }
    int sum = 0,count = 0;
    cout <<"\n\n";
    for(int i = n-1; i >= 0; i--)//проходим с конца массива
    {
        if (mas[i] > 0)
            {
                count ++;//считаем количество положительных элементов
                sum += mas[i];//Считаем их сумму
            }
        if (count == 5)//если таких элементов уже 5 выходим из цикла
        break;
    }
    if (count < 5)
    cout << "\t No! \t\n";//если таких элементов меньше не показываем.
    else
    cout << "\t Summa =  "<< sum<<"\n";//показываем результат
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2014, 23:41     Найти сумму последних 5 положительных элементов массива
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
BAADF00D
Заблокирован
16.11.2014, 23:41     Найти сумму последних 5 положительных элементов массива #20
Цитата Сообщение от volodin661 Посмотреть сообщение
в юниксе getch() отсутствует, соответственно код не откомпилируется.
добавь header ncurses.h, ключик -lncurses и будет пиченька.
Yandex
Объявления
16.11.2014, 23:41     Найти сумму последних 5 положительных элементов массива
Ответ Создать тему
Опции темы

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