Jump to content
СофтФорум - всё о компьютерах и не только

Recommended Posts

Здравствуйте, уважаемые форумчане!

В общем, недавно писал одну простенькую программку на 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 by Shadow TH
Link to comment
Share on other sites

Используйте Console.ReadLine();

Да. Это работает. Правда приходится всё время преобразовывать тип переменных из String в Double перед выполнением каких-либо вычислений, что достаточно неудобно (Console.ReadLine() отказывается работать с переменными типа Double, только String).

Спасибо за помощь. :(

Edited by Shadow TH
Link to comment
Share on other sites

  • 2 weeks later...
  • 8 months later...

Решил отдельную тему про C# не создавать.

Имеется массив переменных типа byte. В нём записан текст в формате UTF-16 (1200), т.е. первые два байта - 254 и 255, а затем идут текстовые символы размером в 2 байта каждый. Нужно преобразовать этот массив в обычную строку string. Как это сделать, подскажите, pls :)

Link to comment
Share on other sites

  • 2 weeks later...

С предыдущей проблемой разобрался.

Возник вопрос, снова по C#. Имеется файл, в котором записаны двоичные данные. Мне нужно прочесть оттуда скажем первые 4 байта и присвоить их значение одной переменной типа int32 (int32 как раз имеет размер 4 байта). Как это сделать? Также интересует обратная операция: запись скажем 4-байтовой переменной типа int32 в двоичный файл. Ведь при использовании потоков есть функции write и writebyte, а скажем writeint32 или что-то подобного нет. Заранее спасибо.

Edited by Shadow TH
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...