KaranKumar P Ответов: 3

Сумма первого и последнего альтернативных элементов


Учитывая целочисленный массив размера N, выведите сумму первого и последнего чисел, второго первого и Второго последнего чисел и так далее.

Примечание: N-четное.

граничное условие:
1<= N <= 9999

входной формат:
Первая строка содержит размер массива N
Вторая строка содержит N целых чисел, разделенных пробелом.

выходной формат:
Первая строка содержит выходные данные, как указано.

Пример Ввода/Вывода 1:
Ввод:
6
2 9 1 5 3 2

Выход:
4 12 6

Пример Ввода/Вывода 2:
Ввод:
10
97 94 66 99 17 78 70 44 67 86

Выход:
183 161 110 169 95

Что я уже пробовал:

#include<stdio.h>
#include <stdlib.h>

int main()
{
    int i,j,n,a[9999],b[9999];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<n;i++)
    for(j=n-1;j>=0;j--)
    {
    b[i]=a[i]+a[j];
    }
    for(i=0;i<n;i++)
    printf("%d ",b[i]);


}

3 Ответов

Рейтинг:
26

phil.o

Вам не нужны два вложенных цикла for, а скорее один цикл с двумя переменными.

int i, j;
for (i = 0, j = N - 1; i <= j; ++i, --j)
   b[i] = a[i] + a[j];


CPallini

5.

Maciej Los

5ed!

Рейтинг:
2

Patrice T

Цитата:
я получаю дополнительно 3 нуля в выходных данных

Потому что вам тоже нужно исправить печатную часть.
for(i=0;i<n/2;i++)
    printf("%d ",b[i]);


[Обновление]
Небольшой анализ показывает, что a никогда не используется повторно один раз b вычисляется => вам не нужно b
#include<stdio.h>
#include <stdlib.h>

int main()
{
    int i,j,n,a[9999],b[9999];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0,j=n-1;i<j;i++,j--)
    {
        b[i]=a[i]+a[j];
        a[i]=a[i]+a[j];
    }
    for(i=0;i<n/2;i++)
        printf("%d ",b[i]);
        printf("%d ",a[i]);
}

объем памяти только что был разделен на 2, и можно идти дальше.


Maciej Los

Приятно!

Рейтинг:
2

Member 13691359

#включить<stdio.h>
#include <stdlib.h>

тап_п()
{
int i,n,a[9999],b[9999];
scanf("%d",&n);
для(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
для(i=0;i<n/2;i++)
{
int j=i-n-1;
b[i]=a[i]+a[j];
}
для(i=0;i<n/2;i++)
printf("%d ",b[i]);
возвращает 0;
}


Maciej Los

И что же?