Форум программистов, компьютерный форум CyberForum.ru

Промежутки - C++

Восстановить пароль Регистрация
 
boomeer
0 / 0 / 0
Регистрация: 30.10.2010
Сообщений: 8
30.10.2010, 20:54     Промежутки #1
На вход подается интервал, полуинтервал или отрезок.
( (x, y) or [x, y) or (x, y] or [x, y] )
Где х представлено как a/b, у как c/d. a, c -целые, b, d - положительные.
Если b и (или) d ==1 то записывается просто a и (или ) c.
Промежуток задается так: открывается квадратная или круглая скобка, далее записано число x в формате a/b или a, затем запятая и пробе, затем число y в таком же формате, после закрывается скобка, перевод строки и конец файла. Abs(a) abs(c)<=10^9. 0<d, b<=10^9
Найти количество целых чисел в промежутке.
На входе [3/2, 4) на выходе 2
На входе [-2, 4/3] на выходе 4

Помогите плз понять как сделать, что то даже не пойму как организовать анализ ввода. Но кажется нужно приводить к общему знаменателю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2010, 20:54     Промежутки
Посмотрите здесь:

Промежутки возрастания Delphi
Промежутки монотонности
C++ На отрезке xє[-4; 4] выделить промежутки длиной h = 0.1, в которых есть действительные корни функции b = xtgx-e ^ (x-3)
C++ Как в С++ записываються промежутки
Промежутки между разделами
Опишите промежутки чисел и символов при разных типах C++
Free Pascal Промежутки
Промежутки даты PHP

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrew_Lvov
Эксперт C++
 Аватар для Andrew_Lvov
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
31.10.2010, 00:19     Промежутки #2
1. Символ
2. До запятой.
Запятую пропускаем.
3. до скобки (квард, кругл.)
4. Символ.
Дальше смотрим считанную часть в п. 2. Если есть косая - делим на две части. Заокругляем в большую сторону.
Со вторым тоже самое, только заокругляем в левую.
Итого есть 2 целых числа, берём разницу плюс один.
Кроме того, если скобка квадратная и число с той стороны целое - прибавляем 1 к результату.
boomeer
0 / 0 / 0
Регистрация: 30.10.2010
Сообщений: 8
02.11.2010, 16:05  [ТС]     Промежутки #3
Нужна помощь, проходит 16 тестов из 20
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <cstdio>
#include <cstring>
 
int main()
{
    char str1[128], str2[128];
    scanf("%s%s", str1, str2);
 
    int a, c;
    unsigned b, d;
    char sk1, sk2;
 
    if(strchr(str1, '/'))
        sscanf(str1, "%c%d/%u,", &sk1, &a, &b);
    else
    {
        sscanf(str1, "%c%d,", &sk1, &a);
        b = 1U;
    }
    if(strchr(str2, '/'))
        sscanf(str2, "%d/%u%c", &c, &d, &sk2);
    else
    {
        sscanf(str2, "%d%c", &c, &sk2);
        d = 1U;
    }
 
    int left(a/(int)b), right(c/(int)d);
    if(sk1 == '(' && !(a % b))
        left++;
    if(sk2 == ')' && !(c % d))
        right--;
 
    if(a%b && a/(int)b > 0)
        left++;
    if(c%d && c/(int)d < 0)
        right--;
 
    printf("%d\n", (right-left >= 0 ? right-left+1 : 0));
 
    return 0;
}
Быть может узрит кто ошибку
Yandex
Объявления
02.11.2010, 16:05     Промежутки
Ответ Создать тему
Опции темы

Текущее время: 16:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru