Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2010, 10:27   #1
boomeer
Форумчанин
 
Аватар для boomeer
 
Регистрация: 04.08.2010
Сообщений: 110
Вопрос Нужно помочь

На вход подается интервал, полуинтервал или отрезок.
( (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
Код:
#include <cstdio>
#include <cstring>

int main()
{
	char str1[128], str2[128];
	scanf("%s%s", str1, str2);

	int a, c,cc=0;
	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;
}
При (1/2, 3], к примеру, работает не верно... Цель - доработать

Последний раз редактировалось boomeer; 03.11.2010 в 11:04.
boomeer вне форума Ответить с цитированием
Старый 03.11.2010, 11:17   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Пишите, обсудим.
ICQ 482-373-277
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 03.11.2010, 14:41   #3
dxdy
Пользователь
 
Регистрация: 11.06.2010
Сообщений: 78
По умолчанию

mail: dxdy@bk.ru
Я не волшебник, я еще только учусь ٩(๏̯͡๏)۶
dxdy вне форума Ответить с цитированием
Старый 03.11.2010, 16:04   #4
bondik
Форумчанин
 
Регистрация: 24.04.2008
Сообщений: 300
По умолчанию

ICQ: 456 девять 46 681
bondik вне форума Ответить с цитированием
Старый 03.11.2010, 20:14   #5
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

ICQ: 421277094
Обращайтесь, недорого, в течении суток
eoln вне форума Ответить с цитированием
Старый 04.11.2010, 02:13   #6
fat-lip
 
Регистрация: 15.05.2010
Сообщений: 3
По умолчанию

437657148
fat-lip@inbox.ru

пишите сделаем
fat-lip вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц