IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Ввод длинной строки с клавиатуры, Как ввести строку длиной 1100 символов с клавиатуры
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 559
Пол: Мужской
Реальное имя: Бруно

Репутация: -  10  +


1. Забавное задание, в чём его смысл ?
2. Именно если ввести то просто посимвольно считываешь и потом можно скинуть в массив чаров и вывести.


--------------------
Цитата
Imagination is more important than knowledge.
Albert Einstein
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 231
Пол: Женский

Репутация: -  6  +


Если я не ошибаюсь, такое громадище с клавиатуры ты вряд ли сможешь ввести:ввод с клавиатуры в Паскале имеет буфер, как и всё на свете имеюший определённые границы... yes2.gif так что понапрасну не трудись-лучше работать с файлом, хотя и это несколько неудобно... smile.gif но можно привыкнуть ко всему, вроде smile.gif .Смотри Файлы.

Сообщение отредактировано: Perfez -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата
так что понапрасну не трудись
Кто-то запрещает работать с PChar и посимвольным вводом (через ReadKey)? Нет... Тем более, что нечто подобное (если я не ошибаюсь - для строк до 400 символов) уже спрашивали, попробуй поискать (это к автору темы) ...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





Группа: Пользователи
Сообщений: 2
Пол: Женский

Репутация: -  0  +


Цитата(Tan @ 11.04.2007 14:00) *

1. Забавное задание, в чём его смысл ?
2. Именно если ввести то просто посимвольно считываешь и потом можно скинуть в массив чаров и вывести.

Это часть решения задчки. Из файла считать могу, но такое условие в задаче, чтобы ввод с клавиатуры sad.gif

А как его посимвольно считывать?
Я, например, писала так:
 
var
str1: string;
begin
readLn(str1);



Как можно посимвольно считать?
Или надо readLn внутрь цикла поставить, считывать символы и складывать их в массив длиной 1100?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 559
Пол: Мужской
Реальное имя: Бруно

Репутация: -  10  +



sum:=0;
repeat
ch:=readkey;
inc (sum);
until (ord(ch) = 13) or (sum = 1100); {ENTER}

Ну условие цикла сам под задание подредактируй. А так по идее если ты работать будешь с каждым элементом в отдельности, то создай массив чаров ms : array [1..1100] of char и после чтения пиши туда свой символ. Очень интересно для решения какого задания ты используешь такую операцию, отпиши главное задание если не трудно. Возможно это не лучший метод.

Сообщение отредактировано: Tan -


--------------------
Цитата
Imagination is more important than knowledge.
Albert Einstein
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Можно приспособить вот такой вариант:
{$m 1024,0,65536}
uses dos;
begin
exec(getenv('comspec'),' /c cmd /c copy con test.$$$');
end.

Все введенное будет записано в файл test.$$$. Окончание ввода- Ctrl+Z, Enter. За то в качестве бонуса текст может быть многострочным smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





Группа: Пользователи
Сообщений: 2
Пол: Женский

Репутация: -  0  +


Цитата(Tan @ 11.04.2007 16:05) *


sum:=0;
repeat
ch:=readkey;
inc (sum);
until (ord(ch) = 13) or (sum = 1100); {ENTER}

Ну условие цикла сам под задание подредактируй. А так по идее если ты работать будешь с каждым элементом в отдельности, то создай массив чаров ms : array [1..1100] of char и после чтения пиши туда свой символ. Очень интересно для решения какого задания ты используешь такую операцию, отпиши главное задание если не трудно. Возможно это не лучший метод.


Упс. Запрещено использовать CRT. sad.gif
Что делать, если и файл не использовать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата(Malice @ 11.04.2007 20:45) *

Можно приспособить вот такой вариант:
{$m 1024,0,65536}
uses dos;
begin
exec(getenv('comspec'),' /c cmd /c copy con test.$$$');
end.

Все введенное будет записано в файл test.$$$. Окончание ввода- Ctrl+Z, Enter. За то в качестве бонуса текст может быть многострочным smile.gif

Спасибо!
Все равно вопрос остается открытым: как сделать без записи в файл?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Делай тогда как Tan показал, readkey сделай сам своей функцией на асме. Выглядеть будет примерно так:
function readkey:char; assembler;
asm
xor ax,ax
int 16h
end;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10





Группа: Пользователи
Сообщений: 2
Пол: Мужской

Репутация: -  0  +


На сколько я знаю, максимальная длина строки 255 символов, поэтому, как ни крути, сделать ее такой невозможно. Значит остается только массив из символов длинной 1100 элементов.
Поскольку CRT использовать нельзя, то остается только read. В цикле вводим каждый символ и все...
Цитата
в Паскале имеет буфер, как и всё на свете имеюший определённые границы... так что понапрасну не трудись-лучше работать с файлом

этот буффер и есть файл, причем текстовый, и процедура read без указания файловой переменной читает из файла input.txt, хотя на счет разширения точно сказать не могу.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(tchib @ 15.04.2007 0:17) *

Поскольку CRT использовать нельзя, то остается только read. В цикле вводим каждый символ и все...

Не получится.. Первый же Read(c:char) будет вводить в буфер всю строку и ждать enter-a. После энтера прочитается в "c" первый символ этой строки, следующие read-ы будут брать символы из буфера. Т.к. длина буфера ограничена (127 символов) - длина строки будет таже.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12





Группа: Пользователи
Сообщений: 2
Пол: Мужской

Репутация: -  0  +


так я и не говорю вводить всю строку. Можно просто ввести символ, нажать энтер, и так 1100 разsmile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.04.2024 18:27
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name