108. Среднее число

 

Дано три различных числа a, b, c. Выведите среднее из них.

 

Вход. Три целых числа a, b, c, по модулю не превышающих 1000.

 

Выход. Выведите среднее среди трех чисел.

 

Пример входа

Пример выхода

11 3 7

7

 

 

РЕШЕНИЕ

элементарные вычисления

 

Анализ алгоритма

Рассмотрим решение при помощи полного перебора, используя условный оператор. Средним числом среди a, b, c будет:

·        a, если b ≤ a ≤ c или b ≥ a ≥ c;

·        b, если a ≤ b ≤ c или a ≥ b ≥ c;

·        c, если a ≤ c ≤ b или a ≥ c ≥ b;

 

Рассмотрим решение с использованием функций минимума и максимума. Средним числом среди a, b, c будет a + b + c – min(a, b, c) – max(a, b, c).

 

Рассмотрим решение с использованием сортировки. Прочитаем три числа в массив длины 3 и отсортируем его. Средний элемент массива является средним среди трех чисел.

 

Реализация алгоритма

Читаем входные данные. Вычисляем ответ по формуле и выводим его.

 

scanf("%d %d %d",&a,&b,&c);

if ((b <= a && a <= c) || (b >= a && a >= c)) res = a;

else if ((a <= b && b <= c) || (a >= b && b >= c)) res = b;

else res = c;

printf("%d\n",res);

 

Реализация алгоритма – при помощи min и max

 

#include <stdio.h>

 

int a, b, c, res;

 

int min(int x, int y)

{

  return (x < y) ? x : y;

}

 

int max(int x, int y)

{

  return (x > y) ? x : y;

}

 

int main(void)

{

  scanf("%d %d %d",&a,&b,&c);

  res = a + b + c - min(a, min(b, c)) - max(a, max(b, c));

  printf("%d\n",res);

  return 0;

}

 

Реализация алгоритма – при помощи сортировки

 

#include <cstdio>

#include <algorithm>

using namespace std;

 

int m[3];

 

int main(void)

{

  scanf("%d %d %d",&m[0],&m[1],&m[2]);

  sort(m,m+3);

  printf("%d\n",m[1]);

  return 0;

}

 

Java реализация

 

import java.util.*;

 

public class Main

{

  static int min(int x, int y, int z)

  {

    return Math.min(x, Math.min(y, z));

  }

 

  static int max(int x, int y, int z)

  {

    return Math.max(x, Math.max(y, z));

  }

   

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    int a = con.nextInt();

    int b = con.nextInt();

    int c = con.nextInt();

    int res = a + b + c - max(a, b, c) - min(a, b, c);

    System.out.println(res);

    con.close();

  }

}

 

Python реализация

 

a, b, c = map(int, input().split())

res = a + b + c - min(a, b, c) - max(a, b, c)

print(res)