Массив содержит нулевые элементы [закрыт]

120
18 марта 2019, 17:20

Заданный массив содержит нулевые элементы, разделяющие массив на подмассивы. Посчитать сумму элементов для каждого из подмассивов и вывести пользователю результат в формате: {элементы подмассива 1}, сумма1=число; { элементы подмассива 2}, сумма=число… 1)Как перестроить что бы элементы массива вводил пользователь ? 2)Желательно сделать так что бы использовался указатель *.

#include <iostream>
using namespace std;
int main()
{
    const int n(17);
    int arr[] = {1,4,3,0,8,9,0,1,3,2,0,7,7,7,7,0,1},counter(0);
    for(int i = 0;i<n;++i){
        cout << counter++ << " : ";
        int sum(0);
        while(arr[i] && i<n){
            cout << arr[i] << ' ';
            sum += arr[i++];
        }
        cout << "\n" << sum << "\n\n";
    }
    cout << endl;
    return 0;
}
Answer 1
    #include <iostream>
    using namespace std;
    int main(void)
    {
        int size = 0;
        int sum = 0;
        int *array = NULL;
        cin >> size; 
        array = new int [size];
        for(int i = 0; i < size; i++)
            cin >> *(array + i);
        for(int i = 0; i < size; i++)
        {
            if(*(array + i) != 0)
            {
                cout << *(array + i) << "\t";
                sum += *(array + i);
            }else
            {
                cout << "Number:" << sum;
                sum = 0;            
            }
        }
        return 0;
    }

Вроде так, может ошибку какую выдаст ибо на телефоне писал))

Answer 2

Нулевые элементы должны размещаться именно в таком порядке, или же их расположение зависит от пользователя ? Для того, чтобы использовать массив через указатель, нужно использовать оператор разыменования "*", то есть: int arr[5]; for(int i = 0; i < 5; i++); cin >> *(arr + i); так как название нашего массива указывает на адрес первого элемента этого же массива, то операцией разыменования *(arr) мы получим значение массива по этому адресу. А учитывая то, что при объявлении массива некоторого размера, мы выделяем последовательность ячеек для хранения значений указанного типа, то мы от адреса первой ячейки можем последовательно сдвигаться к следующим при помощи выражения: "arr + n", где arr - указатель на первый адрес, а n - количество ячеек, на которое мы хотим сдвинуться.

READ ALSO
Принцип работы vulkan.hpp?

Принцип работы vulkan.hpp?

Не понимаю в чем заключается его суть, если он не умеет сам создавать классы, нам все так же требуется вызывать си функции для инициализации...

147
Android Studio написание библиотеки метод GetMethodID

Android Studio написание библиотеки метод GetMethodID

Облазил кучу форумов и мануаловНО ни где не смог найти как реализовать возможность получить данные в библиотеки из хранилища андроид (Settings

146
Конструктор переноса

Конструктор переноса

У меня есть задача: добавить в класс конструктор переносаПамять под поля класса выделять динамически

141
Принудительный вызов ToolTip

Принудительный вызов ToolTip

Есть QLineEdit с установленным tooltip, в которое записываются численные значенияХочется вызывать tooltip у этого поля при некорректном вводе

136