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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2014, 19:11   #1
Pug_from_Mordor
Пользователь
 
Аватар для Pug_from_Mordor
 
Регистрация: 09.11.2014
Сообщений: 40
Сообщение

В общем есть задача:
"Даны три числа. Найти сумму двух наибольших из них."
Решать задачу можно только с помощью структур выбора if и if/else. Никаких switch или структур повторения. В общем задачу-то я решил. Вот решение:
Код:
/*Даны три числа. Найти сумму двух наибольших из них.*/
#include<stdio.h>

main()
{
   int a, b, c;

   printf("Enter 3 numbers:\n");
   scanf("%d%d%d", &a, &b, &c);

	if (a>b && a>c && b>c)
		printf("%d\n", a+b);
	else
		if (a>b && a>c && c>b)
		   printf("%d\n", a+c);
	   else
		   if (b>a && b>c && a>c)
		      printf("%d\n", b+a);
	      else
		      if (b>a && b>c && c>a)
		         printf("%d\n", b+c);
	         else
		         if (c>a && c>b && a>b)
		            printf("%d\n", c+a);
	            else
		            printf("%d\n", c+b);

	return 0;
}
Только я хочу узнать о других вариантах решения задачи. Просто если по моему способу сравнивать не 3, а, скажем, 20 чисел, то выйдет огромная программа, в которой если и не запутаешься при написании, то всё равно она получится строк эдак на 500-1000. Можно ли решить эту задачу другим более удобным способом используя только if и if/else?

Что-то сайт всю табуляцию в коде исковеркал, но надеюсь понятно.

Последний раз редактировалось Stilet; 09.11.2014 в 19:47.
Pug_from_Mordor вне форума Ответить с цитированием
Старый 09.11.2014, 19:45   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Код:
if (a > c && b > c)
    printf("%d\n", a + b);
else if (a > b && c > b)
    printf("%d\n", a + c);
else
    printf("%d\n", b + c);
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 09.11.2014, 19:49   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

сунуть числа в дин. массив и отсортировать его (пузырём, наример). затем передать этот массив функции находжения суммы первых эн элементов массива.

з.ы. а истчо в сишнике есть такая шляпа, называется «функции с переменным числом параметров». можно написать такую, тогда массив не понадобится.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 09.11.2014, 22:30   #4
Pug_from_Mordor
Пользователь
 
Аватар для Pug_from_Mordor
 
Регистрация: 09.11.2014
Сообщений: 40
По умолчанию

Как оказывается всё просто. А я как всегда перемудрил на пустом месте. Спасибо, BDA, теперь буду знать как это можно использовать в моих программах.
Pug_from_Mordor вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу решение Roxi Rox Microsoft Office Excel 5 12.06.2012 07:44
Альтернативное решение Carnagik PHP 5 18.04.2011 01:58
Решение задачи на языке Pascal FishOK Помощь студентам 4 23.11.2010 14:34
Решение матрицы на языке C++ Евгениальный Помощь студентам 2 04.11.2010 18:26