Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> задача, как решить на С? 
:(
    Опции темы
Leere
Дата 20.9.2005, 11:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Если сумма трех попарно различных действительных чисел x, y, z меньше единицы, то наименьшее из них заменить полусуммой двух других; в противном случае заменить меньшее из x и y полусуммой двух оставшихся.

И как это можно записать, я че- то даже в смысл въехать не могу...
Помогите, пожалуйста.
  Вверх
nikitao
Дата 20.9.2005, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 3
Всего: 26



Фрагмент кода функция в которую передаешь 3 указателя на эти числа.
Код

void XOXOXO(int 8x,int *y,int *z)
{
  if ((x==y)||(x==z)||(y==z))
  {
     printf("\aОшибка:найдено два или более  одинаклвых числа числа\n");
     return;
  }
   if(x+y+z<1)
   {
     if ((x<y)&&(x<z))
     {
        x=(y+z)/2;
     }
     else
     {
        if ((y<z)&&(y<z))
     {
        y=(x+z)/2;
     }
     else
      {
        z=(z+y)/2;
      }
      }
      }
     else
     {
       if (x<y)
         x=(y+z)/2;
       else
        y=(x+z)/2
      }  


Я где-то навярняка ошибся,ибо из галовы печатал,и с указателями сам разберись(я в C++ ссылками пользуюсь).Главное понять что "попарно разные числа x,y,z Это просто 3 разных числа(т е нет 2 одинаковых) а дальше все легко. smile Да не удивляйся насчет такого противного if,он нужен на всякий случай.Да навярника имеется ввиду не целые x,y,z,тогда просто замени тип int на тип float или double. smile

ЗЫ А ричем здесь системное програмирование и WinAPI.Тебе надо было писать или в центр помощи или в С++ общие вопросы smile (имхо)

Это сообщение отредактировал(а) nikitao - 20.9.2005, 13:00


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
Dreamer_0x01
Дата 20.9.2005, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


Профиль
Группа: Участник
Сообщений: 780
Регистрация: 14.4.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 12



nikitao

после выполнения команды if(x+y+z<1) в твоем коде будут весьма непредсказуемые варианты поведения. А точнее, это условие никгда не будет выполняться. Почему??? ;) Потому что это адреса. А их сумма всегда будет больше единицы. Но кроме того, с переменными на выходе функции ничего не сделается. Опять же по этой причине. Поэтому, переписываем код, обращая внимание на то, где мы используем указатель, а где саму переменную...И немного упрощаем для конкретной задачи.

Можно так:

Код

void XOXOXO(int *x,int *y,int *z)
{
int *min;
min=x;
if((*min)>(*y))min=y;
if((*x) +(*y)+(*z)<1)
{
if((*min)>(*z))min=z;
}
*min=((*x)+(*y)+(*z)-(*min))/2;
}



Это раз.

Leere. Твоя тема -
smile

Это два....

Это сообщение отредактировал(а) Dreamer_0x01 - 20.9.2005, 14:13


--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
nikitao
Дата 20.9.2005, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 3
Всего: 26



Цитата
после выполнения команды if(x+y+z<1) в твоем коде будут весьма непредсказуемые варианты поведения. А точнее, это условие никгда не будет выполняться. Почему??? ;) Потому что это адреса

Да знаю я это,я так писал для скорости,не думая что я использую.Пусть сам думает smile .А вообще ты конечно же прав и код у тебя получше.

Цитата
Leere. Твоя тема -


Это два....

Это я согласен. Leere,smile

Это сообщение отредактировал(а) nikitao - 20.9.2005, 14:57


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
Leere
Дата 20.9.2005, 20:15 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ну вообще-то я -девушка. И это многое объясняет)))
Каюсь smile , что офф топ, в след. раз буду умнее!
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0675 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.