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

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

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

 
 Ответить  Открыть новую тему 
> Read
сообщение
Сообщение #1


Я.
****

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

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


Заполнить массив так, чтобы вводимые элементы располагались на одной строчке экрана.
Всегда пользовался Readln, т.к. он работает почему-то так же как и Read.
Препод рассказывает, что типо не так.
Как это можно осуществить без СRT?

Добавлено через 14 мин.
Ну строку разделять на числа - тоже не вариант lol.gif

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


Гость






Цитата
Всегда пользовался Readln, т.к. он работает почему-то так же как и Read.
Неправда. Они работают по-разному. Read не переходит к следующей строке входного файла после прочтения данных.

var
a: array[1 .. 10] of integer;
x: integer;
i, j: integer;
begin
i := 0;
while not eoln do
begin
read(X);
inc(i);
a[i] := X;
end;

for j := 1 to i do
write(a[j]:4);
writeln;
end.
читает столько чисел, сколько есть, до конца строки. Главное - чтоб не вылететь за границы массива.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Я.
****

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

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


С файлами вопросов нет (Обманул, именно в этих целях пользовался smile.gif).

Меня интересует именно экран при вводе данных.

for i := 1 to 2 do read(a[i])

ничем не отличается от
for i := 1 to 2 do readln(a[i])

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(sheka @ 28.09.2010 19:35) *
Заполнить массив так, чтобы введеные элементы располагались на одной строчке экрана.
Sheka, "введенные" или "вводимые"?
В смысле - ввод в одной строке? Ты все же ставь задачу точнее. Я не придираюсь. Тут было как-то хоть ясно из контекста, в другой задаче может и не быть.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Я.
****

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

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


Понял. Исправил.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата
for i := 1 to 2 do read(a[i])

ничем не отличается от
for i := 1 to 2 do readln(a[i])

Да? А по-моему, отличается.

Следи за руками: вариант №2 - "вводим строку 4<пробел><пробел><пробел>8 и жмем на ввод". Что имеешь?
А ничего. Цикл от 1 до 2? Значит, должно быть 2 символа конца строки. Первое число (4) занесено в a[1], второе - проигнорировано, от тебя ожидается ввод еще одного числа вместе с Enter-ом.

Вариант №1 - "вводим строку 4<пробел><пробел><пробел>8 и жмем на ввод". Что имеем? Все прекрасно, цикл закончился, и a[1] и a[2] содержат новые значения. Правда вот буфер клавиатуры почистить не мешает, там остался символ #13, и если ты еще что-то будешь читать, то велика вероятность, что это "что-то" прочитается не совсем так, как ты задумывал, в особенности если это будет строка или символ.

То есть, поведение двух вышеозначенных кусков кода СОВЕРШЕННО разное, одинаковым его даже при очень бурной фантазии нельзя назвать...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(sheka @ 29.09.2010 0:23) *
for i := 1 to 2 do read(a[i])

ничем не отличается от
for i := 1 to 2 do readln(a[i])
Да, Sheka, это ты лажанулся.. smile.gif
К словам volvo добавить особенно нечего, но я пишу, чтобы сказать: понимание именно таких нюансов выводит тебя на уровень "не новичка". Постарайся покрутить это все и разобраться до конца. Особенно, кстати, насчет непочищенного буфера - очень частая ошибка. Сколько тут было вопросов типа: "я поставил ReadLn для задержки, а она не задерживается!" И ставят по десять ReadLn'ов, и честят компилятор за "глюки"..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Я.
****

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

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


Да, действительно.
Чистить буфер так?
Цитата
MemW[Seg0040:$1C]:=MemW[Seg0040:$1A];{уравнять адреса начала и конца буфера}
или так
while keypressed do readkey;

А если я пишу в Делфи, что тогда делать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Злостный любитель
*****

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

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


> MemW[Seg0040:$1C]:=MemW[Seg0040:$1A];
Вай, зачем так сложно?

for i := 1 to 2 do read(a[i]);
readln;



--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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