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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2011, 13:08   #1
VoOne
Новичок
Джуниор
 
Регистрация: 20.06.2011
Сообщений: 2
Восклицание Правельное отображение базы даных

Код:
uses crt,graph,dos;

var
gdriver,gmode:integer;
 gd, gm: Integer;
   par: array[1..8, 1..3] of real;
   ribs: array[1..12, 1..2] of integer;
   i: integer;
   ch: char;
   corner : real;
a,b,c,d,j,i1,p,u:integer;
a_1,b_1,c_1:integer;
student:text;
e:char;
mas:array [1..100] of string;
mas_str:array[1..6] of string;
nz:array [1..6] of string;
label st,gr,add,spis,red,add_1;
procedure draw;
var
   x1, x2, y1, y2: integer;
   ver1, ver2: integer;
begin
   for i := 1 to 12 do begin
   ver1 := ribs[i,1];
   ver2 := ribs[i,2];
   x1 := round(par[ver1,1])+320;
   y1 := 240-round(par[ver1,2]);
   x2 := round(par[ver2,1])+320;
   y2 := 240-round(par[ver2,2]);
   line(x1,y1,x2,y2);
  end;
end;


procedure turnOX(corner: real);
var
   y,z: real;
begin
   for i:=1 to 8 do Begin
       y:=par[i,2];
       z:=par[i,3];
       par[i,2]:=y*cos(corner)-z*sin(corner);
       par[i,3]:=y*sin(corner)+z*cos(corner);
   end;
end;

procedure turnOY(corner: real);
var
   x,z: real;
begin
   for i:=1 to 8 do begin
       x:=par[i,1];
       z:=par[i,3];
       par[i,1]:=x*cos(corner)+z*sin(corner);
       par[i,3]:=-x*sin(corner)+z*cos(corner);
   end;
end;

procedure turnOZ(corner: real);
var
   x,y: real;
begin
   for i:=1 to 8 do begin
       x:=par[i,1];
       y:=par[i,2];
       par[i,1]:=x*cos(corner)-y*sin(corner);
       par[i,2]:=x*sin(corner)+y*cos(corner);
   end;
end;
begin
st:    clrscr;
    gdriver:= detect;
    initgraph (gdriver,gmode,'');
    setcolor (green);
    a:=238; b:=32; c:=378; d:=53;
 while e<>#27 do begin
    cleardevice;
    clearviewport;

    rectangle (1,1,639,479);
    outtextxy (240,40,'1)');
    outtextxy (260,40,'Graphics');
    outtextxy (240,60,'2)');
    outtextxy (260,60,'Add student');
    outtextxy (240,80,'3)');
    outtextxy (260,80,'Student list');
    outtextxy (240,100,'4)');
    outtextxy (260,100,'Exit');
    rectangle (a,b,c,d);
    e:=readkey;
    if e=#80 then begin if b < 92 then begin
    b:=b+20; d:=d+20;
    end;
    end;
    if e = #72 then begin b:=b-20; d:=d-20;
    if b<32 then begin b:=32; d:=53;
    end;
    end;
    if e=#13 then
    if b=92 then begin  closegraph; end else if b=32 then goto gr else
    if b =52 then goto add else if b = 72 then goto spis;
    e:=#0;
    end;

 gr: clearviewport;
 e:=#0;
  while e =#0 do begin



c_1:=15;
  begin
   par[1,1]:=0;    par[1,2]:=0;    par[1,3]:=0;
   par[2,1]:=0;    par[2,2]:=110;  par[2,3]:=0;
   par[3,1]:=175;  par[3,2]:=110;  par[3,3]:=0;
   par[4,1]:=175;  par[4,2]:=0;    par[4,3]:=0;
   par[5,1]:=0;    par[5,2]:=0;    par[5,3]:=150;
   par[6,1]:=0;    par[6,2]:=110;  par[6,3]:=150;
   par[7,1]:=175;  par[7,2]:=110;  par[7,3]:=150;
   par[8,1]:=175;  par[8,2]:=0;    par[8,3]:=150;

   ribs[1,1]:=1;   ribs[1,2]:=2;
   ribs[2,1]:=2;   ribs[2,2]:=3;
   ribs[3,1]:=3;   ribs[3,2]:=4;
   ribs[4,1]:=4;   ribs[4,2]:=1;
   ribs[5,1]:=5;   ribs[5,2]:=6;
   ribs[6,1]:=6;   ribs[6,2]:=7;
   ribs[7,1]:=7;   ribs[7,2]:=8;
   ribs[8,1]:=8;   ribs[8,2]:=5;
   ribs[9,1]:=1;   ribs[9,2]:=5;
   ribs[10,1]:=2;  ribs[10,2]:=6;
   ribs[11,1]:=3;  ribs[11,2]:=7;
   ribs[12,1]:=4;  ribs[12,2]:=8;


   gd := VGA;
   gm := VGAHi;
   InitGraph(gd, gm, '../bgi');

   If GraphResult <> grOk then
      Halt(1);

   turnOX(pi/12);
   turnOY(pi/12);
   turnOZ(pi/12);
   While ch<>#27 do begin
      ClearDevice;
      Draw;
      OuttextXY(10,450,'Press <1>-<6> for rotation, <7>-<9> for reflection');
      OuttextXY(10,465,'Press <0> to Exit');
      ch:=readkey;
      Case ch Of
         '1': turnOX(pi/15);
         '4': turnOX(-pi/15);
         '2': turnOY(pi/15);
         '5': turnOY(-pi/15);
         '3': turnOZ(pi/15);
         '6': turnOZ(-pi/15);
         '0': goto st;
      end;
   end;
   closegraph;
end;
add: closegraph;
mas[1]:='Name';
mas[2]:='Surname';
mas[3]:='date of birth';
mas[4]:='Group';
mas[5]:='Speciality';
mas[6]:='Course';
i1:=0;
e:=#0;
while e<>#32 do begin
inc(i1);
writeln ('Enter the ',mas[i1]);
readln (mas_str[i1]);
assign (student,'student.txt');
 append (student);
writeln (student, mas_str[i1]);
close (student);
if i1=6 then begin i1:=0;
writeln ('Added');
writeln ('Continue? (Y or N)');
readln (e);
if e='n' then goto st;
end;
end;
spis: closegraph;
e:=#0;
i1:=0;
assign (student,'student.txt');
reset (student);
 writeln ('Name  | Surname | Date of birth |  Group  | Speciality |  Course');
while not EOF(student) do begin

inc (i1);
readln (student, mas_str[i1]);

write (mas_str[i1],'  |   ');
if i1=6 then begin i1:=0;
writeln ('');
end;
end;
close (student);
writeln ('');
writeln ('Back to press <Enter>');
e:=readkey;
goto st;
end;
end.
VoOne вне форума Ответить с цитированием
Старый 20.06.2011, 13:09   #2
VoOne
Новичок
Джуниор
 
Регистрация: 20.06.2011
Сообщений: 2
По умолчанию

продолжение:

в ней существует некая база даных студентов (через масив все значения записываются в файл student.txt). Также в ней существует вывод уже существующей базы даных, но там нарушено построение то есть криво отображаются столбики.

Вопрос вот в чем: напишите код который бы проверял количество символов и ставилась недостающее количество пробелов
VoOne вне форума Ответить с цитированием
Старый 20.06.2011, 14:35   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

в начале программы (в секции объявления)
Код:
const
  outWidth : array[1..6] of integer = ( 6, 9, 15, 9, 12, 10);
секция вывода:
Код:
  spis: 
    closegraph;
    e := #0;
    i1 := 0;
    assign(student, 'student.txt');
    reset(student);
    writeln('Name  | Surname | Date of birth |  Group  | Speciality |  Course  |');
    while not EOF(student) do begin
      inc(i1);
      readln(student, mas_str[i1]);
      if not Eof(student) then
        write(mas_str[i1]: outWidth[i1], '|');
      if i1 = 6 then begin i1 := 0;
        writeln('');
      end;
    end;
    close(student);
    writeln('');
    writeln('Back to press <Enter>');
    e := readkey;
    goto st;

p.s. и кто же Вас учил так код писать?!!
Запутанно, ненаглядно, ненадёжно, негибко, плюс ещё крутое использование меток и Goto... я бы такую работу не принял!..
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
База даных MAZADA БД в Delphi 3 06.11.2010 01:56
Отображение знаками после выборки из базы Kapitann PHP 10 31.10.2010 16:58
База даных xakkkkker Паскаль, Turbo Pascal, PascalABC.NET 1 16.04.2010 00:05
Отображение информации из базы данных (Delphi) flame33 Помощь студентам 6 13.12.2009 21:24