Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.65/429: Рейтинг темы: голосов - 429, средняя оценка - 4.65
3 / 3 / 0
Регистрация: 23.04.2009
Сообщений: 39

Алгоритм сравнения трех чисел

29.04.2009, 22:30. Показов 84772. Ответов 38
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Голову сломал уже. Подскажите оптимальный алгоритм сравнения трех чисел. Необходимо учесть все варианты, в том числе равенство. У меня получается не 10 сравнений, а это много.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.04.2009, 22:30
Ответы с готовыми решениями:

Ветвление. Если сумма трех попарно различных действительных чисел x, y, z меньше 1, то наименьшее из этих трех чисел заменить полусуммой двух других
Если сумма трех попарно различных действительных чисел x, y, z меньше 1, то наименьшее из этих трех чисел заменить полусуммой двух других;...

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

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

38
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
30.04.2009, 10:36
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Puporev Посмотреть сообщение
Pascal
1
2
3
mx:=a;
if b>mx then mx:=b;
if c>mx then mx:=c;
у меня просто вопрос для общего развития а разве нельзя без mx тем более что нам надо вывести как я понимаю название , а не значение переменной
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
30.04.2009, 10:40
Написать команду определения максимального из 3-х
Вот задание. А у чисел нет названия, есть значения. Это если они записаны как запись с полями имя и значение, тогда есть название.
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
30.04.2009, 10:42
Pascal
1
2
3
4
5
6
  if ((a>b) and (a>c))  then
    writeln ('a больше b и c');
  if ((a<b) and (b>c)) then
    writeln ('b больше a и c');
  if ((a<c) and (b<c)) then
    writeln ('c больше a и b');
но вот как у него должно выводить ответ, как ты выведешь ответ в таком виде , что бы говорилось какая переменная больше каких других
0
 Аватар для EnzoMatrix
121 / 121 / 14
Регистрация: 14.03.2009
Сообщений: 462
30.04.2009, 10:46
Цитата Сообщение от mamedovvms Посмотреть сообщение
но вот как у него должно выводить ответ, как ты выведешь ответ в таком виде , что бы говорилось какая переменная больше каких других
нужно найти большее из трех чисел, а не из трех переменных
0
3 / 3 / 0
Регистрация: 23.04.2009
Сообщений: 39
30.04.2009, 11:12  [ТС]
Нужно помнить еще что, некоторые или все значения могут быть равны.
mamedovvms, да, ответ нашел (его рассмотрели в теме). Спасибо всем кто откликнулся!
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
30.04.2009, 11:23
некоторые или все значения могут быть равны.
Тогда максимум любое из этих чисел, в моем коде это формально будет первое число.
0
knost
16.08.2009, 12:03
Цитата Сообщение от Vourhey Посмотреть сообщение
У меня вот такая байда получилась:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  writeln('Input a,b,c:');
  readln(a,b,c);
  if(a=b)then
    if(b=c)then writeln('a=b=c')
    else if(b>c)then writeln('a,b - max, c - min')
    else writeln('c - max, a,b - min')
  else if(b=c)then
    if(a>c)then writeln('a - max, b,c - min')
    else writeln('c,b - max, a - min')
  else if(a>b)then
    if(c>a)then writeln('C - max, B - min')
    else if(c>b)then writeln('A - max, B - min')
    else writeln('A - max, C - min')
  else
    if(c>b)then writeln('C - max, A - min')
    else if(c>a)then writeln('B - max, A - min')
    else writeln('B - max, C - min');
Вообщем-то, максимум здесь пять if'ов проходит, не больше. И без переменных. Опять же, не ручаюсь, что это самый быстрый вариант, хотя, мне он кажется таковым )
Это не правильный вариант. Здесь не предусмотрен вариант "a,c-max, b-min".
Нужно вот-так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if(a=b)then
    if(b=c)then writeln('a=b=c')
    else
 if(a=c) then 
      if(a>b) then writeln('a,c-max, b-min')
      else writeln('b-max, a,c-min')
    else if(b>c)then writeln('a,b - max, c - min')
    else writeln('c - max, a,b - min')
  else if(b=c)then
    if(a>c)then writeln('a - max, b,c - min')
    else writeln('c,b - max, a - min')
  else if(a>b)then
    if(c>a)then writeln('C - max, B - min')
    else if(c>b)then writeln('A - max, B - min')
    else writeln('A - max, C - min')
  else
    if(c>b)then writeln('C - max, A - min')
    else if(c>a)then writeln('B - max, A - min')
    else writeln('B - max, C - min')
3 / 3 / 0
Регистрация: 23.04.2009
Сообщений: 39
19.08.2009, 17:50  [ТС]
Вот что у меня получилось тогда.:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var a,b,c,mx1,mx2: real;
begin
writeln('Введите три целых числа a,b,c:');
  readln(a,b,c);
if ((a=b) and (b=c)) then
   WriteLN ('Все введенные значения равны')
else
   begin
     mx1:=(a+b+abs(a-b))/2;
     mx2:=(mx1+c+abs(mx1-c))/2;
     Write ('Максимальное число из введенных ',mx2: 0: 0);
     if ((a=b) and (a=mx2)) then
       WriteLN ('причем a и b равны');
     if ((b=c) and (b=mx2)) then
       WriteLN ('причем b и c равны');
     if ((a=c) and (a=mx2)) then
       WriteLN ('причем a и c равны');
   end;
Readln;
end.
Оценка - 5.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
19.08.2009, 17:54
var a,b,c,mx1,mx2: real;
begin
writeln('Введите три целых числа a,b,c:');
Не знаю насколько красиво для целых чисел использовать вещественный тип. Но, хозян - барин.
0
3 / 3 / 0
Регистрация: 23.04.2009
Сообщений: 39
19.08.2009, 18:05  [ТС]
Цитата Сообщение от Puporev Посмотреть сообщение
Не знаю насколько красиво для целых чисел использовать вещественный тип. Но, хозян - барин.
Если использовать целый тип, то вот здесь:
Pascal
1
2
mx1:=(a+b+abs(a-b))/2;
mx2:=(mx1+c+abs(mx1-c))/2;
выскакивает ошибка 26 "Несовместимые типы"
Допустим а=3, b=4. a+b получается 7. При делении на 2 уже не целый тип.
Хотя можно было и так
Pascal
1
2
var mx1,mx2: real;
a, b, c: integer;
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
19.08.2009, 18:17
Числа a,b,c объявить целыми, а вспомогательные mx1,mx2 - вещественными.
0
3 / 3 / 0
Регистрация: 23.04.2009
Сообщений: 39
19.08.2009, 18:25  [ТС]
А в целом Ваш алгоритм (который я здесь использовал) красив и компактен. За что большое спасибо!
0
TenebrosiUltori
07.01.2013, 13:10
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
program z1;
uses crt;
var a,b,c:integer;
begin
  WriteLn('Сравнение 3-х чисел');
  Write('Введите 3 числа через пробел и нажмите <ENTER> ->  ');
  Read(a,b,c);
  if a>b then
     begin
       if b>c then
          begin
            Write(a,'>',b,'>',c);
          end
       Else
         begin
           Write(a,'>',b,'<',c);
         end
     end
  Else
    Begin
      if b<c then
         begin
           Write(a,'<',b,'>',c);
         end
      Else
        begin
          Write(a,'<',b,'<',c);
        end
    end;
end.
Вот, 5 минут убил, Но всё равно без учета равенства =((
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,361
07.01.2013, 16:22
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Возможно не лучший вариант...
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
program m;
uses crt;
var a,b,c,max:Integer;
begin
ClrScr;
Writeln('Введите a,b и c:');
Read(a,b,c);
if (a<>b) and (a<>c) and (b<>c) then
begin
if (a>b) and (a>c) then Writeln('max=a') else
if (b>a) and (b>c) then Writeln('max=b') else
if (c>b) and (c>a) then Writeln('max=c');
end else
if (a=b) and (a<>c) then
begin
if a>c then Writeln('max=a') else 
if a<c then Writeln('max=c');
end else
if (b=c) and (a<>b) then
begin
if b>a then Writeln('max=b') else 
if b<a then Writeln('max=a');
end else
if (a=c) and (a<>b) then
begin
if a>b then Writeln('max=a') else 
if a<b then Writeln('max=b');
end else
if (a=b) and (a=c) then Writeln('a=b=c');
Readln;
end.
Добавлено через 6 минут
Т.е вот с учетом равенств.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
program m;
uses crt;
var a,b,c,max:Integer;
begin
ClrScr;
Writeln('Введите a,b и c:');
Read(a,b,c);
if (a<>b) and (a<>c) and (b<>c) then
begin
if (a>b) and (a>c) then Writeln('a>b;a>c') else
if (b>a) and (b>c) then Writeln('b>a;b>c') else
if (c>b) and (c>a) then Writeln('c>a;c>b');
end else
if (a=b) and (a<>c) then
begin
Writeln('a=b;');
if a>c then Writeln('a>c') else 
if a<c then Writeln('a<c');
end else
if (b=c) and (a<>b) then
begin
Writeln('b=c;');
if b>a then Writeln('b>a') else 
if b<a then Writeln('b<a');
end else
if (a=c) and (a<>b) then
begin
Writeln('a=c;');
if a>b then Writeln('a>b') else 
if a<b then Writeln('a<b');
end else
if (a=b) and (a=c) then Writeln('a=b=c');
Readln;
end.
0
4 / 4 / 2
Регистрация: 26.08.2015
Сообщений: 59
26.08.2015, 14:04
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var
a,b,c,min1,min2,min3:real;
begin
write('введите а= ');
read(a);
write('введите b= ');
read(b);
write('введите c= ');
read(c);
if a<b then 
min1:=a
else 
min1:=b;
if b<c then 
min2:=b
else
min2:=c;
if min1<min2 then
min3:=min1 
else
min3:=min2 ;
writeln(min3);
 
end.
0
02.09.2015, 01:42

Не по теме:

enduromen, мало того что некрофилией занимаетесь. дак ещё и зачем-то минимум ищите...

0
0 / 0 / 0
Регистрация: 18.10.2015
Сообщений: 3
10.09.2016, 13:46
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var
    a1, a2, a3, max: integer;
 
begin
    write ('Введите три числа: ');
    readln (a1, a2, a3);
 
    if a1 >= a2 then
        max := a1
    else
        max := a2;
 
    if a3 > max then
        max := a3;
 
    writeln ('Максимальное из них: ', max);
 
readln
end.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
10.09.2016, 14:03
Цитата Сообщение от Baly Посмотреть сообщение
алгоритм сравнения трех чисел. Необходимо учесть все варианты, в том числе равенство.
И при чем тут выпендреж с максимумом?
0
10.09.2016, 15:00

Не по теме:

Как же ужасно я раньше писал код...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.09.2016, 15:00
Помогаю со студенческими работами здесь

Составить алгоритм нахождения суммы большего и меньшего из трёх чисел
Составить алгоритм нахождения суммы большего и меньшего из трёх чисел

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

Найти наибольший общий делитель трех заданных натуральных чисел, используя алгоритм Евклида
№107Найти наибольший общий делитель трех заданных натуральных чисел, используя алгоритм Евклида и учитывая, что НОД(а, Ь, с) = НОД(НОД(а,...

Если сумма трех попарно различных действительных чисел X Y Z меньше единицы, то наименьшее из этих трех чисел заменить полусуммой двух других
Если сумма трех попарно различных действительных чисел X Y Z меньше единицы, то наименьшее из этих трех чисел заменить полусуммой двух...

Сосчитайте, сколько шестизначных чисел имеют одинаковые суммы трех первых и трех последних цифр
Нужны программы с 3-мя разными циклами: while, for и repeat. И желательно с объяснением.):declare: Добавлено через 3 минуты Знаю,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
39
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru