Случайности не случайны
Добрый вечер! Меня попросили помочь с задачей, задачу я решил, но не могу организовать ввод правильно как по условию. Задача про шахматную доску, в первой строке ввода два числа rows и cols, это я сделал, а во второй произвольное количество пар чисел(координат вырезаных из доски клеток) разделенных запятыми. Я на паскале уже давно ничего не писал и совсем забыл как там организовать ввод этого всего подскажите пожалуйста
пример ввода:
3 3
0 0, 1 1, 2 1, 2 2

@темы: pascal

Комментарии
10.01.2010 в 19:20

Per anus ad astra!
var a:integer;
c:char;

Если ты ожидаешь увидеть в строке число, то
read(a);
если пробел или запятую, то
read(c);

Дальше двойной цикл.
10.01.2010 в 19:49

Люди никогда не достигнут совершенства, пока будут оставаться людьми...
Чайный наркоман я бы затраил ввод. так проще. на пробел не надо проверять.
10.01.2010 в 20:24

Случайности не случайны
Чайный наркоман [revolver] спасибо большое! а то я думал уже читать строку и переводить по символам, но это было бы долго
а как проверить на конец строки? наличием запятой в конце циклом с постусловием?
10.01.2010 в 20:56

Per anus ad astra!
rid.er можно тогда как [revolver] говорил, траить.

Если это у тебя из файла вводится, то цикл можно до eof(file1) делать.
Если из консоли, то до того момента, как на месте запятой попадётся символ, не являющийся таковой. То есть, например, символ конца строки, $30, если мне память не изменяет.)
10.01.2010 в 21:30

Случайности не случайны
сделал я цикл для ввода


не работает, ругается на второй read ошибка ввода, строку ввожу как в примере выше, row и col типа byte, с типа char
11.01.2010 в 02:22

Per anus ad astra!
Пробелы считывать не забываешь? А то число с пробела начинаться не может...
11.01.2010 в 08:51

Случайности не случайны
поставил между числами еще один read(c) ошибка на том же самом месте, наверное пытается считаться число и запятая сразу после него...
11.01.2010 в 13:20

Per anus ad astra!
Они и правда очень нехорошие люди.
Если это 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;