Shadow TH Posted May 20, 2010 Report Share Posted May 20, 2010 (edited) Здравствуйте, уважаемые форумчане! В общем, недавно писал одну простенькую программку на 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 Edited February 26, 2011 by Shadow TH Quote Link to comment Share on other sites More sharing options...
Lion HC Posted May 20, 2010 Report Share Posted May 20, 2010 Console.Read() - читает только один симовл из потока. Используйте Console.ReadLine(); Quote Link to comment Share on other sites More sharing options...
Shadow TH Posted May 20, 2010 Author Report Share Posted May 20, 2010 (edited) Используйте Console.ReadLine(); Да. Это работает. Правда приходится всё время преобразовывать тип переменных из String в Double перед выполнением каких-либо вычислений, что достаточно неудобно (Console.ReadLine() отказывается работать с переменными типа Double, только String). Спасибо за помощь. Edited May 20, 2010 by Shadow TH Quote Link to comment Share on other sites More sharing options...
Lion HC Posted June 1, 2010 Report Share Posted June 1, 2010 Пожалуйста Quote Link to comment Share on other sites More sharing options...
Shadow TH Posted February 26, 2011 Author Report Share Posted February 26, 2011 Решил отдельную тему про C# не создавать. Имеется массив переменных типа byte. В нём записан текст в формате UTF-16 (1200), т.е. первые два байта - 254 и 255, а затем идут текстовые символы размером в 2 байта каждый. Нужно преобразовать этот массив в обычную строку string. Как это сделать, подскажите, pls :) Quote Link to comment Share on other sites More sharing options...
Shadow TH Posted March 10, 2011 Author Report Share Posted March 10, 2011 (edited) С предыдущей проблемой разобрался. Возник вопрос, снова по C#. Имеется файл, в котором записаны двоичные данные. Мне нужно прочесть оттуда скажем первые 4 байта и присвоить их значение одной переменной типа int32 (int32 как раз имеет размер 4 байта). Как это сделать? Также интересует обратная операция: запись скажем 4-байтовой переменной типа int32 в двоичный файл. Ведь при использовании потоков есть функции write и writebyte, а скажем writeint32 или что-то подобного нет. Заранее спасибо. Edited March 10, 2011 by Shadow TH Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.