Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
Требуется помощь в решении задачи в С++, дело горит...
 
Дано действительное число х. Получить целую часть (* числа x; затем - число x, округленное до ближайшего целого; затем x без дробных цифра.*) Целой частью числа x, обозначаемой [x], называется наибольшее целое, не превосходящее x, так, [3.14] = 3, [3] = 3, [-3.14] = -4, [-3] = -3.
Очень сильно надо...
 
Код
#include <stdio.h>
#include <math.h>

int main(){
  double f;

  printf("\n");
  printf("\n\tfloor(x):\n");
  printf("2.3\t->\t%.2f\n", floor(2.3));
  printf("2.7\t->\t%.2f\n", floor(2.7));
  printf("-2.3\t->\t%.2f\n", floor(-2.3));
  printf("-2.7\t->\t%.2f\n", floor(-2.7));

  printf("\n\tfloor(x+0.5):\n");
  printf("2.3\t->\t%.2f\n", floor(2.3+0.5));
  printf("2.7\t->\t%.2f\n", floor(2.7+0.5));
  printf("-2.3\t->\t%.2f\n", floor(-2.3+0.5));
  printf("-2.7\t->\t%.2f\n", floor(-2.7+0.5));
  printf("2.5\t->\t%.2f\n", floor(2.5+0.5));
  printf("-2.5\t->\t%.2f\t-OK\n", floor(-2.5+0.5));

  printf("\n\t(modf(x,&f),f):\n");
  printf("2.3\t->\t%.2f\n", (modf(2.3, &f),f));
  printf("2.7\t->\t%.2f\n", (modf(2.7, &f),f));
  printf("-2.3\t->\t%.2f\n", (modf(-2.3, &f),f));
  printf("-2.7\t->\t%.2f\n", (modf(-2.7, &f),f));

  printf("\n\tmodf(x,&f):\n");
  printf("2.3\t->\t%.2f\n", modf(2.3, &f));
  printf("2.7\t->\t%.2f\n", modf(2.7, &f));
  printf("-2.3\t->\t%.2f\n", modf(-2.3, &f));
  printf("-2.7\t->\t%.2f\n", modf(-2.7, &f));

  printf("\n\t(int)x:\n");
  printf("2.3\t->\t%i\n", (int)2.3);
  printf("2.7\t->\t%i\n", (int)2.7);
  printf("-2.3\t->\t%i\n",(int)-2.3);
  printf("-2.7\t->\t%i\n", (int)-2.7);


  printf("\n\n\t-----and-----");
  printf("\n\tprintf(\"%%.0f\", x):\n");
  printf("2.3\t->\t%.0f\n", 2.3);
  printf("2.7\t->\t%.0f\n", 2.7);
  printf("-2.3\t->\t%.0f\n", -2.3);
  printf("-2.7\t->\t%.0f\n", -2.7);
  printf("2.5\t->\t%.0f\n", 2.5);
  printf("-2.5\t->\t%.0f\n", -2.5);

  printf("\n\tprintf(\"%%.1f\", x):\n");
  printf("2.23\t->\t%.1f\n", 2.23);
  printf("2.27\t->\t%.1f\n", 2.27);
  printf("-2.23\t->\t%.1f\n", -2.23);
  printf("2.55\t->\t%.1f\n", 2.55);
  printf("-2.55\t->\t%.1f\n", -2.55);
  printf("\tprintf(\"%%.2f\", x):\n");
  printf("2.555\t->\t%.2f\n", 2.555);
  printf("-2.555\t->\t%.2f\n", -2.555);

  printf("\n\tprintf(\"%%i\", 5/2):\n");
  printf("5/2\t->\t%i\n", 5 / 2);
  printf("\tprintf(\"%%.2f\", 5/2):\n");
  printf("5/2\t->\t%.2f\t-error\n", 5/2);
  printf("\tprintf(\"%%.2f\", (float)5/2):\n");
  printf("5/2\t->\t%.2f\n", (float)5/2);

  return 0;
}


Ouput:
Код
        floor(x):
2.3     ->      2.00
2.7     ->      2.00
-2.3    ->      -3.00
-2.7    ->      -3.00

        floor(x+0.5):
2.3     ->      2.00
2.7     ->      3.00
-2.3    ->      -2.00
-2.7    ->      -3.00
2.5     ->      3.00
-2.5    ->      -2.00   -OK

        (modf(x,&f),f):
2.3     ->      2.00
2.7     ->      2.00
-2.3    ->      -2.00
-2.7    ->      -2.00

        modf(x,&f):
2.3     ->      0.30
2.7     ->      0.70
-2.3    ->      -0.30
-2.7    ->      -0.70

        (int)x:
2.3     ->      2
2.7     ->      2
-2.3    ->      -2
-2.7    ->      -2


        -----and-----
        printf("%.0f", x):
2.3     ->      2
2.7     ->      3
-2.3    ->      -2
-2.7    ->      -3
2.5     ->      3
-2.5    ->      -3

        printf("%.1f", x):
2.23    ->      2.2
2.27    ->      2.3
-2.23   ->      -2.2
2.55    ->      2.5
-2.55   ->      -2.5
        printf("%.2f", x):
2.555   ->      2.56
-2.555  ->      -2.56

        printf("%i", 5/2):
5/2     ->      2
        printf("%.2f", 5/2):
5/2     ->      0.00    -error
        printf("%.2f", (float)5/2):
5/2     ->      2.50


Ссылочки:
http://lord-n.narod.ru/download/books/walla/programming/Spr_po_C/15/floor.htm
http://lord-n.narod.ru/download/books/walla/programming/Spr_po_C/15/modf.htm
http://lord-n.narod.ru/download/books/walla/programming/Spr_po_C/08/0804.htm

http://www.cplusplus.com/reference/cmath/floor/
http://www.cplusplus.com/reference/cmath/modf/
http://www.cplusplus.com/reference/cstdio/printf/
Изменено: Zart - 10.02.2013 07:03:08 (Глюки * формы редактирования)
 
Добрый день, программисты!

У меня задача, от меня требуется объяснение кода С++, ПОМОГИТЕ пожалуйста! Собственно задача:
Имеется остановка маршрутного такси. С определенными интервалами времени на остановку приходят пассажиры и подъезжают такси. Такси уезжает после своего заполнения. Если пришедший пассажир не обнаруживает стоящего такси, он встает в очередь на посадку. Если такси подъехало на пустую остановку, оно ждет пассажиров. Если такси подъехало и обнаруживает на остановке другое такси, оно встает в очередь такси. Условие к задаче:
Время моделирования______________________________600 минут
Интервал прихода пассажиров  :
Закон распределения _______________________экспоненциальный
Среднее время____________________________________1,0 минута
Интервал приезда такси:
Закон распределения _____________________________нормальный
Среднее время____________________________________8,0 минут
Отклонение______________________________________2,7 минут
Количество мест в такси 10


Сам код, собственно:

#include "Pilgrim.h"

float Pas=1.0;  /* интервал прихода пассажиров */
float Tax=10.0; /* интервал прихода такси */
float Mod_time=600.0;

forward
{
int fw;

modbeg("Маршрутное такси", 10, Mod_time, (long)time(NULL), none, 2, none,5, 2);
ag("Пассажиры",  1, none, expo, Pas, zero, zero, 2);
ag("Такси",  6, none, norm, Tax, Tax/3, zero, 7);
network(dummy, dummy)
{
 top(2):
 queue("Пассажиры", none, 3);
clcode
if (addr[2]->na == 1)  
hold(3); /* начальное размыкание ключа */
 place;

 top(3):
 key("Есть такси?", 4);
place;

 top(4):
 delet("Посадка в такси", none, none, 0, 10, 5);
   rels(3);
   hold(8);
place;

 top(5):
 term("Такси уехало");
   hold(3);  
   rels(8);
place;

 top(7):
 queue("Такси", none, 8);
place;

 top(8):
 key("Остановка свободна?", 4);
      place;

   fault(123);
}
modend("123456789_1.txt", 1, 12, page);
return 0;
}
Страницы: 1
Читают тему