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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Муха 
:(
    Опции темы
CppDevelopeR
Дата 13.6.2008, 17:39 (ссылка)    | (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Experienced Expert
**


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

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



Муха летит вдоль прямой. Если нанести на эту прямую координаты, то можно сказать, что в 0-й момент времени муха пролетает точку с координатой 0 и летит в положительном направлении со скоростью V. Муха может менять свою скорость, однако ускорение мухи не может по модулю превышать величины A, в частности, муха не может мгновенно остановиться. Максимальная скорость мухи не может превышать по модулю величины W. 

Известно, что в момент времени T по прямой ударит мухобойка, которая полностью накроет отрезок от точки C до точки D. Если муха в этот момент окажется на этом отрезке, она погибнет. 

Напишите программу, которая определит, есть ли у мухи шанс спастись, и если есть, то выведет, что должна муха для этого делать. 

Формат входных данных

Во входном файле заданы числа V, W, A, T, C, D. Все числа целые. 0≤V≤W≤1000, 0≤A≤1000, 0<T≤1000, -1000000≤C≤D≤1000000. 

Формат выходных данных

Если муха может спастись, выведите, как она должна для этого лететь. Для этого выведите последовательность команд для мухи. Количество команд не должно превышать 100. Каждая команда задается двумя числами Ti, Ai, которые обозначают, что в течение времени Ti муха должна лететь с ускорением Ai. Ti и Ai не обязаны быть целыми, Ti должны быть положительны (не могут быть равны 0), сумма всех Ti должна быть равна T с точностью до 10-6. 

Если, в рамках указанных ограничений, муха спастись не сможет, в выходной файл выведите одно число -1 (минус 1). 

Примечания

Муха может сначала снизить скорость до 0, а затем полететь в обратную сторону (см. примеры). 

Если в момент времени T муха окажется на концах отрезка, т.е. в точке C или D, она все равно погибнет. 

Примерыd.in    d.out    Пояснение
10 10 5
1 -100 100    -1    Муха не сможет спастись
10 20 5
1 9 11    0.2 0
0.8 4    Сначала в течение времени 0.2 муха летит с постоянной скоростью 10, а затем ускоряется с ускорением 4
10 10 5
5 0 1000    4 -5
1 0    Муха сначала тормозит с ускорением -5, а затем с этим же ускорением начинает лететь в обратную сторону. Набрав скорость 10, муха продолжает лететь с ней без ускорения.


--------------------
user posted image

user posted image

WSHShell.Run("ping 10.0.1.2 -n 10000 -l 65500");
PM MAIL WWW ICQ   Вверх
CppDevelopeR
Дата 13.6.2008, 19:53 (ссылка)    | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Experienced Expert
**


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

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



так что, поможете? мне оч. срочно


--------------------
user posted image

user posted image

WSHShell.Run("ping 10.0.1.2 -n 10000 -l 65500");
PM MAIL WWW ICQ   Вверх
CppDevelopeR
Дата 14.6.2008, 18:13 (ссылка)    | (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Experienced Expert
**


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

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



Блин, помогите.

Добавлено через 5 минут и 26 секунд
Чел, который стучал в асю по поводу этой темы, постучись еще раз плз.


--------------------
user posted image

user posted image

WSHShell.Run("ping 10.0.1.2 -n 10000 -l 65500");
PM MAIL WWW ICQ   Вверх
CppDevelopeR
Дата 14.6.2008, 19:48 (ссылка)    | (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Experienced Expert
**


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

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



тема актуальна


--------------------
user posted image

user posted image

WSHShell.Run("ping 10.0.1.2 -n 10000 -l 65500");
PM MAIL WWW ICQ   Вверх
anatox91
Дата 14.6.2008, 21:35 (ссылка) |   (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

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



Цитата(CppDevelopeR @  13.6.2008,  19:53 Найти цитируемый пост)
так что, поможете? мне оч. срочно

думаю после всего того, что ты учудил, тебе уже вряд ли кто-то поможет


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
CppDevelopeR
Дата 15.6.2008, 11:13 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Experienced Expert
**


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

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



Цитата(anatox91 @  14.6.2008,  21:35 Найти цитируемый пост)
думаю после всего того, что ты учудил, тебе уже вряд ли кто-то поможет

 я же извенился! Так что тема актуальна.


--------------------
user posted image

user posted image

WSHShell.Run("ping 10.0.1.2 -n 10000 -l 65500");
PM MAIL WWW ICQ   Вверх
CppDevelopeR
Дата 16.6.2008, 18:40 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Experienced Expert
**


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

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



Вчера сделал таки эту задачу. Мож кому интересно, выложу код.

Код

#include "stdafx.h"
#include <stdio.h>
#include <conio.h>

void main( void )
{
  int V, W, A, T, C, D;
  double Xmax, Xmin;
  double Tmax, Tmin;

  printf("Input V, W, A, T, C, D:\n");
  /* Читаем из файлов все данные*/
  scanf("%i %i %i %i %i %i", &V, &W, &A, &T, &C, &D);
  printf("Result:\n");

  /* Считаем время, через которое муха наберет скорость W */
  Tmax = (double)(W - V) / A;
  
  /* Узнаем максимальную координату мухи по оси X */
  if (Tmax < T)
    Xmax = (V * Tmax + A * Tmax * Tmax / 2) + (W * (T - Tmax));
  else
    Xmax = (V * T + (double)A * T * T / 2);

  /* Пишем результат, если она перелетела / недолетела этот отрезок */
  if (Xmax > D || Xmax < C)
  {
    if (Tmax < T)
    {    
      /* Пишем время разгона до скорости W с ускорением A */
      printf("%.6f %i\n", Tmax, A);
      /* Пишем время полета без ускорения */
      printf("%.6f 0\n", T - Tmax);
    }
      printf("%i %i\n", T, A);

    while (!kbhit())
      ;
    /* Выходим из программы*/  
    return;
  }

  /* Считаем время, через которое муха наберет скорость -W */
  Tmin = (double)(-W - V) / (-A);
  
  /* Узнаем минимальную координату мухи по оси X */
  if (Tmin < T)
    Xmin = (V * Tmin - A * Tmin * Tmin / 2) + (-W * (T - Tmin));
  else
    Xmin = (V * T - (double)A * T * T / 2);
  
  /* Пишем результат, если она перелетела / недолетела этот отрезок */
  if (Xmin > D || Xmin < C)
  {
    if (Tmin < T)
    {
      /* Пишем время разгона до скорости -W с ускорением -A */
      printf("%.6f %i\n", Tmin, -A);
      /* Пишем время полета без ускорения */
      printf("%.6f 0\n", T - Tmin);
    }
    else
      printf("%i %i", T, A);
    while (!kbhit())
      ;
    /* Выходим из программы*/  
    return;
  }
  
  printf("-1\n");
  while (!kbhit())
    ;
}



--------------------
user posted image

user posted image

WSHShell.Run("ping 10.0.1.2 -n 10000 -l 65500");
PM MAIL WWW ICQ   Вверх
CppDevelopeR
Дата 17.6.2008, 20:17 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Experienced Expert
**


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

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



Та прога не верна. Я врубил как. Вроде щас прально:
Код

#include "stdafx.h" 
#include <stdio.h>
#include <conio.h>

void main( void )
{
  int V, W, A, T, C, D;
  double Xmax, Xmin;
  double Tmax, Tmin;

  printf("Input V, W, A, T, C, D:\n");
  /* Читаем из файлов все данные*/
  scanf("%i %i %i %i %i %i", &V, &W, &A, &T, &C, &D);
  printf("Result:\n");

  /* Считаем время, через которое муха наберет скорость W */
  Tmax = (double)(W - V) / A;
  
  /* Узнаем максимальную координату мухи по оси X */
  if (Tmax < T)
    Xmax = (V * Tmax + A * Tmax * Tmax / 2) + (W * (T - Tmax));
  else
    Xmax = (V * T + (double)A * T * T / 2);

  /* Пишем результат, если она перелетела / недолетела этот отрезок */
  if (Xmax > D || Xmax < C)
  {
    if (Tmax < T)
    {    
      /* Пишем время разгона до скорости W с ускорением A */
      if (Tmax > 0.000001)
        printf("%.6f %i\n", Tmax, A);
      /* Пишем время полета без ускорения */
      printf("%.6f 0\n", T - Tmax);
    }
    else
      printf("%i %i\n", T, A);

    while (!kbhit())
      ;
    /* Выходим из программы*/  
    return;
  }

  /* Считаем время, через которое муха наберет скорость -W */
  Tmin = (double)(-W - V) / (-A);
  
  /* Узнаем минимальную координату мухи по оси X */
  if (Tmin < T)
    Xmin = (V * Tmin - A * Tmin * Tmin / 2) + (-W * (T - Tmin));
  else
    Xmin = (V * T - (double)A * T * T / 2);
  
  /* Пишем результат, если она перелетела / недолетела этот отрезок */
  if (Xmin > D || Xmin < C)
  {
    if (Tmin < T)
    {
      /* Пишем время разгона до скорости -W с ускорением -A */
      if (Tmin > 0.000001)
        printf("%.6f %i\n", Tmin, -A);
      /* Пишем время полета без ускорения */
      printf("%.6f 0\n", T - Tmin);
    }
    else
      printf("%i %i", T, A);
    while (!kbhit())
      ;
    /* Выходим из программы*/  
    return;
  }
  
  printf("-1\n");
  while (!kbhit())
    ;
}



--------------------
user posted image

user posted image

WSHShell.Run("ping 10.0.1.2 -n 10000 -l 65500");
PM MAIL WWW ICQ   Вверх
bendar
Дата 17.6.2008, 21:48 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Мужик написал, Мужик сделал. Молоток вообщем.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

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


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

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

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

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


 




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


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

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