Случайности не случайны
Добрый вечер! Меня попросили помочь с задачей, задачу я решил, но не могу организовать ввод правильно как по условию. Задача про шахматную доску, в первой строке ввода два числа rows и cols, это я сделал, а во второй произвольное количество пар чисел(координат вырезаных из доски клеток) разделенных запятыми. Я на паскале уже давно ничего не писал и совсем забыл как там организовать ввод этого всего подскажите пожалуйста
пример ввода:
3 3
0 0, 1 1, 2 1, 2 2
пример ввода:
3 3
0 0, 1 1, 2 1, 2 2
-
-
10.01.2010 в 19:20c:char;
Если ты ожидаешь увидеть в строке число, то
read(a);
если пробел или запятую, то
read(c);
Дальше двойной цикл.
-
-
10.01.2010 в 19:49-
-
10.01.2010 в 20:24а как проверить на конец строки? наличием запятой в конце циклом с постусловием?
-
-
10.01.2010 в 20:56Если это у тебя из файла вводится, то цикл можно до eof(file1) делать.
Если из консоли, то до того момента, как на месте запятой попадётся символ, не являющийся таковой. То есть, например, символ конца строки, $30, если мне память не изменяет.)
-
-
10.01.2010 в 21:30не работает, ругается на второй read ошибка ввода, строку ввожу как в примере выше, row и col типа byte, с типа char
-
-
11.01.2010 в 02:22-
-
11.01.2010 в 08:51-
-
11.01.2010 в 13:20Если это Delphi, то можно считывать по символам и strtoint юзать, а так придётся такю конструкцию долбить:
a := 0;
for i := 1 to i+1 do
begin
read(c)
if (c = ',') or (c = ' ') then break;
if ord(c) = 13 then exit; { в дельфе проверил, оно на ввод 13 даёт. ещё нюанс, что использование exit предполагает то, что это всё - в функции/процедуре ввода, иначе по-другому нужно будет как-нибудь выходить}
a := a*10 + (ord(c)-ord('0'));
end;