#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main()
{
int dlin1 =0;
setlocale( LC_ALL,"Russian" );
int dlin11 = 0;
int n=0;
char str1[256];
printf("Введите двоичное число\n");
gets(str1);
printf("Длина строки %s - %i символов\n",str1 ,strlen(str1));
dlin1 = strlen(str1);
dlin11 = strlen(str1);
printf("%s",str1);
if (str1[0]='-') //Перевод отрицательного в обратный
{
for (dlin1--;dlin1!= (-1);dlin1--)
{
switch(str1[dlin1]){
case '0':
str1[dlin1]=1;
break;
case '1':
str1[dlin1]=0;
break;
}
}
}
else{
for(dlin1--;dlin1!=(-1);dlin1--) //Перевод положительного в обратный
{
switch(str1[dlin1]){
case '0':
str1[dlin1]=0;
break;
case '1':
str1[dlin1]=1;
break;
}
}
int i = 0;
for(;i<(dlin11);i++) //Еще один вывод
{
printf("%i",str1[i]);
}
}
for(dlin11--;dlin11!=0;dlin11--) //Проверка на двоичный код
{
if((str1[dlin11]!=0)||(str1[dlin11]!=1)||(str1[dlin11]!='-')||str1[dlin11]!='\0')
{
printf("\nZdes oshibka(%i)(%i)error",dlin11,str1[dlin11]);
return 0;
}
}
return 0;
}
1 ответ
Что-то мне кажется, что тут
if (str1[0]='-') //Перевод отрицательного в обратный
вы хотели не присваивать, а сравнивать...
if (str1[0]=='-') //Перевод отрицательного в обратный
И вообще - вы записываете в строку какие-то 0 и 1 - числа, не символы!
str1[dlin1]=1;
а потом проверяете, не равны ли символы в строке символам '0'
или '1'
. Понятно, не равны.
А вообще - по-хорошему, вопросы с просьбами помочь с отладкой («почему этот код не работает?») должны включать желаемое поведение, конкретную проблему или ошибку и минимальный код для её воспроизведения прямо в вопросе. Вопросы без явного описания проблемы бесполезны для остальных посетителей.
У вас приходится догадываться, что должна делать программа.
Смотрите - сугубо отвлеченно - когда вы даете неверный код, который работает не так, как надо, и просите найти ошибку - как ее искать? Даже если удастся пробраться через код и понять, что он делает - как понять? может, это то, что он должен делать? Вы же не пишете, что он должен делать.
Утрируя - вы сможете найти ошибку в "прочесть a, прочесть b, вывести a+b? Если не сказать, что программа - для поиска произведения?
И еще - НЕ ИСПОЛЬЗУЙТЕ ФУНКЦИЮ gets
. Нет ее больше. Забудьте!
-
Прошу прощения за некорректную постановку вопроса. Очень благодарю за ответ! Попробую предложенные вами правки. 18 дек 2019 в 14:22
-
Я не говорю, что это все ошибки. Но без их исправления бессмысленно смотреть дальше...– Harry18 дек 2019 в 14:23