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

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

Восстановить пароль Регистрация
 
ZayacV
2 / 2 / 2
Регистрация: 27.10.2013
Сообщений: 72
09.04.2014, 02:38     В одномерном массиве, состоящем из n целых элементов, вычислить сумму элементов массива, между первым и последним нулями #1
В одномерном массиве, состоящем из n целых элементов, вычислить сумму элементов массива, расположенных между первым и последним нулевыми элементами.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2014, 02:38     В одномерном массиве, состоящем из n целых элементов, вычислить сумму элементов массива, между первым и последним нулями
Посмотрите здесь:

в одномерном массиве, состоящем из n целых элементов,используя родовые ф-ции вычислить произведение элементов массива с чётными номерами. C++
C++ В одномерном массиве, состоящем из 30 целых элементов, вычислить сумму элементов массива, расположенных после последнего элемента, равного нулю.
C++ В одномерном массиве, состоящем из n элементов , вычислить сумму элементов между
В одномерном массиве, состоящем из n элементов, вычислить произведение элементов между первым и вторым нулевыми элементами! C++
C++ В одномерном массиве, состоящем из вещественных элементов вычислить номер минимального элемента в массиве, сумму элементов массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
09.04.2014, 08:11     В одномерном массиве, состоящем из n целых элементов, вычислить сумму элементов массива, между первым и последним нулями #2
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
#include <stdio.h>
#include <conio.h>
 
#define N 10
 
int main(int argc, char* argv[])
{
    int A[N] = { 2, 7, 0, 3, 2, 6, 9, 0, 3, 2 };
 
    for (int z = 0; z < N; z++)
        printf("%d ", A[z]);
 
    for (int i = 0; i < N; i++)
    {
        int sum = 0, k = i+1;
        int x = 0, sub[N] = { 0 }; 
        while (A[k] != 0 && !A[i] && k < N) 
        { 
            sum+=A[k]; 
            sub[x++] = A[k++];
        }
        
        if (sum <= 0 || x <= 0) continue;
 
        printf("\n\nA = [ ");
 
        for (int t = 0; t < x; t++)
            printf("%d ",sub[t]);
 
        printf("] sum = %d",sum);
    }
 
    _getch();
 
    return 0;
}
http://codepad.org/zz0Eqs0V
Миниатюры
В одномерном массиве, состоящем из n целых элементов, вычислить сумму элементов массива, между первым и последним нулями  
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
09.04.2014, 09:08     В одномерном массиве, состоящем из n целых элементов, вычислить сумму элементов массива, между первым и последним нулями #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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <vector>
#include <iostream>
#include <algorithm>
 
const static int N = 10;
 
int A[N] = { 2, 7, 0, 3, 2, 0, 9, 0, 3, 2 };
 
static std::vector<int> sub;
static std::vector<int> vect(A,A+N);
 
static int sum = 0;
 
using namespace std;
 
void display(int value) { std::cout << value << " "; sum+=value; }
 
int main(int argc, char* argv[])
{
    std::for_each(vect.begin(), vect.end(), display);
 
    std::cout << endl; sum = 0;
    std::vector<int>::iterator start = vect.begin();
    std::vector<int>::iterator end = start;
    while ((start = std::find(start, vect.end(), 0)+1) != vect.end() && 
           (end   = std::find(start, vect.end(), 0)-1) != vect.end()-1)
    {
        vector<int>::const_iterator it;
        for (it = start; it <= end && it != vect.end(); it++)
            sub.push_back(*it);
 
        std::cout << "A = [ ";
 
        std::for_each(sub.begin(), sub.end(), display);
        sub.erase(sub.begin(), sub.end());
 
        std::cout << "] sum = " << sum;
 
        start = end; sum = 0;
        std::cout << endl;
    }
 
    std::cin.get();
 
    return 0;
}
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,284
09.04.2014, 12:57     В одномерном массиве, состоящем из n целых элементов, вычислить сумму элементов массива, между первым и последним нулями #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
26
#include <cassert>
#include <algorithm>
#include <iostream>
#include <iterator>
#include <numeric>
 
int main() {
  int arr[] = { 2, 7, 0, 3, 2, 6, 9, 0, 3, 2 };
 
  std::cout << "original array: ";
  std::copy( std::cbegin( arr ), std::cend( arr ), std::ostream_iterator<int>( std::cout, " " ) );
  std::cout << "\n";
 
  auto begin_iter = std::find( std::cbegin( arr ), std::cend( arr ), 0 );
  auto end_iter = std::find( std::crbegin( arr ), std::crend( arr ), 0 ).base();
  assert( begin_iter != end_iter && begin_iter != std::cend( arr ) && end_iter != std::cbegin( arr ) );
 
  std::cout << "array elements to sum: ";
  std::copy( begin_iter, end_iter, std::ostream_iterator<int>( std::cout, " " ) );
  std::cout << "\n";
 
  int result = std::accumulate( begin_iter, end_iter, 0 );
  std::cout << "sum: " << result << std::endl;
 
  return 0;
}
Alexdemath
 Аватар для Alexdemath
125 / 122 / 6
Регистрация: 11.04.2010
Сообщений: 253
09.04.2014, 13:11     В одномерном массиве, состоящем из n целых элементов, вычислить сумму элементов массива, между первым и последним нулями #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
26
27
28
29
30
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(0,"");
 
    const int N = 11; // "Входной" массив 
    int A[N] = {2,0,7,3,5,2,0,9,0,3,2};
 
    int k1 = 0; // Поиск первого нулевого элемента
    while (k1 < N && A[k1] != 0) k1++;
 
    int k2 = N; // Поиск последнего нулевого элемента
    while (k2 > 0 && A[k2] != 0) k2--;
 
    int sum = 0; // Подсчёт суммы элементов между первым и последним нулевыми элементами
    for (int i = k1; i < k2; i++) sum += A[i];
 
    cout << "Элементы массива:\n";
    for (int i = 0; i < N; i++) cout << "  " << A[i];
 
    cout << "\n\nИндекс первого нулевого элемента:\n  " << k1
         << "\nИндекс последнего нулевого элемент:\n  " << k2
         << "\nСумма элементов между первым и последним нулевыми элементами:\n  " << sum
         << endl;
 
    system("pause > null");
    return 0;
}
MegaVox
Сообщений: n/a
03.05.2014, 10:24     В одномерном массиве, состоящем из n целых элементов, вычислить сумму элементов массива, между первым и последним нулями #6
Здорово!
Yandex
Объявления
03.05.2014, 10:24     В одномерном массиве, состоящем из n целых элементов, вычислить сумму элементов массива, между первым и последним нулями
Ответ Создать тему
Опции темы

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