Как найти максимум среди вводимых чисел

Запросить 5 чисел в список ,и найти в этом списке мин и макс число с
помощью цикла (запрещено min, max, sorted, sort). Вывести эти
числа

A = []
    max = ''
    min = ''
    a = int(input('Введите целое число...'))
    c = int(input('Введите целое число...'))
    d = int(input('Введите целое число...'))
    e = int(input('Введите целое число...'))
    f = int(input('Введите целое число...'))
    A += a,c,d,e,f
    for i in A:
        if i == max:
            max += i
        else:
            min += i
    
    print(f'Максимальное: {max}' , f'Минимальное: {min}' )

Зашел в тупик. Разъясните где не прав.

Duracell's user avatar

Duracell

1,9913 золотых знака16 серебряных знаков33 бронзовых знака

задан 29 дек 2022 в 17:50

Ihor's user avatar

4

Вам нужно немного подправить свой алгоритм. Примерно как-то так:

A = []
for _ in range(5):
    a = int(input('Введите целое число...'))
    A.append(int(a))

m_max = A[0]
m_min = A[0]
for i in A:
    if m_max < i:
        m_max = i
    if m_min > i:
        m_min = i

print(f'Максимальное: {m_max}' , f'Минимальное: {m_min}' )

ответ дан 29 дек 2022 в 18:23

Andrei's user avatar

AndreiAndrei

2,0501 золотой знак2 серебряных знака11 бронзовых знаков

2

Ваш код по сути правильный, нужно было только сделать 5 правок:

A = []
max_ = float('-inf')                        # здесь
min_ = float('inf')                         # здесь
a = int(input('Введите целое число...'))   
c = int(input('Введите целое число...'))
d = int(input('Введите целое число...'))
e = int(input('Введите целое число...'))
f = int(input('Введите целое число...'))
A += a, c, d, e, f
for i in A:
    if i > max_:
        max_ = i                            # здесь 
    if i < min_:                            # здесь
        min_ = i                            # здесь

print(f'Максимальное: {max_}' , f'Минимальное: {min_}' )

К тому же я изменил ваши имена max и min (которые являются именами стандартных функций) на max_ и min_.


Объяснение:

  1. Чтобы найти самое большое значение, предположим сначала, что оно самое малое:
    переменной max_ присвоим сначала самое малое значение.

  2. Потому что в Питоне не существует самое малое целое число, мы поможем себе самым малым вещественным числом — отрицательной бесконечностью: float('-inf').

  3. Когда встретится число больше текущего наибольшего (if i > max_:), текущее наибольшее заменим ним (max_ = i).

  4. Подобным образом действуем для получения самого малого значения.

ответ дан 29 дек 2022 в 23:43

MarianD's user avatar

MarianDMarianD

14.1k3 золотых знака18 серебряных знаков29 бронзовых знаков

2

У вас в коде существует несколько ошибок:

  1. Вы инициализировали переменные max и min как строки, но вам нужно будет сравнивать числа, поэтому эти переменные должны быть типа int или float.

  2. В цикле for вы пытаетесь сравнивать число i с переменной max, но это не имеет смысла, так как max изначально равно пустой строке. Вместо этого вам нужно сравнивать i с переменной max, которая хранит максимальное значение, которое вы нашли на данный момент.

  3. В цикле for вы пытаетесь добавить число i к переменным max и min, но это неверно, так как вы перезаписываете значения этих переменных. Вместо этого вам нужно сравнивать i с значением max и min и обновлять эти значения, если i больше или меньше соответственно.

Для того, чтобы найти минимальное и максимальное число в списке A, вам нужно изменить код следующим образом:

A = []
max = float('-inf')  # Максимальное значение инициализируем минимальным возможным значением float
min = float('inf')  # Минимальное значение инициализируем максимальным возможным значением float
a = int(input('Введите целое число...'))
c = int(input('Введите целое число...'))
d = int(input('Введите целое число...'))
e = int(input('Введите целое число...'))
f = int(input('Введите целое число...'))
A += a,c,d,e,f

for i in A:
    if i > max:  # Обновляем значение max, если i больше текущего значения max
        max = i
    if i < min:  # Обновляем значение min, если i меньше текущего значения min
        min = i

print(f'Максимальное: {max}' , f'Минимальное: {min}' )

В этом коде мы инициализируем переменные max и min с помощью констант float('-inf') и float('inf') соответстнно

ответ дан 1 янв в 16:46

hedgehogues's user avatar

hedgehogueshedgehogues

9,2518 золотых знаков44 серебряных знака93 бронзовых знака

Перейти к содержанию

Найти максимальное число из трех

Просмотров 44.5к. Обновлено 29 октября 2021

Пусть a, b, c – переменные, которым присваиваются введенные числа, а переменная m в конечном итоге должна будет содержать значение наибольшей переменной. Тогда алгоритм программы сведется к следующему:

  1. Сначала предположим, что переменная a содержит наибольшее значение. Присвоим его переменной m.
  2. Если текущее значение m меньше, чем у b, то следует присвоить m значение b. Если это не так, то не изменять значение m.
  3. Если текущее значение m меньше, чем у c, то присвоить m значение c. Иначе ничего не делать.

Данную задачу можно решить и без использования четвертой переменной, однако программа будет логически сложнее:

  1. Если a больше b, то проверить больше ли a, чем c. Если это так, то максимальное число содержит переменная a. Если a больше b, но при этом меньше c, то максимальным является значение c.
  2. Иначе (когда a меньше b) сравнить значения b и c. Большее из них и есть максимальное.

Пример кода Pascal

максимальное среди трех чисел паскаль


// 1-й способ:

var
a,b,c,max: integer;
begin
readln(a,b,c);
max := a;
if max < b then max := b;
if max < c then max := c;
writeln(max);
end.

// 2-й способ:

var
a,b,c: integer;
begin
readln(a,b,c);
if a > b then
if a > c then writeln(a)
else writeln(c)
else
if b > c then writeln(b)
else writeln(c);
end.

Пример кода Язык Си


// 1-й вариант:

#include

main() {
int a,b,c,m;
scanf("%d%d%d",&a,&b,&c);
m = a;
if (m < b) m = b;
if (m < c) m = c;
printf("%dn", m);
}

// 2-й вариант:

#include

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

if (a > b)
if (a > c) printf("%dn", a);
else printf("%dn", c);
else
if (b > c) printf("%dn", b);
else printf("%dn", c);
}

Пример кода Python

максимальное среди трех чисел Python


# 1-й вариант:

a = int(input())
b = int(input())
c = int(input())

m = a
if m < b:
m = b
if m < c:
m = c

print(m)

# 2-й вариант:

a = int(input())
b = int(input())
c = int(input())

if a > b:
if a > c:
print(a)
else:
print(c)
else:
if b > c:
print(b)
else:
print(c)

Пример кода КуМир

| 1-й вариант:

алг максимум из трех
нач
цел a, b, c, m
ввод a, b, c
m := a
если b > m то m := b все
если c > m то m := c все
вывод m
кон

| 2-й вариант:

алг максимум из трех
нач
цел a, b, c
ввод a, b, c
если a > b то
если a > c то
вывод a
иначе
вывод c
все
иначе
если b > c то
вывод b
иначе
вывод c
все
все
кон

Пример кода Basic-256


# 1-й вариант:

input a
input b
input c
max = a
if max < b then max = b
if max < c then max = c
print max

# 2-й вариант:

input a
input b
input c
if a > b then
if a > c then
print a
else
print c
endif
else
if b > c then
print b
else
print c
endif
endif

Перейти к содержанию

На чтение 2 мин Просмотров 2.2к. Опубликовано 29.01.2023

Содержание

  1. Введение
  2. Написание кода
  3. Заключение

Введение

В ходе статьи напишем простой код для определения максимального число из трёх данных в Python.

Написание кода

Для начала даём пользователю возможность ввести три числа:

a = int(input('Введите первое число: '))
b = int(input('Введите второе число: '))
c = int(input('Введите третье число: '))

print('Максимальным числом является: ', end='')

Далее нужно просто задать парочку условий.

Сначала проверяем, если b <= a >= c, то самое большое число хранится в переменной “a”:

a = int(input('Введите первое число: '))
b = int(input('Введите второе число: '))
c = int(input('Введите третье число: '))

print('Максимальным числом является: ', end='')
if b <= a >= c:
    print(a)

Если же число в переменной “a” оказалось не самым большим, начинаем проверять число в переменной “b”:

a = int(input('Введите первое число: '))
b = int(input('Введите второе число: '))
c = int(input('Введите третье число: '))

print('Максимальным числом является: ', end='')
if b <= a >= c:
    print(a)
elif a <= b >= c:
    print(b)

Ну и если же в “b” хранится не максимальное число, остаётся проверить переменную “c”:

a = int(input('Введите первое число: '))
b = int(input('Введите второе число: '))
c = int(input('Введите третье число: '))

print('Максимальным числом является: ', end='')
if b <= a >= c:
    print(a)
elif a <= b >= c:
    print(b)
elif a <= c >= b:
    print(c)

Пример:

Введите первое число: 10
Введите второе число: 5
Введите третье число: 3
Максимальным числом является: 10

Заключение

В ходе статьи мы с Вами научились определять максимальное число из трёх в Python. Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂

Admin

На занятии происходит знакомство с логическим типом Boolean в Паскале. Рассматривается алгоритм того, как находится минимальное и максимальное число в Паскале

Сайт labs-org.ru предоставляет лабораторные задания по теме для закрепления теоретического материала и получения практических навыков программирования на Паскале. Краткие теоретические сведения позволят получить необходимый для этого минимум знаний. Решенные наглядные примеры и лабораторные задания изложены по мере увеличения их сложности, что позволит с легкостью изучить материал с нуля. Желаем удачи!

Содержание:

  • Логический тип данных Boolean в Паскале
  • Минимальное и максимальное число в Паскале.
    [Название файла: task_bool4.pas]

Мы уже научились писать программы, основанные на линейных алгоритмах, в Паскале. И даже уже составляем нелинейные алгоритмы — с ветвлением — в которых используются логические выражения, которые принимают значения true или false.

Значения логического типа:

TRUE

FALSE

В примере ниже, на экран выводится результат логического выражения:

1
2
3
4
5
6
var 
  A: integer;
begin
  A := 5;
  write(A > 0); {Будет выведено True}
end.

Для записи результата логического выражения используется специальная логическая переменная, которая имеет в Паскале тип boolean и может также принимать одно из двух значений — true или false.

Посмотрим, как работает та же самая задача с логической переменной:

1
2
3
4
5
6
7
8
var 
  A: integer;
  b: boolean;
begin
  A := 5;
  b:=A > 0; 
  write(b);{Будет выведено True}
end.

Пример: Рассмотрим пример работы с типом boolean в pascal:

1
2
3
4
5
6
var a:boolean;
begin
a:=true;
if a=true then writeln ('истина')
  else writeln('ложь');
end.

Для создания сложных условий используются специальные логические операции: and, or, not и xor.

Задача Boolean 1. Дано целое положительное число. Проверить истинность высказывания: «оно является четным»

[Название файла: task_bool1.pas]

Рассмотрим пример с использованием логической операции XOR:

Пример: Запросить два целых: X, Y. Проверить истинность высказывания: «Только одно из чисел X и Y является нечетным»

1
2
3
4
5
6
7
8
9
10
11
program Boolean;
var
  x,y: integer;
  c :boolean;
 
begin
  write('Введите X, Y: ');
  read(x,y);
  c := (Odd(x)) xor (Odd(y)); 
  writeln('Только одна из переменных X и Y имеет нечетное значение - ', c); 
  end.

Рассмотрим еще одно решение задачи в Паскале с использованием логической переменной:

Задача Boolean 2. Даны три целых числа: A, B, C. Проверить истинность высказывания: «B находится между числами A и C».

[Название файла: task_bool2.pas]

Рассмотрим решение более сложной задачи с переменной логического типа:

Пример: Дано трехзначное число. Проверить истинность высказывания: «Все цифры данного числа различны».

Показать решение:

1
2
3
4
5
6
7
8
9
10
11
12
13
const a=348;
var
   d_n, s_n, e_n: integer;
   flag:boolean;
begin
flag:=false;
s_n:=a div 100;
d_n:=((a mod 100)div 10);
e_n:=a mod 10;
if (s_n<>d_n) and (d_n<>e_n) and (e_n<>s_n) then 
   flag:=true;
writeln(flag);
end.

Здесь каждый разряд получается путем использования операций деления нацело и взятия остатка от деления: s_n — это цифра сотого разряда, d_n — цифра десятого разряда, e_n — единицы.

Задача Boolean 3. Дано целое N > 0. С помощью операций деления нацело и взятия остатка от деления определить, имеется ли в записи числа N цифра «2». Если имеется, то вывести TRUE, если нет — вывести FALSE.

[Название файла: task_bool3.pas]

Задача Boolean 4. Дано целое положительное. Проверить истинность высказывания: «Данное число является нечетным трехзначным».

Минимальное и максимальное число в Паскале.

[Название файла: task_bool4.pas]

При организации поиска минимального или максимального числа среди ряда чисел всегда на помощь приходит старенький «бабушкин» алгоритм:

  • Представим ситуацию, что мы жарим пирожки, и уже нажарили целую большую горку; теперь надо выбрать из них самый большой, т.е. в нашем случае максимальный.
  • Берем верхний пирожок, т.е. первый, и говорим, что он пока самый большой и откладываем его в сторону.
  • Затем берем второй и сравниваем с самым большим, если этот второй пирожок оказывается больше — откладываем его на место «бывшего самого большого» и говорим, что теперь он самый большой.
  • Берем следующий и повторяем действия. Так осуществляем данную процедуру со всеми пирожками.

Иногда в качестве первоначального максимума назначается самое малое возможное число (в зависимости от контекста задачи). А в качестве минимума — напротив, самое большое возможное число. Например, если сказано, что необходимо найти максимальное / минимальное среди положительных чисел, меньших 1000, то:

или

max:=integer.MinValue;; // минимальное среди типа Integer
min:=integer.MaxValue;; // максимальное среди типа Integer

PascalABC.NET:

Можно использовать стандартные функции max() и min():

print(max(2,8)); // 8
print(min(2,8)); // 2

Рассмотрим теперь решение задачи на Паскале нахождения максимального числа:

Пример: В компьютер вводятся 10 чисел. Выводить максимальное из введенных чисел.

Показать решение:

Pascal PascalABC.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
var i, chislo, max:integer;
begin
// первое введенное число 
//сразу определяем как максимальное:
readln(max); 
for i:=2 to 10 do
begin
  readln (chislo);
  if chislo > max then 
    max:= chislo
end;
writeln(max)
end.
1
2
3
4
5
6
7
8
9
10
11
12
begin
// первое введенное число 
//сразу определяем как максимальное:
var maximum:=readInteger(); 
for var i:=2 to 10 do
begin
  var chislo:=readInteger();
  // используем стандартную функцию max():
  maximum := max(chislo,maximum); 
end;
writeln(maximum)
end.

Аналогично осуществляется поиск минимального из чисел.

Для лучшего понимания темы поиска максимального или минимального значения предлагаем посмотреть видео урок:

Задача Max 1. В танцевальном клубе участвуют 10 представительниц женского пола. Определите, может ли самая старшая из них быть матерью самой младшей (в таком случае разница в возрасте может составлять не менее 17 лет).

[Название файла: task_max1.pas]

Задача Max 2. Найти минимальное и максимальное из 10 введенных чисел и вывести сумму их порядковых номеров.

[Название файла: task_max2.pas]

Задача Max 3. Средняя продолжительность жизни лабораторной мыши – 10 лет. Найдите максимальный показатель продолжительности жизни у пяти белых мышей и у пяти мышей-альбиносов. У каких мышей показатель уровня жизни выше?

[Название файла: task_max3.pas]

Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:

проверь себя

  • Теория
  • Практика
  • Домашнее задание

  • Поиск min/max
  • Поиск представителя
  • Поиск делителей
  • Подсчёт количества делителей

IПоиск min/max

Рассмотрим самую популярную задачу на обработку чисел: поиск минимума или максимума среди них.

Алгоритм поиска

Чтобы найти наибольшее число среди введённых, необходимо создать специальную переменную, которая будет хранить в себе максимальное число. Данная переменная изначально должна быть заведомо меньше всех исследуемых чисел.

Затем необходимо перебрать все исследуемые числа и сравнить с созданной переменной. Если очередное число меньше того, которое записано на текущий момент, как максимальное, идём дальше. Если же очередное число окажется больше, то записываем его в переменную, хранящую максимальное число, то есть обновляем эту переменную.

Таким образом, к концу исследования мы будем иметь в специальной переменной максимальное число среди исследованных.

С наименьшим числом ситуация аналогичная. Необходимо лишь заменить знак в сравнении: если очередное число оказалось меньше минимального, кладём его в переменную, хранящую минимальное число. Специальная переменная для минимума изначально должна быть заведомо больше всех исследуемых чисел. 

Начальное значение специальной переменной

Начальное значение специальной переменной крайне важно. От него зависит, будет ли программа работать корректно.

Если мы ищем максимальный вес или длину, то можно положить в качестве первоначального значения максимального числа нуль, так как любой вес или длина всегда положительны, поэтому специальная переменная гарантированно обновится, а значит программа будет работать корректно.

Если мы знаем область поиска, то ситуация будет проще. Например, если необходимо найти минимальное число от 1 до 100 включительно, которое удовлетворяет специальным условиям, можно просто положить в качестве начального значения специальной переменной, отвечающей за максимальное число, 101. В таком случае, специальная переменная также гарантированно обновится, а значит и эта программа будет работать корректно.

Но иногда не ясно, в каком интервале будут исследуемые числа, поэтому невозможно выбрать число, которое заведомо больше или меньше всех исследуемых. В таком случае в качестве первоначального значения обоих специальных переменных кладут первое исследуемое число. Тогда либо специальная переменная обновится и в конце будет содержать необходимое значение, либо не обновится. Второй случай будет означать, что необходимым числом было самое первое число.

Код

Давайте же наконец рассмотрим код, определяющий максимальное число среди пяти введённых с клавиатуры:

int max = 0; // создаём специальную переменную
int x = 0; // создаём скользящую переменную
for (int i = 0; i < 5; i++){ // создаём цикл for
    if (scanf("%d", &x) != 1){ // безопасное считывание
        printf("Reading error.n"); // уведомляем пользователя об ошибке чтения в случае некорректного считывания
        return -1; // возвращаем -1, если не установлен другой код ошибки чтения
    }
    if (x > max){ // если очередное число больше специальной переменной
        max = x; // обновляем значение специальной переменной
    } 
}

Как можно заметить, в коде выше значение специальной переменной изначально задаётся нулём.

Однако если все введённые числа будут строго отрицательными, специальная переменная так и останется нулём, вместо того, чтобы принять значение наибольшего из введённых чисел. Как уже было сказано, необходимо положить в специальную переменную значение самого первого введённого числа. Но как определить это в программе?

Заметим, что все введённые числа индексируются циклом for, поэтому каждому очередному введённому числу будет соответствовать уникальное значение индекса цикла for. Самому первому числу соответствует нулевое значение индекса, поэтому в цикл for необходимо добавить соответствующее условие (8-10 строки):

int max = 0; // создаём специальную переменную
int x = 0; // создаём скользящую переменную
for (int i = 0; i < 5; i++){ // создаём цикл for
    if (scanf("%d", &x) != 1){ // безопасное считывание
        printf("Reading error.n"); // уведомляем пользователя об ошибке чтения в случае некорректного считывания
        return -1; // возвращаем -1, если не установлен другой код ошибки чтения
    }
    if (i == 0){ // если значение индекса 0 - это самое первое введённое число 
        max = x; // обновляем значение специальной переменной
    }
    if (x > max){ // если очередное число больше специальной переменной
        max = x; // обновляем значение специальной переменной
    } 
}
Оптимизация

Можно заметить, что обновление специальной переменной происходит или когда индекс равен нулю или когда найдено очередное число, которое больше, чем сама специальная переменная. В целях оптимизации и экономии кода можно объединить эти два условия в один цикл if (8-10 строки):

int max = 0; // создаём специальную переменную
int x = 0; // создаём скользящую переменную
for (int i = 0; i < 5; i++){ // создаём цикл for
    if (scanf("%d", &x) != 1){ // безопасное считывание
        printf("Reading error.n"); // уведомляем пользователя об ошибке чтения в случае некорректного считывания
        return -1; // возвращаем -1, если не установлен другой код ошибки чтения
    }
    if (x > max || i == 0){ // если очередное число больше специальной переменной или значение индекса равно нулю
        max = x; // обновляем значение специальной переменной
    } 
}

IIПоиск представителя

Иногда необходимо найти не максимальное или минимальное число, а представителя этого минимального или максимального числа.

Постановка задачи

Допустим, необходимо найти на каком натуральном числе от 0 до 10 включительно принимает наименьшее значение функция:

3x^3-x^2+2x-4

В данной задаче очевидно будет неверным предоставить в качестве ответа само наименьшее значение. Для того, чтобы выписать то число, на котором принимается наименьшее значение, конечно, можно составить обратную функцию и по значению вычислить аргумент, но бывают ситуации, когда сделать это не только затруднительно, но и невозможно. Так как же быть в таких случаях?

Ответ прост: давайте будем хранить представителя максимального или минимального значения в отдельной отведённой исключительно для этого самого представителя переменной.

Код

Напишем код, ищущий наименьшее значение функции из примера выше среди натуральных чисел от 0 до 10 включительно:

int min = 0; // создаём специальную переменную
int y = 0; // создаём переменную для хранения значений функции
for (int x = 0; x <= 10; x++){ // создаём цикл for
    y = 3 * x * x * x - x * x + 2 * x - 4; // вычисляем значение функции
    if (y < min || x == 0){ // если очередное число больше специальной переменной или значение индекса равно нулю
        min = y; // обновляем значение специальной переменной
    } 
}

Добавим в код хранение переменной представителя: числа, для которого значение функции на нём будет минимальным (3 и 8 строки):

int min = 0; // создаём специальную переменную
int y = 0; // создаём переменную для хранения значений функции
int x_min = 0; // создаём переменную для хранения представителя
for (int x = 0; x <= 10; x++){ // создаём цикл for
    y = 3 * x * x * x - x * x + 2 * x - 4; // вычисляем значение функции
    if (y < min || x == 0){ // если очередное число больше специальной переменной или значение индекса равно нулю
        min = y; // обновляем значение специальной переменной
        x_min = x; // обновляем значение переменной представителя
    }
}

Теперь после выполнения данного кода мы будем иметь не только самое минимальное значение функции, но и точку, на которой это минимальное значение достигается. Это гораздо легче, чем пытаться выполнить вычисление точки после с помощью обратной функции либо другими методами, имея только лишь минимальное значение.

IIIПоиск делителей

Рассмотрим очень популярную среди математиков задачу: поиск делителей числа.

Делителем числа называется число, которое делит исходное число без остатка.

Для этого сначала разберёмся, как найти все делители некоторого числа. Самая логичная мысль: пробежаться по всем числам от 1 до этого числа включительно и проверить, делят ли они это число. И это один из самых распространённых способов. Реализуем его:

int y = 80; // создаём переменную для хранения числа, делители которого нужно выписать на экран
for (int d = 1; d <= y; d++){ // создаём цикл for
    if (y % d == 0){ // если очередной кандидат на делитель делит исследуемое число без остатка
        printf("%d ", d); // выписываем значение очередного кандидата на экран и ставим после пробел
    }
}

После запуска данного кода в командной строке будут выписаны все делители числа 80 через пробел:

1 2 4 5 8 10 16 20 40 80
Process returned 0 (0x0)   execution time : 0.008 s
Press any key to continue.

IVПодсчёт количества делителей

Довольно часто требуется посчитать количество делителей.

Как мы уже прошли на прошлом уроке, для этого необходимо создать специальною переменную счётчик и увеличивать её значение на единицу всякий раз, когда очередной кандидат оказался делителем.

Реализуем это в коде:

int y = 80; // создаём переменную для хранения числа, количество делителей которого нужно посчитать
int count = 0; // создаём переменную-счётчик для хранения количества делителей
for (int d = 1; d <= y; d++){ // создаём цикл for
    if (y % d == 0){ // если очередной кандидат на делитель делит исследуемое число без остатка
        count++; // увеличиваем значение переменной-счётчика на единицу
    }
}
printf("%dn", count); // выписываем значение переменной-счётчика на экран

После запуска данного кода в командной строке будет выписано количество всех делителей числа 80:

10

Process returned 0 (0x0)   execution time : 0.008 s
Press any key to continue.

1Задача №1.

Среди пяти введённых пользователем целых чисел найти максимальное число.

Решение:
#include <stdio.h> // подключаем библиотеку stdio.h
#include <stdlib.h> // подключаем библиотеку stdlib.h

int main() { //создаём главную функцию
    int max = 0; // создаём специальную переменную
    int x = 0; // создаём скользящую переменную
    printf("Print 5 numbers: "); // приглашаем пользователя на ввод
    for (int i = 0; i < 5; i++){ // создаём цикл for
        if (scanf("%d", &x) != 1){ // безопасное считывание
            printf("Reading error.n"); // уведомляем пользователя об ошибке чтения в случае некорректного считывания
            return -1; // возвращаем -1, если не установлен другой код ошибки чтения
        }
        if (x > max || i == 0){ // если очередное число больше специальной переменной или значение индекса равно нулю
            max = x; // обновляем значение специальной переменной
        }
    }
    printf("%dn", max);// выводим ответ на экран
    return 0; // завершаем с кодом 0 - успех
}
Пример работы программы:
Print 5 numbers: 12 17 28 -10 20
28

Process returned 0 (0x0)   execution time : 9.299 s
Press any key to continue.

2Задача №2.

Пользователь вводит с клавиатуры три целых числа. Необходимо найти и выписать все делители для каждого пользовательского числа.

Решение:
#include <stdio.h> // подключаем библиотеку stdio.h
#include <stdlib.h> // подключаем библиотеку stdlib.h

int main() { //создаём главную функцию
    int x = 0; // создаём скользящую переменную
    printf("Print 3 numbers: "); // приглашаем пользователя на ввод
    for (int i = 0; i < 3; i++){ // создаём цикл for
        if (scanf("%d", &x) != 1){ // безопасное считывание
            printf("Reading error.n"); // уведомляем пользователя об ошибке чтения в случае некорректного считывания
            return -1; // возвращаем -1, если не установлен другой код ошибки чтения
        }
        for (int d = 1; d <= x; d++){ // создаём цикл for
            if (x % d == 0){ // если очередной кандидат на делитель делит исследуемое число без остатка
                printf("%d ", d); // выписываем значение очередного кандидата на экран и ставим после пробел
            }
        }
        printf("n"); // сносим курсор на строку вниз для красивого вывода
    }
    return 0; // завершаем с кодом 0 - успех
}
Пример работы программы:
Print 3 numbers: 10 24 30
1 2 5 10
1 2 3 4 6 8 12 24
1 2 3 5 6 10 15 30

Process returned 0 (0x0)   execution time : 3.695 s
Press any key to continue.

1Задача №1.

Среди семи введённых пользователем целых чисел найти минимальное чётное число.

Решение:

#include <stdio.h> // подключаем библиотеку stdio.h
#include <stdlib.h> // подключаем библиотеку stdlib.h

int main() { //создаём главную функцию
    int min = 0; // создаём специальную переменную
    int x = 0; // создаём скользящую переменную
    printf("Print 7 numbers: "); // приглашаем пользователя на ввод
    for (int i = 0; i < 7; i++){ // создаём цикл for
        if (scanf("%d", &x) != 1){ // безопасное считывание
            printf("Reading error.n"); // уведомляем пользователя об ошибке чтения в случае некорректного считывания
            return -1; // возвращаем -1, если не установлен другой код ошибки чтения
        }
        if ((x < min && x % 2 == 0) || i == 0){ // если очередное число меньше специальной переменной и чётное или значение индекса равно нулю
            min = x; // обновляем значение специальной переменной
        }
    }
    printf("min: %dn", min);// выводим ответ на экран
    return 0; // завершаем с кодом 0 - успех
}
Пример работы программы:
Print 7 numbers: 12 10 -23 11 90 87 56
min: 10

Process returned 0 (0x0)   execution time : 10.131 s
Press any key to continue.

Обратите внимание, что скобки внутри условия главного цикла if необязательно, но всегда лучше перестраховаться, потому что в дальнейшем нас ждут огромные программы длинной до 1000 строк, искать оплошности с условиями в циклах if среди которых будет очень затруднительно.

2Задача №2.

Среди восьми введённых пользователем целых чисел найти число, имеющее максимальную последнюю цифру.

Не забудьте, что для вычисления последней цифры числа достаточно просто взять остаток от модуля этого числа при делении на 10.

Необходимо брать остаток при делении на 10 именно от модуля, потому что, например, остаток от числа -22 будет равен -2, а не просто 2.

Решение:

#include <stdio.h> // подключаем библиотеку stdio.h
#include <stdlib.h> // подключаем библиотеку stdlib.h
#include <math.h> // подключаем библиотеку math.h

int main() { //создаём главную функцию
    int x = 0; // создаём скользящую переменную
    int max = 0; // создаём специальную переменную
    int x_max = 0; // создаём переменную для хранения представителя
    printf("Print 8 numbers: "); // приглашаем пользователя на ввод
    for (int i = 0; i < 8; i++){ // создаём цикл for
        if (scanf("%d", &x) != 1){ // безопасное считывание
            printf("Reading error.n"); // уведомляем пользователя об ошибке чтения в случае некорректного считывания
            return -1; // возвращаем -1, если не установлен другой код ошибки чтения
        }
        if (abs(x % 10) > max){ // если последняя цифра очередного числа больше специальной переменной
            max = x % 10; // обновляем значение специальной переменной
            x_max = x; // сохраняем представителя
        }
    }
    printf("The max last digit has %dn", x_max);// выводим ответ на экран
    return 0; // завершаем с кодом 0 - успех
}
Пример работы программы:
Print 8 numbers: 12 21 -13 89 36 77 24 55
The max last digit has 89

Process returned 0 (0x0)   execution time : 15.177 s
Press any key to continue.

Обратите внимание, что скобки внутри условия главного цикла if необязательно, но всегда лучше перестраховаться, потому что в дальнейшем нас ждут огромные программы длинной до 1000 строк, искать оплошности с условиями в циклах if среди которых будет очень затруднительно.

3Задача №3.

Среди десяти введённых пользователем целых чисел найти число, имеющее максимальную сумму двух последних цифр, и саму максимальную сумму. В случае если число состоит менее чем из двух цифр, считать недостающие цифры нулями.

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

Решение:

#include <stdio.h> // подключаем библиотеку stdio.h
#include <stdlib.h> // подключаем библиотеку stdlib.h
#include <math.h> // подключаем библиотеку math.h

int main() { //создаём главную функцию
    int x = 0; // создаём скользящую переменную
    int max = 0; // создаём специальную переменную
    int x_max = 0; // создаём переменную для хранения представителя
    int sum = 0; // создаём переменную для хранения суммы двух последних цифр
    printf("Print 10 numbers: "); // приглашаем пользователя на ввод
    for (int i = 0; i < 10; i++){ // создаём цикл for
        if (scanf("%d", &x) != 1){ // безопасное считывание
            printf("Reading error.n"); // уведомляем пользователя об ошибке чтения в случае некорректного считывания
            return -1; // возвращаем -1, если не установлен другой код ошибки чтения
        }
        sum = (abs(x) / 10) % 10 + abs(x) % 10; // вычисляем сумму двух последних цифр
        if (sum > max){ // если сумма последних двух цифр очередного числа больше специальной переменной
            max = sum; // обновляем значение специальной переменной
            x_max = x; // сохраняем представителя
        }
    }
    printf("The max sum of 2 last digits (%d) has %dn", max, x_max);// выводим ответ на экран
    return 0; // завершаем с кодом 0 - успех
}
Пример работы программы:
Print 10 numbers: 123 239 1299 1289 -1329 23 0 8 1 23
The max sum of 2 last digits (18) has 1299

Process returned 0 (0x0)   execution time : 19.372 s
Press any key to continue.

Обратите внимание, что скобки внутри условия главного цикла if необязательно, но всегда лучше перестраховаться, потому что в дальнейшем нас ждут огромные программы длинной до 1000 строк, искать оплошности с условиями в циклах if среди которых будет очень затруднительно.

4Задача №4.

Выписать на экран отчёт о том, какие делители есть у чисел от 1 до 30 включительно.

Решение:

#include <stdio.h> // подключаем библиотеку stdio.h
#include <stdlib.h> // подключаем библиотеку stdlib.h

int main() { //создаём главную функцию
    for (int x = 1; x <= 30; x++){ // создаём цикл for
        printf("%d: ", x); // выписываем число, делители которого будут выписаны после
        for (int d = 1; d <= x; d++){ // создаём цикл for по кандидатам в делители
            if (x % d == 0){ // проверяем, является ли кандидат дилителем
                printf("%d ", d); // выписываем, если является
            }
        }
        printf("n"); // сносим курсор на строку вниз для красивого вывода
    }
    return 0; // завершаем с кодом 0 - успех
}
Пример работы программы:
1: 1
2: 1 2
3: 1 3
4: 1 2 4
5: 1 5
6: 1 2 3 6
7: 1 7
8: 1 2 4 8
9: 1 3 9
10: 1 2 5 10
11: 1 11
12: 1 2 3 4 6 12
13: 1 13
14: 1 2 7 14
15: 1 3 5 15
16: 1 2 4 8 16
17: 1 17
18: 1 2 3 6 9 18
19: 1 19
20: 1 2 4 5 10 20
21: 1 3 7 21
22: 1 2 11 22
23: 1 23
24: 1 2 3 4 6 8 12 24
25: 1 5 25
26: 1 2 13 26
27: 1 3 9 27
28: 1 2 4 7 14 28
29: 1 29
30: 1 2 3 5 6 10 15 30

Process returned 0 (0x0)   execution time : 0.015 s
Press any key to continue.

5Задача №5.

Найти, какое число от 1 до 100 имеет больше всего различных натуральных делителей, кроме единицы и самого себя. Выписать на экран это число, всех его делителей и их количество.

Решение:

#include <stdio.h> // подключаем библиотеку stdio.h
#include <stdlib.h> // подключаем библиотеку stdlib.h

int main() { //создаём главную функцию
    int count = 0; // создаём переменную-счётчик для подсчёта делителей
    int max_count = 0; // создаём специальную переменную
    int x_max = 0; // создаём переменную для хранения представителя
    for (int x = 1; x <= 100; x++){ // создаём цикл for
        count = 0; // обнуляем счётчик делителей, чтобы считать каждый раз снова с нуля
        for (int d = 2; d < x; d++){ // создаём цикл for по кандидатам в делители
            if (x % d == 0){ // проверяем, является ли кандидат делителем
                count++; // увеличиваем переменную-счётчик
            }
        }
        if (count > max_count){ // если количество делителей для очередного числа больше, чем значение специальной переменной
            max_count = count; // обновляем специальную переменную
            x_max = x; // запоминаем представителя
        }
    }
    printf("The number has the most divisors (%d) is %d: ", max_count, x_max); // выписываем ответ
    for (int d = 2; d < x_max; d++){ // создаём цикл for, так как необходимо также выписать делителей
        if (x_max % d == 0){ // проверяем, является ли кандидат делителем
            printf("%d ", d);
        }
    }
    return 0; // завершаем с кодом 0 - успех
}
Пример работы программы:
The number has the most divisors (10) is 60: 2 3 4 5 6 10 12 15 20 30
Process returned 0 (0x0)   execution time : 0.005 s
Press any key to continue.

6Задача №6.

Найти максимальный натуральный делитель введённого пользователем числа, кроме самого числа. Выписать этот делитель на экран.

Решение:

#include <stdio.h> // подключаем библиотеку stdio.h
#include <stdlib.h> // подключаем библиотеку stdlib.h

int main() { //создаём главную функцию
    int x = 0; // создаём пользовательскую переменную
    int d_max = 0; // создаём переменную для хранения максимального делителя
    printf("Print 1 number: "); // приглашаем пользователя на ввод
    if (scanf("%d", &x) != 1){ // безопасное считывание
        printf("Reading error.n"); // уведомляем пользователя об ошибке чтения в случае некорректного считывания
        return -1; // возвращаем -1, если не установлен другой код ошибки чтения
    }
    for (int d = 1; d < x; d++){ // создаём цикл for
        if (x % d == 0){ // проверяем, является ли кандидат делителем
            d_max = d; // сохраняем делитель
        }
    }
    printf("The most divisor which %d has is %dт", x, d_max); // выписываем ответ
    return 0; // завершаем с кодом 0 - успех
}
Пример работы программы:
Print 1 number: 1245
The most divisor which 1245 has is 415

Process returned 0 (0x0)   execution time : 1.392 s
Press any key to continue.

7Задача №7.

Найти, какое число среди чисел от 1 до 999 имеет самый большой максимальный натуральный делитель, отличный от самого числа, и оканчивающийся той же цифрой, что и само число. Выписать это число и его делитель, удовлетворяющий условию задачи.

Решение:

#include <stdio.h> // подключаем библиотеку stdio.h
#include <stdlib.h> // подключаем библиотеку stdlib.h

int main() { //создаём главную функцию
    int d_max = 0; // создаём переменную для хранения максимального делителя
    int max_d_max = 0;  // создаём специальную переменную
    int x_max = 0; // создаём переменную для хранения представителя
    for (int x = 1; x < 1000; x++){ // создаём цикл for
        d_max = 0; // обнуляем переменную для хранения максимального делителя
        for (int d = 1; d < x; d++){ // создаём цикл for
            if (x % d == 0 && x % 10 == d % 10){ // проверяем, является ли кандидат делителем и имеет ли он ту же последнюю цифру
                d_max = d; // сохраняем делитель
            }
        }
        if (d_max > max_d_max){ // если максимальный делитель очередного числа больше значения специальной переменной
            max_d_max = d_max; // обновляем специальную переменную
            x_max = x; // запоминаем представителя
        }
    }
    printf("%d has the most divisor that has the same last number (%d)n", x_max, max_d_max); // выписываем ответ
    return 0; // завершаем с кодом 0 - успех
}
Пример работы программы:
980 has the most divisor that has the same last number (490)

Process returned 0 (0x0)   execution time : 0.006 s
Press any key to continue.

8Задача №8*.

Пользователь вводит 10 натуральных чисел. Необходимо вывести такую сумму двух чисел среди введённых пользователем, что данная сумма максимальна и кратна трём. То есть среди 10 введённых чисел надо выбрать такие два, чтобы их сумма была максимально возможной и при этом была кратна трём.

Перед тем, как сверяться с решением, проверьте Вашу программу на числах: 12 9 10 18 40 21 11 18 50 15. Для них ответ — 90.

Решение:

Для достижения наилучшего результата и доступа ко всему курсу необходимо приобрести курс еженедельных индивидуальных или групповых занятий с преподавателем в режиме онлайн. Наши преподаватели обучат Вас создавать уникальные алгоритмы и самостоятельно реализовывать их в программном коде с соблюдением стандартов оформления.

Для записи на бесплатный пробный урок просто заполните форму ниже:

Понравилась статья? Поделить с друзьями:
  • Как найти прошедшее время в предложении
  • Как найти гитару в фл студио 20
  • Как найти условия карты сбербанк
  • Как грамотно составить сторителлинг
  • Как найти площадь поверхности пятый класс