На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Название темы должно быть информативным !
Прежде чем задать вопрос, воспользуйтесь Поиском. и проверьте в FAQ (ЧАВО) Паскаля
Чтобы получить вразумительный ответ, подробно опишите проблему: что надо сделать, что не получается и номер ошибки (если есть), которую выводит компилятор.
Для вставки кода ваших программ используйте, пожалуйста, кнопку СODE=pas или выпадающий список СODE для других языков (подсветка синтаксиса).
[!] Как правильно задавать вопросы | Руководство по языку B.Pascal 7 & Objects/LR | Borland Pascal. Руководство пользователя
Модераторы: volvo877
  
> Псевдографика и способы её применения , Способы использования псевдографики в языке Turbo Pascal
    Тут можно рассматривать вопросы, связанные с использованием псевдографики. Насколько я понимаю, псевдографика - это не просто вставка кодов разных символов. Можно организовывать циклы, которые позволят выводить на экран таблицы, рамки, простые рисунки и тд. Для рассмотрения этих вопросов и создается эта тема.
      Народ! Очень прошу помочь мне с этой программкой. Объясните, как при помощи псевдографики можно нарисовать табличку (ровную)??? И как нарисовать рамку вокруг окна, где рассказывается про программу? Мне говорили, что это можно как-то сделать при помощи использования процедуры GotoXY. Как???
      Очень надеюсь на вашу помошь.

      ExpandedWrap disabled
        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.
      Сообщение отредактировано: Vitalik2388 -

      Прикреплённый файлПрикреплённый файлasciict1.jpg (61.03 Кбайт, скачиваний: 465)
        В данном случае тебе GotoXY не нужно, достаточно указать ширину поля вывода, смотри, что ты сделал:

        ExpandedWrap disabled
            writeln ('|-------|------------|------------|------------|------------|------------|------------|');
            writeln ('| Код г.|Общ.в.1-й г.|За м.1-й г.|Общ.в.2-й г.|За мин.2-й г.|Общ.в.3-й г.|За мин.3-й г.|');
            writeln ('|-------|------------|------------|------------|------------|------------|------------|');

        , то есть, ширина первой колонки = 7 символов, второй - 12, и так далее... Теперь меняешь следующие по порядку WriteLn-ы, явно указывая в них ширину поля вывода:

        ExpandedWrap disabled
            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 (правый), и на цифровой клавиатуре набираешь этот код... Символ вставляется в редактор... Заменяешь все плюсы/минусы на псевдографику, задаешь везде нужный формат вывода, и получаешь красивые таблички...
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,3631 ]   [ 15 queries used ]   [ Generated: 5.08.25, 19:37 GMT ]