C/C++

Конвертировать из Pascal в Си

Текст задачи:
Дан массив размера N. Найти два соседних элемента, сумма
которых максимальна, и вывести эти элементы в порядке
возрастания их индексов.

Код решения:
https://pastebin.com/Z5aJCpmW
Umarbek Orozaliev
Umarbek Orozaliev
104
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
int main()
{
int *a, i, imax, max, N, s;
printf("N = ");
scanf("%d", &N);
a = (int*)malloc(N * sizeof(int));
for (i = 0; i < N; i++) scanf("%d", &a[i]);
max = a[0] + a[1];
imax = 0;
for (i = 1; i < N - 1; i++)
{
s = a[i] + a[i + 1];
if (s > max)
{
max = s;
imax = i;
}
}
printf("%d %d\n", a[imax], a[imax + 1]);
}
Или ещё лучше так:
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
int main()
{
int *a, i, imax, max, N, s;
printf("n = ");
scanf("%d", &N);
a = (int*)malloc(N * sizeof(int));
for (i = 0; i < N; i++) scanf("%d", &a[i]);
max = a[0] + a[1];
imax = 0;
for (i = 1; i < N - 1; i++)
{
s = a[i] + a[i + 1];
if (s > max)
{
max = s;
imax = i;
}
}
printf("%d %d\n", a[imax], a[imax + 1]);
if (imax < N - 1)
for (i = imax + 1; i < N - 1; i++)
if (a[i] + a[i + 1] == max)
printf("%d %d\n", a[i], a[i + 1]);
}
Алексей И Елена Ракитины
Алексей И Елена Ракитины
66 572
Лучший ответ
Umarbek Orozaliev Спасибо!