Заходят не все тесты,что не так?(Код на C)
[email protected] в категроии Информатика, вопрос открыт 19.07.2017 в 14:22
Условие задачи:
На планете Роботов очень не любят десятичную систему счисления, поэтому они попросили Вас написать программу, которая заменяет все встречающиеся в тексте числа на эти же числа, но в двоичной системе счисления.
Входные данные
Единственная строка, состоящая из любых символов. Длина строки не превышает 255 символов. Гарантируется, что во всех числах нет ведущих нулей.
Выходные данные
Выведите преобразованную строку.
Примеры
входные данные
6^&678JKjdkdl;?.,lk879Pk1kdfl4839
выходные данные
110^&1010100110JKjdkdl;?.,lk1101101111Pk1kdfl1001011100111
Мой код:
//http://informatics.mccme.ru/mod/statements/view3.php?id=248&chapterid=2805#1 (сайт с задачей)
#include
#include
#include
void dectobin(int n){//Рекурсивная функция перевода числа из десятичной системы счисления в двоичную
if (n>=2){
dectobin( n/2 );
}
printf("%d", n % 2);
}
int main(void){
system("chcp 1251>nul");
int i,l,r,t;
char str[1111],temp[1111];
scanf("%[^\n]",str);
i=0;
while(i if ((str[i]>='0') && (str[i]<='9')){//Пытаемся найти число в строке
l=i;//Левый край числа
r=i;//Предположительный правый край числа
while((str[r]>='0') && (str[r]<='9') && (r r++;
}
r--;//Правый край числа
memset(temp,0,1111);//Обнуление строки temp
//Нужная часть (число) из строки str (с определенных позиций)
//копируется в строку temp:
strncpy(temp,str+l,r-l+1);
t=atoi(temp);//Строка->число
dectobin(t);//Вызов функции перевода
i=r+1;
}
else{
printf("%c",str[i]);//Иначе печатаем символ и идем дальше
i++;
}
}
system("pause>nul");
return 0;
}
0 ответов
Зарегистрируйтесь или авторизируйтесь на сайте чтобы оставить ответ на вопрос.