C/C++

Дан массив из N элементов (N < 1000), причем N - четное. Вставить в середину массива сумму всех элементов.

Дан массив из N элементов (N < 1000), причем N - четное. Вставить в середину массива сумму всех элементов, все элементы справа сдвинуть в сторону.
Формат входных данных
В первой строке вводится число N (N < 1000).

Во второй строке вводятся элементы массива ai (|ai|<231-1).

Формат выходных данных
Вывести измененный массив.
входные данные
4
-6 -8 9 8

выходные данные
-6 -8 3 9 8
#include <iostream>

int main() {
    long long arr[1000], sum = 0;
    int n;
    std::cin >> n;
    for (int i = 0; i < n; ++i) {
        std::cin >> arr[i];
        sum += arr[i];
    }
    for (int i = n; i > n / 2; --i)
        arr[i] = arr[i - 1];
    arr[n / 2] = sum;
    for (int i = 0; i <= n; ++i)
        std::cout << arr[i] << ' ';
    return 0;
}

P.S. Ещё можно взять массив int, распечатать его половину, потом long long сумму, затем - оставшуюся половину.
ЭЛ
Эдуард Ладик
20 861
Лучший ответ
#include <iostream>
using namespace std;
int main() {
int box[1000];
int n;
cin >> n;
int m = n >> 1;
++n;
int sum = 0;
for (int i = 0; i < n; ++i) {
if (i == m) ++i;
cin >> box[i];
sum += box[i];
}
box[m] = sum;
for (int i = 0; i < n; ++i) cout << box[i] << ' ';
puts("");
}
#include < iostream > \\убрать пробелы

int sum(int * array, unsigned int size)
{
int s = 0;
for(unsigned int i=0;i < size;i++)
{
s+=array[i];
}
return s;
}

int * add(int * array, unsigned int size, int a)
{
if(size%2==0)
{
int * newArray = new int[size+1];
for(unsigned int i=0; i < size/2;i++)
{
newArray[i] = array[i];
}
newArray[size/2] = a;
for(unsigned int i=size/2+1; i < size+1;i++)
{
newArray[i] = array[i-1];
}
delete [] array;
array = newArray;
}
return array;
}

int main()
{
int N;
std::cin>>N;

if(N%2!=0||N>=1000)
{
return 0;
}

int *array = new int[N];
for(unsigned int i=0; i < N; i++)
{
std::cout << "array[" << i << "] = ";
std::cin>>array[i];
if(std::abs(array[i])>=230)
{
i--;
std::cout << ">= 230, try again" << std::endl;
}
}

array = add(array,N,sum(array,N));

for(unsigned int i=0; i < N+1; i++)
{
std::cout << array[i];
if(i!=N)
{
std::cout <<"\t";
}
}
return 0;
}
Динамические массивы проходили?

Похожие вопросы