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