Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2011, 18:54   #1
Mariy_19
Новичок
Джуниор
 
Регистрация: 17.12.2011
Сообщений: 6
Восклицание программа для вычерчивания своего имени

Написать программу для вычерчивания на экране своего имени с помощью символа «*».
Mariy_19 вне форума Ответить с цитированием
Старый 18.12.2011, 18:57   #2
badname47
Пользователь
 
Регистрация: 03.12.2011
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Mariy_19 Посмотреть сообщение
Написать программу для вычерчивания на экране своего имени с помощью символа «*».
writeln('******************');
writeln('******************');
...
badname47 вне форума Ответить с цитированием
Старый 19.12.2011, 05:31   #3
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

одна из мыслей.. зделать двумерный массив... в парочку строк... и уйму столбцов...
и для каждой буквы задать свои координаты написания... что бы было более ясно... вспомните инженерную графику на милиметровке... или же тетрис с экраном в котором пиксели - кубики.... для каждой буквы зделать свое написание, в маленькой матрице, строк столько же как и в первой... но столбцов значительно меньше, 4-5 ... матрица для каждой буквы... и затем сканируя введенное имя, заполнять этими маленькими матрицами первую большую... и при выводе попросту проверять значения в матрице и выводить соответсвующий знак (пробел или *).
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 19.12.2011, 06:01   #4
Felian
Пользователь
 
Регистрация: 13.11.2011
Сообщений: 24
По умолчанию

Как вариант - сделать ASCII графику в файле и просто считать его в консоль. Длина строки - 80 символов...
Felian вне форума Ответить с цитированием
Старый 21.12.2011, 09:50   #5
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;
   const
t =
' a    ***       ** **     **   **   ********* **       **b*****      **    *    ******     **     *   ******     c  *****    **     *   **         **     *     *****    '+
'd*******    **     **  **      *  **     **  *******    e*******    **         *****      **         *******    f*******    **         *****      **         **         '+
'g  *****    **         **   **    **     *     *****    h**     **  **     **  *********  **     **  **     **  i   ****        **         **         **        ****    '+
'j   ****        **         **      *  **       ***      k**    **   **  **     ****       **  **     **    **   l**         **         **         **         *******    '+
'm***     ***** *   * ****  * *  ****   *   ****       **n***     ** ** **   ** **  **  ** **   ** ** **     *** o   *****   **       ****       ****       **   *****   '+
'p*****      **   *     *****      **         **         q   *****   **       ****       ****    *  **   *****   r*****      **   *     *****      ** **      **  **     '+
's  ****      **    *      **      *    **      ****     t********      **         **         **         **      u**       ****       ****       ** **     **    *****   '+
'v**       ** **     **   **   **     ** **       ***    w**       ****       ****   *   ** **  *  **    *   *   x**     **   **   **      ***      **   **   **     **  '+
'y**      **  **    **     ****        **         **     z*******        **        **       **        *******    ';

var
name_, temp_:string;
i, y, x, n_str, last_char, l_scr:integer;

begin
l_scr:=6;

while name_<>'exit' do
begin
writeln('vvedite imya');
readln(name_);
name_:= LowerCase(name_);
temp_:='';
writeln;

last_char:=l_scr;//Length(name_) mod 7;

for  n_str:= 0 to Length(name_) div l_scr do
 begin
      if n_str = Length(name_) div l_scr then
       last_char:= Length(name_) mod l_scr ;
   for x:=0 to 4 do
          begin
    for i:=1 to last_char do
       begin
        if pos(name_[i+(n_str*l_scr)],t)>1 then
         temp_:=temp_+copy(t,(pos(name_[i+(n_str*l_scr)],t)+1)+11*x,11)+' '
        else
         temp_:=temp_+'           ';
       end;
  writeln(temp_);
  temp_:='';
        end;
            writeln;
            writeln('---------------------------------');
            writeln;
 end;

end;
end.
Непродумано, неоптимизировано, но работает))

Последний раз редактировалось vovk; 21.12.2011 в 10:31.
vovk вне форума Ответить с цитированием
Старый 21.12.2011, 11:39   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

vovk, да, работает..
жаль только, что только под Delphi/FPC ...
под обычный (TP) паскаль прийдётся переделывать...
А так - забавненько!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.12.2011, 18:50   #7
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
vovk, да, работает..
жаль только, что только под Delphi/FPC ...
под обычный (TP) паскаль прийдётся переделывать...
А так - забавненько!
Точно, забыл про строку, и lowercase;
В турбо паскале должно так сработать)

Код:
program Project1;


uses  crt;
    const
t ='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
my_font: array [1..26] of array [0..4] of string[11] =
(('    ***    ','   ** **   ','  **   **  ',' ********* ','**       **'),
 ('*****      ','**    *    ','******     ','**     *   ','******     '),
 ('  *****    ','**     *   ','**         ','**     *   ','  *****    '),
 ('*******    ','**     **  ','**      *  ','**     **  ','*******    '),
 ('*******    ','**         ','*****      ','**         ','*******    '),
 ('*******    ','**         ','*****      ','**         ','**         '),
 ('  *****    ','**         ','**   **    ','**     *   ','  *****    '),
 ('**     **  ','**     **  ','*********  ','**     **  ','**     **  '),
 ('   ****    ','    **     ','    **     ','    **     ','   ****    '),
 ('   ****    ','    **     ','    **     ',' *  **     ','  ***      '),
 ('**    **   ','**  **     ','****       ','**  **     ','**    **   '),
 ('**         ','**         ','**         ','**         ','*******    '),
 ('***     ***','** *   * **','**  * *  **','**   *   **','**       **'),
 ('***     ** ','** **   ** ','**  **  ** ','**   ** ** ','**     *** '),
 ('   *****   ','**       **','**       **','**       **','   *****   '),
 ('*****      ','**   *     ','*****      ','**         ','**         '),
 ('   *****   ','**       **','**       **','**    *  **','   *****   '),
 ('*****      ','**   *     ','*****      ','** **      ','**  **     '),
 ('  ****     ',' **    *   ','   **      ','*    **    ','  ****     '),
 ('********   ','   **      ','   **      ','   **      ','   **      '),
 ('**       **','**       **','**       **',' **     ** ','   *****   '),
 ('**       **',' **     ** ','  **   **  ','   ** **   ','    ***    '),
 ('**       **','**       **','**   *   **',' **  *  ** ','   *   *   '),
 ('**     **  ',' **   **   ','   ***     ',' **   **   ','**     **  '),
 ('**      ** ',' **    **  ','   ****    ','    **     ','    **     '),
 ('*******    ','    **     ','   **      ',' **        ','*******    '));

var
name_, temp_:string;
i, y, x, n_str, last_char, l_scr:integer;

begin
while name_<>'exit' do

begin
writeln('vvedite imya');
readln(name_);
temp_:='';
writeln;
l_scr:=6;
last_char:=l_scr;


for  n_str:= 0 to Length(name_) div l_scr do
 begin
      if n_str = Length(name_) div l_scr then
       last_char:= Length(name_) mod l_scr ;
   for x:=0 to 4 do
          begin
    for i:=1 to last_char do
       begin
        y:=pos(name_[i+(n_str*l_scr)],t);
         if y>26 then
        y:=y-26;
        if y>0 then
         temp_:=temp_+my_font[y,x]+' '
         else
         temp_:=temp_+'            ';
       end;

  writeln(temp_);
  temp_:='';
        end;
writeln;
writeln('---------------------------------');
writeln;
 end;
end;

end.

ps похоже вопрос отсюда http://www.pascaler.ru/pascal/graphic/3/, и требовалось совсем не это)

Последний раз редактировалось vovk; 22.12.2011 в 14:11.
vovk вне форума Ответить с цитированием
Старый 22.12.2011, 08:59   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от vovk
Точно, забыл про строку, и lowercase;
В турбо паскале должно так сработать)
vovk, ну, коллега, я отнюдь не хотел Вас брать "на слабо", чтобы Вы переписали свой код.
Это же и так заняло у Вас приличное количество Вашего времени...
Но видимо, лень - это не Ваше качество!
Респект!
снимаю шляпу в глубоком почтении.. (плюсовать движок форума уже не даёт... )


Цитата:
ps похоже вопрос отсюда http://www.pascaler.ru/pascal/graphic/3/, и требовалось совсем не это)
ну, в данном контексте (по ссылке) понятно, какое решени ожидается.
Но если задание вырвано из контекста (смотри первый пост) - то там ничего не сказано - в каком режиме должны выводится эти звёздочки, и как это должно быть решено (кстати, я на 100% уверен, что в данной задаче нужно своё имя задать константой из звёздочек, а не писать универсальную процедуру для любого имени, как это сделали Вы. (Вы сделали больше, чем ожидали авторы задачи!)

Да и я не вижу, чтобы TC проявлял интерес к своей теме...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание своего сайта для женского журнала nura812 Помощь студентам 3 31.10.2011 22:45
Создание своего хостинга для SA-MP. VintProg Свободное общение 4 20.08.2011 01:55
Непонятки с переопределением оператора << для своего класса DKOI Общие вопросы C/C++ 1 16.11.2010 00:40
Программа разработки своего шрифта... Altera Софт 2 24.12.2008 22:17