Массивы в C, которые добавляют пары и сравнивают, чтобы найти максимум - PullRequest
0 голосов
/ 27 марта 2020

Итак, у меня проблема с написанием кода.

Я только начинаю в мире программирования, мне нужно создать массив, который содержит от 2 до 20 целых чисел, а затем добавить первое и последнее целое число вместе, чтобы получить максимальное значение; например в этом [23; 12; 78; 52; 76; 15; 21; 82; 64; 91], программа добавляет 23 + 91, затем 12 + 62, затем 78 + 82, а затем после этого выводит максимальную сумму, и она будет работать только при наличии четного числа входных массивов, если нечетное выиграло не работает.

Пожалуйста, на что будет похож код?

Это часть кода, которую я смог написать до сих пор

int m, a[20], sum, K, temp;
printf("Enter size of array:\n");
scanf_s("%d", &m);

if (m > 20 || m < 2 || m % 2 != 0)
{
    error_printf("Invalid input data");
    WAIT_ANY_KEY
    return 0;
}

for (int i = 0; i < m; i++) {
    printf("Enter Number [%d] : ", i + 1);
    scanf_s("%d", &a[i]);
    if (a[i] > 1000 || a[i] < 0)
        {
            error_printf("Invalid Input data");
            WAIT_ANY_KEY
                return 0;
        }
    }

    printf("\n The largest sum of pairs is : [%d]\n\n", max);
    return 0;
}

I Буду признателен, если кто-нибудь может объяснить, как вместо 10 фиксированных целых чисел для ввода, я могу просто ввести, сколько цифр я хочу в массиве, а также как исправить сумму и найти максимум.

Спасибо

1 Ответ

0 голосов
/ 07 апреля 2020

Просто рабочий пример:

#include<stdio.h>

int printMatrix ( const char *d, int mtp[], int n ) {
  printf ( "\n The matrix [ %s ] is : ", d );
  for ( int i=0; i<n-1; i++ ) {
    printf ( "%d - ", mtp[i] );
  }
  printf ( "%d", mtp[n-1] );
  return 0;
}

int main () {
  const int N = 20;
  int max=0;
  int n=0;

  while ( n == 0 ) {
    printf ( " Number of Items should be even, between 2 and 20\n" );
    printf ( " Enter the number of items : " );
    scanf  ( "%d", &n );
    if ( n>20 || n%2 != 0 || n<2 ) n = 0;
  }

  int M[N] = {0};
  int mM[int(N/2)] = {0};

  for ( int i=0; i<n; i++ ) {
    printf ( "Enter Number [%d] : ", i+1 );
    scanf  ( "%d", &M[i] );
  }

  for ( int i=0; i<n/2; i++ ) {
    mM[i] = M[i] + M[n-1-i];
  }

  for ( int i=0; i<n/2; i++) {
    if (mM[i] > max) max = mM[i];
  }

  printMatrix ( "Starting   ", M, n );
  printMatrix ( "Couples Sum", mM, n/2 );
  printf ( "\n The max is : [%d]\n\n", max );
  return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...