Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на C / C++


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Гаряка Асмик
Статус: Бакалавр
Рейтинг: 2662
∙ повысить рейтинг »
lamed
Статус: Практикант
Рейтинг: 2145
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 1815
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / C/C++

Номер выпуска:1498
Дата выхода:10.03.2010, 00:00
Администратор рассылки:Verena, Профессионал
Подписчиков / экспертов:640 / 193
Вопросов / ответов:1 / 1
IRC-канал по теме:#C

Вопрос № 177047: Уважаемые эксперты: вводятся 4 числа если произведение первых трех равно четвертому оставить без изменения, а иначе найти такое разложение четвертого числа на три множителя чтобы они были максимально близки друг к другу. Например: 4, 3, 2, 24 а не 12...



Вопрос № 177047:

Уважаемые эксперты: вводятся 4 числа если произведение первых трех равно четвертому оставить без изменения, а иначе найти такое разложение четвертого числа на три множителя чтобы они были максимально близки друг к другу. Например: 4, 3, 2, 24 а не 12, 2, 1, 24 или 2, 2, 2. 8 а не 1. 1. 8. 8 и чтобы располагались множители по убывающей.Требуется решить на Си без применения массивов. Перебором.Заранее благодарю.

Отправлен: 04.03.2010, 04:49
Вопрос задал: Анатолий11
Всего ответов: 1
Страница вопроса »


Отвечает Verena, Профессионал :
Здравствуйте, Анатолий11.
Полагаю, что примерно так:
Код:
int main ()
{
unsigned int a, b, c, d;
scanf ("%i", &a); //ввод данных
scanf ("%i", &b);
scanf ("%i", &c);
scanf ("%i", &d);
if (d==a*b*c) { //если выполнено начальное условие
printf ("d = a*b*c"); //выводим сообщение и заканчиваем программу
return 0;
}
int i, j, k;
bool f = true; //флаг отсутствия множителей
for (i = 1; i<=d/2; i++) { //первый множитель
if (d%i!=0) continue; //если не множитель - пропускаем
for (j=i; j<=d/2; j++) { //второй множитель, больший чем первый
if (d%j!=0) continue; //если не множитель - пропускаем
for (k=j; k<=d/2; k++) { //третий мн ожитель, больший чем второй
if (d%k!=0) continue; //если не множитель, пропускаем
if (i*j*k==d) { //если получаем число
if (f) //если множителей ещё не было
{a = i; b = j; c = k; f = false;} //сохраняем текущие и выставляем флаг
else //иначе проверяем, какие множители между собой ближе
if (abs(a-b)>abs(i-j) || abs(b-c)>abs(j-k))
{a = i; b = j; c = k;} //если новые оказались ближе, сохраняем их
}
}
}
}
if (f) printf ("\nResult: %i*1*1=%i", d, d); //если множителей нет, то вариант 1*1*само_число
else printf ("\nResult1: %i*%i*%i=%i", c, b, a, d); //иначе выводим полученный результат
getch (); //ожидание реакции пользователя
return 0;
}

Если что-то не понятно или не так, пишите в минифорум. Для работы надо подключить библиотеки conio.h и stdlib.h.
Удачи!
-----
Эта история - не для истории, понимаешь?

Ответ отправил: Verena, Профессионал
Ответ отправлен: 09.03.2010, 00:01
Номер ответа: 259998

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 259998 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.14 от 03.03.2010

    В избранное