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

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

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

> Курсор изменяет цифры числа, Интересное задание
сообщение
Сообщение #1


Профи
****

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

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


Доброе время суток. Попалась интересная задачка. Допустим на экране выведено какое - то число (число может быть как целое так и дробное). Задание такое : передвигать под ним курсор, при этом имея возможность исправить любую из цифр, и что самое главное новое число потом будет обрабатываться, то есть программа должна его прочитать и записать под соответствующий тип. Какие идеи ?


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


Гость






Я бы все-таки пользовался первым способом:
uses crt, dos;

type
{
описываем структуру, которую имеет видеопамять
(символ и затем - его атрибут: цвет фона, цвет текста, мигание)
}
R = record
ch: char; attr: byte;
end;

{
Это - массив наложенный на видеопямять,
поэтому ее содержимое можно читать из этого самого массива...

Для упрощения я сделал работу с экраном 25 строк * 80
столбцов и принял за основу цветной режим, но можно сделать
и универсальную функцию...
}
var
VMem: array[1 .. 25, 1 .. 80] of R
absolute $b800:$0000;
var
currx, curry: integer;
s: string;

begin
clrscr;
{ сначала пишем на чистый экран какое-то число }
writeln;
writeln(' 12345 ');

{
потом установим курсор под одну из цифр этого числа
и переместимся по нему вправо, пока не встретим пробел или нулевую позицию экрана.
в этом случае мы достигли начала числа ...
}
gotoxy(4, 2);
currx := wherex; curry := wherey;
while (currx >= 1) and (VMem[curry, currx].ch <> ' ') do dec(currx);
inc(currx, 1);

{ а теперь идем обратно и читаем его в строковую переменную: }
s := '';
while VMem[wherey, currx].ch <> ' ' do begin
s := s + VMem[wherey, currx].Ch;
inc(currx);
end;

{ Вот то число, которое было прочитано! }
gotoxy(10, 10);
writeln('s = ', s);
end.


Я надеюсь перевести строку в число через Val проблем не будет?

Точно так же не должно быть проблем и с перемещением курсора: пользуйся функциями wherex, wherey и gotoxy...

Работает только в Турбо Паскале, FPC даже не мучай - Absolute там не совмещает с адресом, только с другой переменной...
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 





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