Shadow TH Опубликовано 20 мая, 2010 Жалоба Поделиться Опубликовано 20 мая, 2010 (изменено) Здравствуйте, уважаемые форумчане! В общем, недавно писал одну простенькую программку на C# и заметил одну особенность использования функции Console.Read(), когда функция используется в программе несколько раз. Например, имеется код: static void Main(string[] args){ double x2, x, m, d, a, b; Console.Write("Введите коэффициент при x^2: "); x2 = Console.Read(); Console.Write("Введите коэффициент при x: "); x = Console.Read(); Console.Write("Введите c: "); m = Console.Read(); d = Math.Pow(x, 2) - 4 * x2 * m; a = (-x + Math.Sqrt(d)) / (2 * x2); b = (-x - Math.Sqrt(d)) / (2 * x2); Console.Write("x1 = {0}, x2 = {1}", a, b); Console.ReadKey();} При запуске программа просит ввести значение x2. Вводим, жмём Enter и тут программа сразу же каким-то образом откуда-то берёт x и m и даёт какой-то "левый" ответ. При повторном нажатии Enter программа закрывается. Функция Console.Read() как бы выполняется только 1 раз: в самом начале программы; в остальных случаях она пропускается почему-то (или даже скорее не пропускается, а просто то же самое значение, введённое в первый раз, присваивается при всех последующих вызовах функции Console.Read()). Почему так? Может быть я что-то не так делаю? P.S: Компилятор - MS Visual C# 2010 Express Изменено 26 февраля, 2011 пользователем Shadow TH Ссылка на комментарий Поделиться на другие сайты Поделиться
Lion HC Опубликовано 20 мая, 2010 Жалоба Поделиться Опубликовано 20 мая, 2010 Console.Read() - читает только один симовл из потока. Используйте Console.ReadLine(); Ссылка на комментарий Поделиться на другие сайты Поделиться
Shadow TH Опубликовано 20 мая, 2010 Автор Жалоба Поделиться Опубликовано 20 мая, 2010 (изменено) Используйте Console.ReadLine(); Да. Это работает. Правда приходится всё время преобразовывать тип переменных из String в Double перед выполнением каких-либо вычислений, что достаточно неудобно (Console.ReadLine() отказывается работать с переменными типа Double, только String). Спасибо за помощь. Изменено 20 мая, 2010 пользователем Shadow TH Ссылка на комментарий Поделиться на другие сайты Поделиться
Lion HC Опубликовано 1 июня, 2010 Жалоба Поделиться Опубликовано 1 июня, 2010 Пожалуйста Ссылка на комментарий Поделиться на другие сайты Поделиться
Shadow TH Опубликовано 26 февраля, 2011 Автор Жалоба Поделиться Опубликовано 26 февраля, 2011 Решил отдельную тему про C# не создавать. Имеется массив переменных типа byte. В нём записан текст в формате UTF-16 (1200), т.е. первые два байта - 254 и 255, а затем идут текстовые символы размером в 2 байта каждый. Нужно преобразовать этот массив в обычную строку string. Как это сделать, подскажите, pls :) Ссылка на комментарий Поделиться на другие сайты Поделиться
Shadow TH Опубликовано 10 марта, 2011 Автор Жалоба Поделиться Опубликовано 10 марта, 2011 (изменено) С предыдущей проблемой разобрался. Возник вопрос, снова по C#. Имеется файл, в котором записаны двоичные данные. Мне нужно прочесть оттуда скажем первые 4 байта и присвоить их значение одной переменной типа int32 (int32 как раз имеет размер 4 байта). Как это сделать? Также интересует обратная операция: запись скажем 4-байтовой переменной типа int32 в двоичный файл. Ведь при использовании потоков есть функции write и writebyte, а скажем writeint32 или что-то подобного нет. Заранее спасибо. Изменено 10 марта, 2011 пользователем Shadow TH Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти