-2
#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 ответ 1

2

Что-то мне кажется, что тут

if (str1[0]='-')  //Перевод отрицательного в обратный

вы хотели не присваивать, а сравнивать...

if (str1[0]=='-')  //Перевод отрицательного в обратный

И вообще - вы записываете в строку какие-то 0 и 1 - числа, не символы!

str1[dlin1]=1;

а потом проверяете, не равны ли символы в строке символам '0' или '1'. Понятно, не равны.

А вообще - по-хорошему, вопросы с просьбами помочь с отладкой («почему этот код не работает?») должны включать желаемое поведение, конкретную проблему или ошибку и минимальный код для её воспроизведения прямо в вопросе. Вопросы без явного описания проблемы бесполезны для остальных посетителей.

У вас приходится догадываться, что должна делать программа.

Смотрите - сугубо отвлеченно - когда вы даете неверный код, который работает не так, как надо, и просите найти ошибку - как ее искать? Даже если удастся пробраться через код и понять, что он делает - как понять? может, это то, что он должен делать? Вы же не пишете, что он должен делать.

Утрируя - вы сможете найти ошибку в "прочесть a, прочесть b, вывести a+b? Если не сказать, что программа - для поиска произведения?

И еще - НЕ ИСПОЛЬЗУЙТЕ ФУНКЦИЮ gets. Нет ее больше. Забудьте!

2
  • Прошу прощения за некорректную постановку вопроса. Очень благодарю за ответ! Попробую предложенные вами правки. 18 дек 2019 в 14:22
  • Я не говорю, что это все ошибки. Но без их исправления бессмысленно смотреть дальше...
    – Harry
    18 дек 2019 в 14:23

Всё ещё ищете ответ? Посмотрите другие вопросы с метками или задайте свой вопрос.