#c#
Вопрос:
Я получаю другой пользовательский ввод вместо того, чтобы получать реальные входные данные, предоставленные пользователем в codechef
Пользовательский ввод:
4 1 2 3 4
Ожидаемый Результат: 4 3 2 1
using System; public class Test { public static void Main() { int N = Convert.ToInt32(Console.ReadLine()); int[] arr = new int[N]; for(int i=0;ilt;N;i ){ arr[i] = Convert.ToInt32(Console.Read()); } for(int j=N-1;jgt;=0;j--){ Console.Write(arr[j]); Console.Write(" "); } } }
Вывод, который я получил: 32 50 32 49
Комментарии:
1. возможно, вы тоже читаете пробелы как числа?
2. Привет, люциброт, я попытался прочитать его как число вместо преобразования, но затем я также получил тот же вывод, и он неправильно считывал входные данные
3. Я думаю, что мне было недостаточно ясно, что я имею в виду (или, может быть, я тот, кто запутался, но), когда вы это делаете
Console.Read()
, вы получаете первое число. В следующий раз, когда вы это сделаете, вы получите символ пробела. Разве вы не хотели бы пропустить это, вместо того, чтобы сохранить его?4. Да, именно в этом моя проблема, я не знаю, как читать входные данные без пробелов, но не должен использовать ReadLine()
5. Является ли обязательным требованием не использовать ReadLine()?
Ответ №1:
Поскольку вы сказали , что хотите обойтись без ReadLine
этого, давайте поработаем с вашим текущим кодом. Здесь есть два вопроса.
- Вы должны пропустить пробелы
- Вы получаете коды символов вместо значений
Чтобы пропустить пробелы, вы можете просто прочитать их и ничего не делать с прочитанным символом. Я реализовал это ниже таким образом, что предполагается, что после каждого числа (длиной в одну цифру) будет один пробел, который следует игнорировать. Но вы также можете сделать это менее хакерским способом, проверив, что на самом деле представляет собой прочитанный символ, прежде чем отбросить его.
Чтобы ввести код символа в значение, я сначала выполняю преобразование в a char
, приведя его. Затем я получаю числовое значение, которое может быть a double
. Но поскольку вы знаете, что ваши числа являются целыми числами, мы можем привести это к int
.
using System; class Program { static void Main(string[] args) { int N = Convert.ToInt32(Console.ReadLine()); int[] arr = new int[N]; for(int i=0;ilt;N;i ){ arr[i] = (int)Char.GetNumericValue((char)Console.Read()); Console.Read(); } for(int j=N-1;jgt;=0;j--){ Console.Write(arr[j]); Console.Write(" "); } } }
Комментарии:
1. Обратите внимание, что это, возможно, не лучший способ сделать это. Это просто первый способ, который я нашел. Я уже давно не прикасался к c#