Псевдографика и способы её применения
    , Способы использования псевдографики в языке Turbo Pascal
  ![]()  | 
Наши проекты:
 Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту  | 
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS | 
| [216.73.216.5] | 
 
 | 
		
  | 
    Псевдографика и способы её применения
    , Способы использования псевдографики в языке Turbo Pascal
  | 
         
         
         
          
           Сообщ.
           #1
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Тут можно рассматривать вопросы, связанные с использованием псевдографики. Насколько я понимаю, псевдографика - это не просто вставка кодов разных символов. Можно организовывать циклы, которые позволят выводить на экран таблицы, рамки, простые рисунки и тд. Для рассмотрения этих вопросов и создается эта тема.   
        
       | 
    
| 
         
         
         
          
           Сообщ.
           #2
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Народ! Очень прошу помочь мне с этой программкой. Объясните, как при помощи псевдографики можно нарисовать табличку (ровную)??? И как нарисовать рамку вокруг окна, где рассказывается про программу? Мне говорили, что это можно как-то сделать при помощи использования процедуры GotoXY. Как??? 
        
      Очень надеюсь на вашу помошь. ![]() ![]() Program telefon_price; uses crt; type  telef=record   kod:integer;   tpm1,tpm2,tpm3,price1,price2,price3:integer;  end;  telef1=record   kod,tpm,ob:integer;   pr1,pr2,pr3:integer;  end; var  a:file of telef;  tel:telef;  res:array[1..20] of telef1;  n,i,j,s,aa,max:integer;  f1:text;  Name:string; begin window (18,7,55,18); textbackground (blue); clrscr; textcolor (yellow); Writeln ('Программа формирования отчета по '); writeln ('телефонным разговорам.'); Writeln ('Внимательно следите за '); writeln ('указаниями программы!!! '); Writeln ('Student work. '); writeln ('All Rights Reserved!!! '); readln; window (1,1,80,25); textbackground(10); clrscr; textcolor(0); gotoxy(15,2); writeln('Лабораторная работа студента '); gotoxy(27,3); writeln('Задание :'); textcolor(4); writeln; writeln(' На телефонном узле в конце каждого квартала складывается на каждого абонента'); writeln('ведомость оплаты междугородных телефонных разговоров на протяжении'); writeln('квартала (3 месяца).'); writeln(' Написать программу, которая вводит начальные данные, выполняет расчеты  '); writeln('выводит на экран и в текстовый файл:'); writeln(' - начальные данные в виде таблицы, где указанные коды городов, с которыми велись'); writeln(' разговоры, общее время разговора с каждым городом за один месяц, стоимость'); writeln(' одной минуты разговора (меняется каждый месяц);'); writeln(' - общая длительность разговоров с каждым городом за квартал;'); writeln('плата за каждый месяц;'); writeln('общая плата за 3 месяца;'); writeln('город с наибльшей платой.'); gotoxy(27,18); textcolor(0); writeln('Требование к введению информации'); textcolor(4); writeln(' - начальные данные вводятся из клавиатуры.'); textcolor(0); writeln; writeln(' Требование к выведению результатов'); textcolor(4); writeln(' - результат выводятся на экран и в текстовый файл .'); textcolor(14); writeln; writeln(' Для продолжения работы программы нажмите ENTER'); readln; clrscr; textcolor(0); writeln(' Требования к структуре программы '); textcolor(4); writeln(' Программа должна состоять из следующих частей:'); writeln(' - выведение заставки с информацией о студенте и задании;'); writeln(' - введение данных (выполняется в диалоговом режиме);'); writeln(' - выведение начальных данных и результатов (на один экран).'); textcolor(0); writeln(' Требования к размещению начальных данных внутри программы '); textcolor(4); writeln(' Начальные данные располагаются в файле, компонентами которого являются записи.'); writeln('Структура каждой записи и типы ее полей выбираются в зависимости от задания.'); textcolor(0); writeln(' Используемые цвета '); textcolor(4); writeln(' - черный(0), красный(4), зеленый(10), желтый(14)'); textcolor(14); gotoxy(18,24); writeln('Для продолжения работы программы нажмите ENTER'); readln; clrscr; assign(a,'telef.dat'); assign(f1,'price.txt'); rewrite(a); rewrite(f1); writeln ('Введите Ф.И.О. клиента');  readln (Name);  writeln (f1,'Прайс за пользование телефоном клиента: ');  write (f1,Name);  writeln ('Введите количество городов 20< ');  readln (n);  for i:=1 to n do  begin   write('Введите код ',i,'-го города: ');   readln(tel.kod);   write('Введите общее время разговоров с городом ',tel.kod,' за 1-й месяц: ');   readln(tel.tpm1);   write('Введите стоимость одной минуты разговоров с городом ',tel.kod,' в 1-ом месяце: ');   readln(tel.price1);   write('Введите общее время разговоров с городом ',tel.kod,' за 2-й месяц: ');   readln(tel.tpm2);   write('Введите стоимость одной минуты разговоров с городом ',tel.kod,' в 2-ом месяце:');   readln(tel.price2);   write('Введите общее время разговоров с городом ',tel.kod,' за 3-й месяц: ');   readln(tel.tpm3);   write('Введите стоимость одной минуты разговоров с городом ',tel.kod,' в 3-ом месяцi: ');   readln(tel.price3);   write(a,tel);  end;  close(a);  reset(a);  s:=1;  while not eof(a) do  begin   read(a,tel);   res[s].kod:=tel.kod;   res[s].tpm:=tel.tpm1+tel.tpm2+tel.tpm3;   res[s].pr1:=tel.tpm1*tel.price1;   res[s].pr2:=tel.tpm2*tel.price2;   res[s].pr3:=tel.tpm3*tel.price3;   res[s].ob:=res[s].pr1+res[s].pr2+res[s].pr3;   s:=s+1;  end;  close(a);  reset(a);  clrscr;   writeln ('|-------|------------|------------|------------|------------|------------|------------|');   writeln ('| Код г.|Общ.в.1-й г.|За м.1-й г.|Общ.в.2-й г.|За мин.2-й г.|Общ.в.3-й г.|За мин.3-й г.|');   writeln ('|-------|------------|------------|------------|------------|------------|------------|');   writeln (f1,'|-------|------------|------------|------------|------------|------------|------------|');   writeln (f1,'| Код г.|Общ.в.1-й г.|За мин.1-й г.|Общ.в.2-й г.|За мин.2-й г.|Общ.в.3-й г.|За мин.3-й г.|');   writeln (f1,'|-------|------------|------------|------------|------------|------------|------------|');  while not eof(a) do  begin   read(a,tel);   writeln ('|',tel.kod,'|',tel.tpm1,'|',tel.price1,'|',tel.tpm2,'|',tel.price2,'|',tel.tpm3,'|',tel.price3,'|');   writeln (f1,'|',tel.kod,'|',tel.tpm1,'|',tel.price1,'|',tel.tpm2,'|',tel.price2,'|',tel.tpm3,'|',tel.price3,'|');  end;  textcolor(14);  writeln('Для продолжения работы программы нажмите любую клавишу');  readln;  clrscr;  writeln('Код города, Общее время разговора за квартал, Плата за месяц, Общая плата');   writeln ('|-------|------------|--------------|--------------|--------------|------------|');   writeln ('| Код г.|Общ.в.р. кв.|Плата за мес.1|Плата за мес.2|Плата за мес.3| Общ.плата  |');   writeln ('|-------|------------|--------------|--------------|--------------|------------|');   writeln(f1,'Код города, Общее время разговора за квартал, Плата за месяц, Общая плата');   writeln (f1,'|-------|------------|--------------|--------------|--------------|------------|');   writeln (f1,'| Код г.|Общ.в.р. кв.|Плата за мес.1|Плата за мес.2|Плата за мес.3| Общ.плата  |');   writeln (f1,'|-------|------------|--------------|--------------|--------------|------------|');  for i:=1 to n do  begin   writeln ('|',res[i].kod,'|',res[i].tpm,'|',res[i].pr1,'|',res[i].pr2,'|',res[i].pr3,'|',res[i].ob,'|');   writeln (f1,'|',res[i].kod,'|',res[i].tpm,'|',res[i].pr1,'|',res[i].pr2,'|',res[i].pr3,'|',res[i].ob,'|');     end;   max:=res[1].ob;  for i:=1 to n-1 do  begin   if res[i+1].ob>max then   begin    max:=res[i+1].ob;    j:=i+1;   end;  end;  writeln('Город с наибольшей платой: ',res[j].kod);  writeln(f1,'Город с наибольшей платой: ',res[j].kod);  writeln('Для прекращения работы программы нажмите любую клавишу');  sound (220);  delay (210);  nosound;  readln;  close (a);  close (f1); end. Прикреплённый файл  asciict1.jpg (61.03 Кбайт, скачиваний: 467)
		 | 
    
| 
         
         
         
          
           Сообщ.
           #3
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          В данном случае тебе GotoXY не нужно, достаточно указать ширину поля вывода, смотри, что ты сделал: 
        
      ![]() ![]()   writeln ('|-------|------------|------------|------------|------------|------------|------------|');   writeln ('| Код г.|Общ.в.1-й г.|За м.1-й г.|Общ.в.2-й г.|За мин.2-й г.|Общ.в.3-й г.|За мин.3-й г.|');   writeln ('|-------|------------|------------|------------|------------|------------|------------|'); , то есть, ширина первой колонки = 7 символов, второй - 12, и так далее... Теперь меняешь следующие по порядку WriteLn-ы, явно указывая в них ширину поля вывода: ![]() ![]()   while not eof(a) do  begin   read(a,tel);   { продолжи сам, я сделал только для первых двух столбцов таблицы... }   writeln ('|',tel.kod:7,'|',tel.tpm1:12,'|',tel.price1,'|',tel.tpm2,'|',tel.price2,'|',tel.tpm3,'|',tel.price3,'|');   writeln (f1,'|',tel.kod,'|',tel.tpm1,'|',tel.price1,'|',tel.tpm2,'|',tel.price2,'|',tel.tpm3,'|',tel.price3,'|');  end; Ну, и осталось заменить '|' на вертикальную черты, и '-' - на горизонтальную... Ты ж сам привел таблицу кодав. Смотришь в нее, ищешь, каков код горизонтальной черты, находишь, что это 196, жмешь Alt (правый), и на цифровой клавиатуре набираешь этот код... Символ вставляется в редактор... Заменяешь все плюсы/минусы на псевдографику, задаешь везде нужный формат вывода, и получаешь красивые таблички...  |