
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.62] |
![]() |
|
Сообщ.
#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. Прикреплённый файл ![]() |
![]() |
Сообщ.
#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 (правый), и на цифровой клавиатуре набираешь этот код... Символ вставляется в редактор... Заменяешь все плюсы/минусы на псевдографику, задаешь везде нужный формат вывода, и получаешь красивые таблички... |