Форум программистов, компьютерный форум CyberForum.ru

Найти минимальное и максимальное - C++

Восстановить пароль Регистрация
 
Rakot568
15 / 15 / 1
Регистрация: 11.04.2013
Сообщений: 170
31.10.2013, 17:23     Найти минимальное и максимальное #1
Найти минимальное и максимальное из трех введенных чисел a, b, c.

Написал:

C++
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
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
void main(void)
{
  float a,b,c;
  clrscr();
  printf("Введите a,b,c\n");
  scanf("%f %f %f", &a, &b, &c);
  if ((a>b)|| (a>c))
    printf("Максимальное -  %f\n",a);
  else
    if ((b>a)|| (b>c))
      printf("Максимальное -  %f\n",b);
    else
      if ((c>a)|| (c>b));
    printf("Максимальное -  %f\n",c);
  if ((a<b)|| (a<c))
    printf("Минимальное -  %f\n",a);
  else
    if ((b<a)|| (b<c))
      printf("Минимальное -  %f\n",b);
    else
      if ((c<a)|| (c<b))
      printf("Минимальное -  %f\n",c);
  getch();
}
Работает неправильно. Почему, и что исправить?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
oxotnik
 Аватар для oxotnik
1584 / 1061 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
31.10.2013, 17:24     Найти минимальное и максимальное #2
положить в массив, отсортировать и взять первое и последнее
3 строки кода
Rakot568
15 / 15 / 1
Регистрация: 11.04.2013
Сообщений: 170
31.10.2013, 17:31  [ТС]     Найти минимальное и максимальное #3
oxotnik, еще не проходили, надо через ветвление.
Ввожу 1,2,3. Выводит, что максимальное 2 и максимальное 3.
Scythian
 Аватар для Scythian
58 / 58 / 8
Регистрация: 01.01.2010
Сообщений: 222
31.10.2013, 17:34     Найти минимальное и максимальное #4
Замените || на &&
И условий слишком много.Достаточно два if'а:
C++
1
2
if((a>b)&&(a>c))
if((b>a)&&(b>c))
Если оба ложны - то наибольший - c
Zig_Stas
8 / 8 / 1
Регистрация: 26.10.2013
Сообщений: 55
31.10.2013, 17:34     Найти минимальное и максимальное #5
Потому что бред. Если у тебя а>б и например, б>с, то они оба максимальные. Это не оптимальный вариант решения. Проще и правда считывать в массив и сортировать его, либо тупо проверкой условием искать.
Rakot568
15 / 15 / 1
Регистрация: 11.04.2013
Сообщений: 170
31.10.2013, 17:38  [ТС]     Найти минимальное и максимальное #6
А в чем разница между || и &&?
Scythian
 Аватар для Scythian
58 / 58 / 8
Регистрация: 01.01.2010
Сообщений: 222
31.10.2013, 17:39     Найти минимальное и максимальное #7
Цитата Сообщение от Rakot568 Посмотреть сообщение
А в чем разница между || и &&?
|| логическое ИЛИ
&& логическое И
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 743
Записей в блоге: 1
31.10.2013, 17:40     Найти минимальное и максимальное #8
Цитата Сообщение от Rakot568 Посмотреть сообщение
А в чем разница между || и &&?
|| или
&& и
Rakot568
15 / 15 / 1
Регистрация: 11.04.2013
Сообщений: 170
31.10.2013, 17:44  [ТС]     Найти минимальное и максимальное #9
А можно в этой задаче применить min и max из stdlib.h?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2013, 17:49     Найти минимальное и максимальное
Еще ссылки по теме:

Найти максимальное и минимальное значение C++
C++ Найти максимальное и минимальное значение элементов массива
C++ Не знаю как найти максимальное и минимальное

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

Или воспользуйтесь поиском по форуму:
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 743
Записей в блоге: 1
31.10.2013, 17:49     Найти минимальное и максимальное #10
Вот два простых способа:
1.if else
C++
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
#include <iostream>
#include <locale>
#include <math.h>
 
using namespace std;
 
 
 
int main()
{
    std::locale::global(std::locale(""));
    double x,y,z,max3,min3;
    cout<<"Введите x,y,z "<<endl;
    cin>>x>>y>>z;
    if((x>y)&&(x>z)) max3=x;
    else if((y>x)&&(y>z)) max3=y;
    else max3=z;
    
    if((x<y)&&(x<z)) min3=x;
    else if((y<x)&&(y<z)) min3=y;
    else min3=z;
    
 
    cout<<"Проверка "<<endl;
    cout<<" max(x,y,z)= "<<max3<<endl;
    cout<<" min(x,y,z)= "<<min3<<endl;
    system("pause");
    retrun 0;
}
2.Тернарная операция (http://cppstudio.com/uchebniki/yazyk...-vybora-v-s/):
C++
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
#include <iostream>
#include <locale>
#include <math.h>
 
using namespace std;
 
 
 
int main()
{
    std::locale::global(std::locale(""));
    double x,y,z,max3,min3;
    cout<<"Введите x,y,z "<<endl;
    cin>>x>>y>>z;
    max3= x>y ? x : y;
    max3= z>max3 ? z : max3;
 
    min3= x<y ? x : y;
    min3= z<min3 ? z : min3;
 
    cout<<"Проверка "<<endl;
    cout<<" max(x,y,z)= "<<max3<<endl;
    cout<<" min(x,y,z)= "<<min3<<endl;
    system("pause");
        retrun 0;
}
Yandex
Объявления
31.10.2013, 17:49     Найти минимальное и максимальное
Ответ Создать тему
Опции темы

Текущее время: 07:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru