@kuzia_bRatok
Студент

Почему не работает одна ветвь кода в программе?

Здравствуйте, вот решил решить пару олимпиадных задачек, наткнулся на одну из простейших, где нужно решить линейное уравнение с одной переменной и числами от 0 до 9 (поэтому алгоритм бессовестно привязал к позициям). И в одной из ветвей кода ( x = equation[4] + equation[2]; ) происходит что-то совсем не то. Если ввести x-1=7 выводит 104, а нужно, конечно, 8.

Console.WriteLine("Введите уравнение: ");
        string equation = Console.ReadLine();
        int x;
        if (!Char.IsDigit(equation[0]))
        {
            if (equation[1] == '+')
            {
                x = equation[4] - equation[2];
            }
            else
            {
                x = equation[4] + equation[2];
            }
        }
        else
        {
            if (equation[1] == '+')
            {
                x = equation[4] - equation[0];
            }
            else
            {
                x = -(equation[4] - equation[0]);
            }
        }
        Console.WriteLine("x: " + x);


Обычная олимпиадная задачка, вроде бы все очевидно, но вторая ветвь кода отчаянно не хочет работать. Подскажите, где я ошибся, идей совсем нет.
  • Вопрос задан
  • 193 просмотра
Решения вопроса 1
@akass
Developer
Все работает как надо, достаточно по шагам пройти в отладке.
Ты не сконвертировал строки в числа. Поэтому компилятор берет код символа из таблицы su0.ru/WlLx
целочисленный код семерки 55, код единицы 49, в сумме 104. Так что все правильно.
Например вот так будет работать как ты хочешь, но конечно так не правильно делать.
x = Convert.ToInt32(equation[4].ToString()) + Convert.ToInt32(equation[2].ToString());
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы