Есть программа по такому условию:
Нужно найти все целые числа внутри отрезка
Х, У
Причём:
(Х, У) - Не включает Х и У в отрезок
[X, Y] - Включает Х и Y в отрезок
(X, Y], (X, Y] - Включает Y не включая X и наоборот второе
X и Y как целые числа или дроби (типа 1/3)
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#define INCLUDING_START 1
#define INCLUDING_END 2
#define DISINCLUDING_START 4
#define DISINCLUDING_END 6
using namespace std;
double math_fractionConvert (char fraction[100])
{
int len=strlen(fraction);
double div, den, adress=-1;
char temp[100], temp2[100];
for (int i=0; i < len; i++)
{
if (fraction[i]=='/')
{
adress=1;
for (int j=0; j <= i; j++)
{
temp[j]=fraction[j];
}
temp[i]='\0';
div=atoi(temp);
for (int j=i+1; j < len; j++)
{
temp2[j-i-1]=fraction[j];
}
temp2[len-i-1]='\0';
den=atoi(temp2);
}
}
if (adress==-1)
{
return atoi(fraction);
}
if (den!=0)
{
return div/den;
}
else
{
return 0;
}
}
double math_fractionConvert (int _div, int _den)
{
double div=_div, den=_den;
if (den!=0)
{
return div/den;
}
else
{
return 0;
}
}
int math_getAllWholeNumbersIn(char __start[100], char __end[100], int including)
{
int numberCount=0;
double _start, _end, _temp;
int start, end;
_start=math_fractionConvert(__start);
_end=math_fractionConvert(__end);
start=ceil(_start);
end=floor(_end);
if ((_start==_end) && (including==10))
{
return 0;
}
if (_start>_end)
{
_temp=_start;
_start=_end;
_end=_temp;
}
numberCount=abs((ceil(_start)-floor(_end)))+1;
if (including==10)
{
if (start==_start)
{
numberCount--;
}
if (end==_end)
{
numberCount--;
}
}
if (including==7)
{
if (end==_end)
{
numberCount--;
}
}
if (including==6)
{
if (start==_start)
{
numberCount--;
}
}
return numberCount;
}
int main (void)
{
char str[100], frct1[100], frct2[100];
int including=0, len;
FILE* fin=fopen("numeric.in", "r");
fgets(str, 100, fin);
fclose(fin);
len=strlen(str);
if (str[0]=='[')
{
including+=INCLUDING_START;
}
else
{
including+=DISINCLUDING_START;
}
if (str[len-1]==']')
{
including+=INCLUDING_END;
}
else
{
including+=DISINCLUDING_END;
}
str[0]=' ';
str[len-1]=' ';
for (int i=0; i < len; i++)
{
if (str[i]==',')
{
for (int j=0; j <= i; j++)
{
frct1[j]=str[j];
}
frct1[i]='\0';
for (int j=i+1; j < len; j++)
{
frct2[j-i-1]=str[j];
}
frct2[len-i-1]='\0';
}
}
HWND hWnd;
FILE* fout=fopen("numeric.out", "w");
fprintf(fout, "%i", math_getAllWholeNumbersIn(frct1, frct2, including));
fclose(fout);
return 0;
}
Это моя программа.
В тестере пишет что ошибки на некоторых тестах.
Я тестировал вручную, вроде нет ошибок.
Где же может быть ошибка?
Примечание:
Спасибо сам исправил))
Все было правильно, только на тестах олимпиады в файл вбивали еще символ конца строки \n. Я все исправил.
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.