Добро пожаловать, гость
:: алгоритмы  и методы :: :: олимпиадные задачи :: :: связь :: :: о сайте :: :: форум ::

Форум работает в режиме архива, только для чтения и поиска.
Архив 2004 Архив 2007 Архив 2013

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.08.2007, 01:59
Аватар для Олег Павлыш
Новичок

Отправить личное сообщение для Олег Павлыш Посмотреть профиль Найти все сообщения от Олег Павлыш
 
Регистрация: 24.09.2006
Сообщений: 9

Реализация ввода
вот решаю я одну задачу
Формат входных данных:
N - кол-во строк
A[1] A[2] ... A[N] - количество символов в каждой строке
Строка
Я реализую это так:
readln (n);
for i:=1 to n do
read(b[i]);
read (t);

но почему то как раз строку компилятору читать не хотят... я ввожу масив и все.... строка read (t); не выполняется....
что за фигня, либо как организовать ввод подругому?
  #2  
Старый 15.08.2007, 06:09
MBo MBo вне форума
Местный

Отправить личное сообщение для MBo Посмотреть профиль Найти все сообщения от MBo
 
Регистрация: 21.09.2006
Адрес: Новосибирск
Сообщений: 1,374

Приведи реальный пример входного файла и полный код чтения (с объявлением переменных)
  #3  
Старый 15.08.2007, 11:39
Аватар для Олег Павлыш
Новичок

Отправить личное сообщение для Олег Павлыш Посмотреть профиль Найти все сообщения от Олег Павлыш
 
Регистрация: 24.09.2006
Сообщений: 9

Пример ввода:
4
20 18 20 26
A.slhu tnaapzmgi rdku ribhastiu-lmuukz,rAusbh hngaAzkgu lguitmabkaatruhlt

код:
var
b:array [1..100] of byte;
t:string;
n,i:byte;
begin
readln (n);
for i:=1 to n do
read(b[i]);
read (t);
__________________
Удалите меня. САЙТ ГОВНО.
  #4  
Старый 15.08.2007, 12:19
pav pav вне форума
Пользователь

Отправить личное сообщение для pav Посмотреть профиль Найти все сообщения от pav
 
Регистрация: 25.09.2006
Сообщений: 86

При чтении с терминала п/п ввода read принимает данные с клавиатуры, в том числе и символ #$D , он же CR, он же "возврат каретки". В результате во внутреннем буфере строка выглядит как AnyPressedKeys+#$D и продолжает ожидать дальнейшего ввода символов.

Надо использовать побайтное чтение
Код:
var 
 b:array [1..100] of byte;
 t:string;
 n,i:byte;
begin
 write('Введите число подстрок:'); readln (n);
 write('Введите длины подстрок, разделяя их пробелами:');
 for i:=1 to n do read(b[i]);
 for i:=1 to n do
 begin
  t:='';
  for j:=1 to b[i] do begin read(ch); t:=t+ch; end;
  writeln('Получена очередная подстрока [', i, ']  -->') 
end;
end.
И наконец, приведенная программа не будет даже компилироваться - отсутствует закрывающая структурная скобка end.
  #5  
Старый 15.08.2007, 13:26
Пользователь

Отправить личное сообщение для M_Gustokashin Посмотреть профиль Найти все сообщения от M_Gustokashin
 
Регистрация: 24.09.2006
Адрес: Москва, Багратионовская
Сообщений: 81

Код:
var 
b:array [1..100] of byte;
t:string;
n,i:byte;
begin
readln (n);
for i:=1 to n do
read(b[i]);
readln;
readln (t);
end.
строки можно считывать только с помощью readln
  #6  
Старый 15.08.2007, 18:45
Аватар для Олег Павлыш
Новичок

Отправить личное сообщение для Олег Павлыш Посмотреть профиль Найти все сообщения от Олег Павлыш
 
Регистрация: 24.09.2006
Сообщений: 9

вот вам и побайтное чтение спасибо.


Но написал ридлн все равно не читает..... что, кроме побайтного чтения ничего низя придумать ?: )
__________________
Удалите меня. САЙТ ГОВНО.

Последний раз редактировалось Олег Павлыш, 15.08.2007 в 18:53.
  #7  
Старый 16.08.2007, 13:14
pav pav вне форума
Пользователь

Отправить личное сообщение для pav Посмотреть профиль Найти все сообщения от pav
 
Регистрация: 25.09.2006
Сообщений: 86

ReadL(ine)N(ew) заканчивает ввод и передает вызывающей программе все содержимое буфера.
Кстати, строкой считаеся последовательность символов с кодами 32<=B<255. (Unicode в расчет не берем). Следовательно, последовательность, приведенная в Вашем примере является одной единственной строкой.
Кстати, мой пример будет работать при чтении из файла, при чтении с терминаля я в этом не уверен.
  #8  
Старый 16.08.2007, 13:19
Пользователь

Отправить личное сообщение для M_Gustokashin Посмотреть профиль Найти все сообщения от M_Gustokashin
 
Регистрация: 24.09.2006
Адрес: Москва, Багратионовская
Сообщений: 81

при чтении с терминала нужно вставлять признак конца ввода (Ctrl-Z или Ctrl-D по моему, соответственно для Win/*nix или наоборот)
  #9  
Старый 16.08.2007, 13:39
Аватар для Олег Павлыш
Новичок

Отправить личное сообщение для Олег Павлыш Посмотреть профиль Найти все сообщения от Олег Павлыш
 
Регистрация: 24.09.2006
Сообщений: 9

Я фигею.... эта задача была на какой-то олимпиаде для 9-ых классов городской..... простого способа ввода нету?
__________________
Удалите меня. САЙТ ГОВНО.
  #10  
Старый 16.08.2007, 14:28
Пользователь

Отправить личное сообщение для M_Gustokashin Посмотреть профиль Найти все сообщения от M_Gustokashin
 
Регистрация: 24.09.2006
Адрес: Москва, Багратионовская
Сообщений: 81

мне все-таки не верится, что с пустым readln перед считыванием строк не работает. должно работать.
 


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
реализация алгоритма хаффмана на Php и си Саня Реализация, исходники, языки 5 19.05.2010 14:03
реализация метода ньютона незарегистрированный Математические алгоритмы 1 27.11.2007 23:27
реализация алгоритма ахо-корасик Straight Сортировка и поиск 0 28.04.2007 09:32
реализация B++ на сайте Dok Реализация, исходники, языки 0 30.11.2006 14:36