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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2010, 16:42   #1
ALESHA03TH
Новичок
Джуниор
 
Регистрация: 02.10.2010
Сообщений: 3
Вопрос Нахождения большего и меньшего числа в C++

Упражнение из книги по C++, которое вызвало затруднение:
"Напишите программу, которая вводит с клавиатуры три целых числа и печатает сумму, среднее значение, произведение, меньшее и большее из этих чисел. Диалог на экране должен выглядеть следующем образом:
Введите три различных целых числа: 13 27 14
Сумма равна 54
Среднее значение равно 18
Произведение равно 4914
Наименьшее равно 13
Наибольшее равно 27"

Собственно непонятно как найти большее и меньшее..пока опыт программирования всего неделя)

Мой вариант кода:

Код:
#include <iostream> 
#include <conio.h> 
using namespace std; 

int main() 
{ 
    int x;             
    int y;           
    int z;           
    int sum;        
    int result;    
    int max;      
    int min;     
    int middle; 
    
    cout << "Enter three integers: "; 
    cin >> x >> y >> z; 
    
    sum = x + y + z; 
    result = x * y * z; 
    middle = (x + y + z) / 3;
    
   if ( x > z > y ) 
   max = x; 
   if ( y > x > z ) 
   max = y; 
   if ( z > x > y ) 
   max = z; 
   
   if ( x < y < z ) 
   min = x; 
   if ( y < x < z ) 
   min = y; 
   if ( z < y < x ) 
   min = z; 
   
   if (x==y==z) 
   cout << "Numbers are equal";
    
    
    
    cout << "\nSum is " << sum << "\nResult is " << result << "\nThe middle is " 
    << middle << "\nMin integer is " << min << "\nMax integer is " << max << endl; 
    
    getch(); 
    return 0; 
}
Прошу помочь дополнить или переделать где нужно код. Заранее спасибо!

Последний раз редактировалось Stilet; 02.10.2010 в 17:14.
ALESHA03TH вне форума Ответить с цитированием
Старый 02.10.2010, 17:56   #2
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Для этого задания удобней использовать массивы.
Пример на нахождение минимального и максимального из трех чисел
Код:
#include <iostream>
int main(){
	int mas[3];
	int min,max;
	
	for(int i=0;i<3;i++){
		std::cout << "enter the number " << std::endl;
		std::cin >> mas[i];
	}
	
	min=mas[0];
	
	for(int i=0;i<3;i++){
		if(min>mas[i]) min=mas[i];
	}
	
	max=mas[0];
	
	for(int i=0;i<3;i++){
		if(max<mas[i]) max=mas[i];
	}
	
	
	std::cout << "maximum is " << max << std::endl;
	std::cout << "minimum  is " << min << std::endl;
	return 0;
}
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Старый 02.10.2010, 19:00   #3
ALESHA03TH
Новичок
Джуниор
 
Регистрация: 02.10.2010
Сообщений: 3
По умолчанию

до массивов я еще не дошел..) Так что я нефига непонял. Там написано только с операторами if..
ALESHA03TH вне форума Ответить с цитированием
Старый 02.10.2010, 21:48   #4
jec
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 42
По умолчанию

ну вот написал
немного больше чем должно быть, просто было лень искать тетрадку с готовой схемой, а сейчас по быстрому написал такое, ну и еще немного добавил прикольного




Код:
#include <iostream> 
#include <string>

using namespace std; 

int main() 
{ 
    int x, y, z;
    int sum = 0;
    int result = 0;
    int max = 0, min = 0;
    float middle = 0;
    
    string end;

	start:
	    
    cout << "Enter three integers: " << endl;
    cin >> x;
    cin >> y;
    cin >> z;
    
    sum = x + y + z;
    result = x * y * z;
    middle = (x + y + z) / 3;
    
    
    if(x > y && x > z)
    {
    	max = x;
    	if(z < y)
    		min = z;
    }
    
    if(x > y && x < z)
    {
    	max = z;
    	if(y < z)
    		min = y;
    }
    
    if(x < y && y > z)
    {
    	max = y;
    	if(x < z)
    		min = x;
    	else
    		min = z;
    }	
    
    if(x < y && y < z)
    {
    	max = z;
    	min = x;
	}
    	

	if(x==y==z) 
		cout << "Numbers are equal";
    
       
    cout << 
    "\nSum is " << sum << 
    "\nResult is " << result << 
    "\nThe middle is " << middle << 
    "\nMin integer is " << min << 
    "\nMax integer is " << max << 
    endl; 
    
    cout << endl;
    
    asd:
    cin >> end;
    if(end == "retry")
    	goto start;
    if(end == "exit")
    	goto en;
    if(end == "help")
    {
    	cout << "\"retry\"" << endl;
    	cout << "\"exit\"" << endl << endl;
    	goto asd;
    }
    else
    {
    	cout << "Error, enter \"help\"." << endl;
    	goto asd;
    }
    en:
    return 0;
}
еще тебе совет дам, все время надо обнулять переменные, иначе будут лаги.
x, y, z не обнуляются так как они вводятся

будут баги пиши исправлю (в лс)
jec вне форума Ответить с цитированием
Старый 02.10.2010, 22:09   #5
ALESHA03TH
Новичок
Джуниор
 
Регистрация: 02.10.2010
Сообщений: 3
По умолчанию

Спасибо большое за такой широкий ответ!!)) Все отлично работает)
Я вот только немного непонял смысл этой части кода:

Код:
asd:
    cin >> end;
    if(end == "retry")
    	goto start;
    if(end == "exit")
    	goto en;
    if(end == "help")
    {
    	cout << "\"retry\"" << endl;
    	cout << "\"exit\"" << endl << endl;
    	goto asd;
    }
    else
    {
    	cout << "Error, enter \"help\"." << endl;
    	goto asd;
    }
    en:

Последний раз редактировалось Stilet; 02.10.2010 в 23:28.
ALESHA03TH вне форума Ответить с цитированием
Старый 02.10.2010, 23:55   #6
jec
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 42
По умолчанию

а смысл такой, когда доходишь до этой строчки (когда уже ввел 3 числа у тя выскакивает все значения и тогда появляешся на этой строчке) у тя спрашивают что делать: повторить или же выйти, если ввел что то другое то пишет ошибку и можно написать команду помощи, тогда выскакивают все команды доступные, если выход то выходит если же повторить то начинается заново

полезная штука

если что спрашивай, помогу чем смогу
jec вне форума Ответить с цитированием
Старый 03.10.2010, 09:08   #7
coinkrsk
пыжашийся нуб
Пользователь
 
Регистрация: 19.06.2010
Сообщений: 93
По умолчанию

Ты зачем человека похабщине всякой учишь?
Может это мое личное мнение, но зачем вообще рассказвать человеку с недельным опытом программирования про оператор goto?

Можно ведь сделать примитивную менюшку проще и понятнее:

Код:
#include <iostream>
using namespace std;

bool menu( )
{
	char choice;

	do 
	{
		cout << "retry Y/N?\n";
		cin >> choice;
		fflush(stdin);
		choice = toupper(choice);
		
		if	   ( choice == 'Y' ) return 1;
		else if ( choice == 'N' ) return 0;

		cout << "wrong simbol\n";
	} while ( true );

}

int main()
{
	do
	{
		//Вставляй сюда свой код
	} while ( menu( ) );

	return 0;
}
Из подводных камней для программы y, Y а так же любая строка начинающая с этих букв - одно и тоже. Но тут строки на сравнивать, а человеку в STL наверное еще рановато лезть.
coinkrsk вне форума Ответить с цитированием
Старый 03.10.2010, 13:57   #8
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

посоветую автору темы дойти до массивов
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 04.10.2010, 10:17   #9
Chris D
Пользователь
 
Регистрация: 14.01.2010
Сообщений: 31
По умолчанию

Код:
inline int min(int a, int b) { 
	return (a < b) ? a : b; 
}
inline int min(int a, int b, int c) { 
	return (min(a, b) < c) ? min(a, b) : c;
}
void MyFunction(int FirstValue, int SecondValue, int ThirdValue) {
	
	int Average;
	int Multiplication;
	
	Average = (FirstValue * SecondValue * ThirdValue) / 3;
	Multiplication = (FirstValue * SecondValue * ThirdValue);
	
	cout << "Total is : " << (FirstValue + SecondValue + ThirdValue) << endl;
	cout << "The Average is: "<< Average << endl;
	cout << "Multiplication is: "<< Total << endl;
	cout << "Minimum is: "<< min(FirstValue, SecondValue, ThirdValue) << endl;	
	
}
int main() 
{
	int First, Second, Third;

	cout << "Введите три различных целых числа: ";
	cin >> First >> Second >> Third;
	
	MyFunction(First, Second, Third);
	
	return 0;
}

Последний раз редактировалось Stilet; 25.12.2010 в 12:44.
Chris D вне форума Ответить с цитированием
Старый 04.10.2010, 11:00   #10
Alexcomeback
Пользователь
 
Регистрация: 03.04.2009
Сообщений: 59
По умолчанию

за goto в приличных местах на костре сжигают.
а вообще я бы так сравнивал:

Код:
if (a > b) {
              if (a > c) printf("Наибольшее %d, Наименьшее %d", a, (b<c?b:c)); 
                     else printf("Наибольшее %d, Наименьшее %d", c, b);}
          } 
          else {
              if (b > c) printf("Наибольшее %d Наименьшее %d", b, (a<c?a:c)); 
                     else printf("Наибольшее %d Наименьшее %d", c, a); 
          }
Alexcomeback вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Округление до ближайшего большего/меньшего kta87 Помощь студентам 13 28.09.2010 12:17
вывод 2ух чисел в мемо с выравниванием меньшего к правому краю большего nuevegramodelamor Помощь студентам 2 27.05.2010 16:28
В массиве найти кол-во нечетных чисел расположенных после второго большего числа Desvi Помощь студентам 0 29.04.2010 17:12
Округление числа до ближайшего большего/меньшего из ряда Foxx Microsoft Office Excel 4 24.07.2009 09:50
Поиск числа, большего заданного pirozho4ek Паскаль, Turbo Pascal, PascalABC.NET 5 21.05.2007 21:39