Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите решить
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
-Ольга-
помогите решить!!! есть программа, которая выводит на весь экран точки произвольного цвета. Необходимо, чтобы вместо точек выводило латинские буквы в произвольном порядке

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.
compiler
Цитата(-Ольга- @ 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.
Гость
спасибо give_rose.gif !!! а не подскажешь еще как сделать, чтобы 'текст' это были разнообразные латинские буквы
compiler
Цитата(Гость @ 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;

если в код не поймешь, задавай вопросы...
volvo
OutTexyXY(X, Y, chr(random(26) + 65));
-Ольга-
СПАСИБО!!! работает! только я не поняла, что значят цифры 26 и 65....... может кто-нибудь сказать
-Ольга-
только буквы теперь опять не цветные
compiler
Цитата(-Ольга- @ 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 мин.
Цитата
только буквы теперь опять не цветные
в каком режиме ты работаешь(текстовый/графический)?
-Ольга-
в графическом режиме
volvo
Так?
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.
-Ольга-
Большое тебе спасибо! я не дописала до конца и мучаюсь "почему не работает?!"
-Ольга-
Так это получилась программа для графического режима, а как сделать, чтобы теперь она работала для текстового режима. И как вывести в текстовом режиме буквы; что используется вместо OutTextXY(random(getmaxx),random(getmaxy),chr(c+65+byte(c>26)*6));
-Ольга-
Так это получилась программа для графического режима, а как сделать, чтобы теперь она работала для текстового режима. И как вывести в текстовом режиме буквы; что используется вместо OutTextXY(random(getmaxx),random(getmaxy),chr(c+65+byte(c>26)*6));
volvo
Ну, например, так:

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.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.