Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2008, 21:15   #1
Amen
Заблокирован
Форумчанин
 
Регистрация: 22.01.2008
Сообщений: 121
По умолчанию Наибольшее из трёх чисел в С++

Здравствуйте. Очень нужна ваша помощь!
Подскажите, пожалуйста, как правильно указать два выражения сразу после условия.
Такой вариант выдаёт ошибку.
if(a>b)
{a=max1, b=max2};
else if(a<b) {b=max1 a=max2};
P.S. И самый ли удобный алгоритм для решения этой задачи я выбрал?
Заранее спасибо
Amen вне форума Ответить с цитированием
Старый 27.02.2008, 21:23   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

if(a>b)
{a=max1; b=max2;}
else if(a<b) {b=max1; a=max2};
Только я даже не понял, что этот код должен делать (в сравнении с названием темы, да и вообще)
B_N вне форума Ответить с цитированием
Старый 27.02.2008, 21:32   #3
Amen
Заблокирован
Форумчанин
 
Регистрация: 22.01.2008
Сообщений: 121
По умолчанию

Ну полностью программа выглядит так:
#include<iostream.h>
#include<math>
int main()
{
int a,b,c,max1,max2,mid,min,sum;
cout<<"a="<<endl;
cin>>a;
cout<<"b="<<endl;
cin>>b;
cout<<"c="<<endl;
cin>>c;

if(a>b) {a=max1; b=max2;}
else if(a<b) {b=max1; a=max2;}

if(max2>c) c=min;
else if(max2<c) c=mid;

sum==mid+max1;
cout<<sum;
cin>>sum;
return 0;
}

и должна выводить сумму двух наибольших чисел из трёх.
Но ответ выдаёт такой:
84565464...
Amen вне форума Ответить с цитированием
Старый 27.02.2008, 21:42   #4
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Я боюсь, что тут всё неправильно. Начиная с того, что Вы присваиваете значения задом-наперед (почему "b=max1", а не "max1=b" ?) и кончая вот этим: "sum==mid+max1;" зачем тут сравнение???
B_N вне форума Ответить с цитированием
Старый 27.02.2008, 21:52   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

думаю, что пропущено сравнение с третьей переменной
вот краткое описание функции MyMax, которая вернёт наибольшее из трёх чисел A,B,C:
Код:
если A>B тогда
  если C>A тогда MyMax = C иначе MyMax = A
иначе
  если C>B тогда MyMax = C иначе MyMax = B

ПРИНОШУ свои извинения, пока писал ответ, выяснилось, что тут разгорелась целая дисскусия... и я чувствую, что я выпал из темы!
и зачем тут сумма, и что чему присваивается ;-(((

Последний раз редактировалось Serge_Bliznykov; 27.02.2008 в 21:55. Причина: Похоже я не в теме...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.02.2008, 21:55   #6
Amen
Заблокирован
Форумчанин
 
Регистрация: 22.01.2008
Сообщений: 121
По умолчанию

Тогда,видимо есть ещё ошибки, т.к. вариант

if(a>b) (max1=a; max2=b;}
else if(a<b) {max1=b; max2=a;}

if(c<max2) min=c;
else if(c>max2) mid=c;

sum=mid+max1;
cout<<sum;
cin>>sum;
return 0;
}
выдал огромный список ошибок
Amen вне форума Ответить с цитированием
Старый 27.02.2008, 22:12   #7
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Ошибок там полно.
Сравнивайте и проверяйте.

Код:
#include <iostream.h>

int main()
{
	int a;
	int b;
	int c;
	int min;
	int max;
	int mid;

	cout << "a="; cin >> a;
	cout << "b="; cin >> b;
	cout << "c="; cin >> c;

	if(a > c){
		if(a > b) {
			max = a;
			if(b > c) {
				mid = b;
				min = c;
			}
			else {
				mid = c;
				min = b;
			}
		}
		else{
			max = b;
			mid = a; 
			min = c;
		}
	}  
	else {	// c > a
		if(c > b){
			max = c;
			if(b > a){
				mid = b;
				min = a;
			}
			else {
				mid = a;
				min = b;
			}
		}
		else {
			max = b;
			mid = c;
			min = a;
		}
	}

	cout << "max: " << max << "," << " mid: " << mid << "," << " min: " << min << endl;
	cout << "max + mid = " << (max + mid) << endl;
	return 0;
}
B_N вне форума Ответить с цитированием
Старый 27.02.2008, 22:54   #8
still_alive
Great Code Monkey
Форумчанин
 
Аватар для still_alive
 
Регистрация: 09.08.2007
Сообщений: 533
По умолчанию

Не понял, что вы тут обсуждаете...
А наибольшее - вот:

max = a;
if (b > max) max = b;
if (c > max) max = c;
still_alive вне форума Ответить с цитированием
Старый 27.02.2008, 23:00   #9
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

2 still_alive
Это и так понятно, автору еще среднее нужно
B_N вне форума Ответить с цитированием
Старый 29.02.2008, 23:51   #10
FreeJaile
 
Регистрация: 29.02.2008
Сообщений: 7
По умолчанию

эм...вот ещё вариант, чтобы много if-else не писать (немного переделала вариант B_N ):

Код:
#include <iostream.h>

int main()
{
	int a, b, c, min = 0, max = 0, mid = 0;

	cout << "a="; cin >> a;
	cout << "b="; cin >> b;
	cout << "c="; cin >> c;

	if ((a > c) && (a > b) && (b > c)) {
		max = a;
		mid = b;
		min = c;
	}
	if ((a < b) && (a < c) && (b > c)){
		max = b;
		mid = c;
		min = a;
	}
	if ((a < b) && (a < c) && (b < c)){
		max = c;
		mid = b;
		min = a;
	}
	if ((a < c) && (b < c) && (a > b)){
		max = c;
		mid = a;
		min = b;
	}

	cout << "max: " << max << "," << " mid: " << mid << "," << " min: " << min << endl;
	cout << "max + mid = " << (max + mid) << endl;
	return 0;
}
только я не учитывала случаи, если вдруг числа равны)
FreeJaile вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа считывающая пять целых чисел и определяющая, печатающая наибольшее и наименьшее число из них Syber Общие вопросы C/C++ 3 30.06.2008 22:39
Из двух натуральных чисел, составить наибольшее число, сохраняя первоначальную последовательность.Паскаль Omedus Помощь студентам 8 19.11.2007 22:02
вычисление суммы чисел, кратных 3 из последовательности, состоящей из 10 чисел, заранее заданных Белка Помощь студентам 3 27.10.2007 11:53
Наибольшее и наименьшее значения функции mcblack Помощь студентам 9 26.04.2007 10:53