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

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

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

 
 Ответить  Открыть новую тему 
> Помогите решить, текстовый режим
сообщение
Сообщение #1


Гость






помогите решить!!! есть программа, которая выводит на весь экран точки произвольного цвета. Необходимо, чтобы вместо точек выводило латинские буквы в произвольном порядке

Program L;
uses graph;
var
i,x,y,c:integer;
begin
DetectGraph(x,y);
InitGraph(x,y,'c:\tp7\BGI\');
for i:=1 to 5000 do
begin
x:=Random(640);
y:=Random(480);
c:=Random(15);
PutPixel(x,y,c);
end;
readln;
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Человек
*****

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

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


Цитата(-Ольга- @ 19.02.2008 14:39) *
выводило латинские буквы в произвольном порядке
если работа в текстовом режиме(модуль crt в помощь), то используй:
TextColor(Color : byte) – процедура задает цвет символов Color.

Сonst
{Коды, допустимые для текста и фона}
Black =0; {Черный}
Blue =1; {Синий
Green =2; {Зеленый}
Cyan =3; {Голубой}
Red =4; {Красный}
Maganta =5; {Пурпурный}
Brown =6; {Коричневый}
LightGray =7; {Серый}
{Коды, допустимые только для текста}
DarkGray =8; {Темно-серый}
LightBlue =9; {Ярко-синий}
LightGreen =10; {Ярко-зеленый}
LightCyan =11; {Ярко-голубой}
LightRed =12; {Ярко-красный}
LightMaganta =13; {Ярко-пурпурный}
Yellow =14; {Ярко-желтый}
White =15; {Белый}


GoToXY(X, Y : byte) – процедура перемещает курсор к элементу экрана с заданными координатами X и Y. Если хотя бы одна координата недопустима, процедура не выполняется.
и в конце работы не забудь привести терминал в порядок...

если всё таки в графическом режиме(модуль graph), то
OutTextXY(X, Y, 'текст'), где переменные X, Y типа Integer , а 'текст' типа String – выводит строку 'текст', начиная с точки с координатами X, Y.

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


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


Гость






спасибо give_rose.gif !!! а не подскажешь еще как сделать, чтобы 'текст' это были разнообразные латинские буквы
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Человек
*****

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

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


Цитата(Гость @ 19.02.2008 14:52) *
спасибо give_rose.gif !!! а не подскажешь еще как сделать, чтобы 'текст' это были разнообразные латинские буквы
если кодировка основана на ASCII, то я б использовал следующую процедуру
function getRandLet():char;
var i:integer;
begin
i:=integer(random(52));
if i<26 then i:=i+65 else i:=i+71;
getRandLet:=chr(i);
end;

* в главной программе необходимо прописывать randomize;

если в код не поймешь, задавай вопросы...

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


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






OutTexyXY(X, Y, chr(random(26) + 65));


Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






СПАСИБО!!! работает! только я не поняла, что значят цифры 26 и 65....... может кто-нибудь сказать
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






только буквы теперь опять не цветные
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Человек
*****

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

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


Цитата(-Ольга- @ 19.02.2008 15:20) *
СПАСИБО!!! работает! только я не поняла, что значят цифры 26 и 65....... может кто-нибудь сказать
в кодировках основанных на ASCII, 65 - код первой буквы(<<A>>), а 26 - количество букв в алфавите..
расмотрим функцию подробней
Код
function getRandLet():char;    //функция возвращает символ
var    i:integer;    //служебная переменная, хранит код символа
begin
    i:=integer(random(52));    //в алфавите 26 букв, но есть большие и маленькие,  итого 52
    if i<26
        then     //если буква большая
            i:=i+65    //добавляем 65(код "A")
        else    //буква маленькая
            i:=i+71;    //добавляем 65(код "A") + 6(количество символов между "Z" и "a" )
    getRandLet:=chr(i);    //преобразовываем код в символ
end;


Добавлено через 2 мин.
Цитата
только буквы теперь опять не цветные
в каком режиме ты работаешь(текстовый/графический)?

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


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






в графическом режиме
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Так?
uses graph;
var
gd, gm: integer;
i, rnd: integer;

begin
initgraph(gd, gm, '');
for i := 1 to 20 do begin
setcolor(random(15) + 1);
rnd := random(52);
outtextxy(random(getmaxx), random(getmaxy),
chr(rnd + 65 + byte(rnd > 26) * 6));
end;
readln;
closegraph;
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Большое тебе спасибо! я не дописала до конца и мучаюсь "почему не работает?!"
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Так это получилась программа для графического режима, а как сделать, чтобы теперь она работала для текстового режима. И как вывести в текстовом режиме буквы; что используется вместо OutTextXY(random(getmaxx),random(getmaxy),chr(c+65+byte(c>26)*6));
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






Так это получилась программа для графического режима, а как сделать, чтобы теперь она работала для текстового режима. И как вывести в текстовом режиме буквы; что используется вместо OutTextXY(random(getmaxx),random(getmaxy),chr(c+65+byte(c>26)*6));
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






Ну, например, так:

uses crt;

var
i, rnd: integer;


begin
for i := 1 to 20 do begin
textcolor(random(15) + 1);
rnd := random(52);
gotoxy(random(80) + 1, random(25) + 1);
write(chr(rnd + 65 + byte(rnd > 26) * 6));
end;
readln;
textcolor(lightgray); { <--- Восстанавливаем цвет по умолчанию }
end.
 К началу страницы 
+ Ответить 

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

 





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