Получите максимум и минимум из чисел - PullRequest
0 голосов
/ 02 октября 2018

Мне нужно напечатать максимальное и минимальное число из чисел.Проблема в том, что когда я устанавливаю mn и mx равными 0, это просто не будет работать, потому что, когда пользователь записывает числа 1 2 3 4 5, минимум равен 0, а не 1, и в этом проблема.

Мой код:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main() {

    int x, mx = 0, mn = 0;
    int i = 1, n;

    scanf("%d", &n);
    for (i = 1; i <= n; i++) {
        printf("Your number %d:", i);
        scanf("%d", &x);
            if (x > mx) {
                mx = x;
            };
            if (x < mn) {
            mn = x;
            };
    };

    printf("minimum is: %d", mn);
    printf("maximum is: %d", mx);
    system("pause");
    return 0;
}

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

для печати максимального и минимального числа из чисел.

Инициализируйте mn,mx противоположными крайностями, а не обоими до 0. Нет необходимости создавать специальный случай в цикле.Хороший код стремится уменьшить сложность циклов.

Это легко и правильно обнаруживает угловой случай, когда нет минимума / максимума (пустой набор).

#include <limits.h>

// int mx = 0, mn = 0;
int mn = INT_MAX;
int mx = INT_MIN;

...  code as before

if (mn > mx) {
  puts("No input encountered");
} else {
  printf("minimum is: %d\n", mn);
  printf("maximum is: %d\n", mx);
}
0 голосов
/ 02 октября 2018

Установите оба значения на первое введенное значение.Затем используйте текущий код как есть.

(за исключением system("pause");. C не нуждается в этом.)

...