Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Нужно срочно сделать меню для программы

41K
13 мая 2009 года
Prewior
11 / / 26.02.2009
Здравствуйте, помогите пожалуйста, нужно срочно сделать меню для программы. В меню должны быть 2 пункта:
1. Работа самой программы
2. Выход.
Заранее спасибо, буду очень благодарен за помощь.
Вот и сам програмный код:

Код:
Program 1;
uses crt;
const nmax=20;
var A,D,U:array[1..nmax,1..nmax]of integer;
    ka,la,kd,ld,i,j,r:integer;
begin
clrscr;
randomize;
writeln('Razmery matricy A:');
repeat
write('Kolichestvo strok ka=');readln(ka);
until (ka>0)and(ka<=nmax);
repeat
write('Kolichestvo stolbcov la=');readln(la);
until (la>0)and(la<=nmax);
writeln('Razmery matricy D:');
repeat
write('Kolichestvo strok kd=');readln(kd);
until (kd>0)and(kd<=nmax);
repeat
write('Kolichestvo stolbcov ld=');readln(ld);
until (ld>0)and(ld<=nmax)and(ld=ka); {количество столбцов второй матрицы должно быть равно количеству строк первой матрицы}
writeln('Matrica A:');
for i:=1 to ka do
   begin
     for j:=1 to la do
       begin
         A[i,j]:=random(9)+1;
         write(A[i,j]:3);
       end;
     writeln;
   end;
readln;
writeln('Matrica D:');
for i:=1 to kd do
   begin
     for j:=1 to ld do
       begin
         D[i,j]:=random(9)+1;
         write(D[i,j]:3);
       end;
     writeln;
   end;
readln;
for r:=1 to ka do
for j:=1 to ld do
   begin
     U[r,j]:=0;
     for i:=1 to la do
       begin
         U[r,j]:=U[r,j]+A[r,i]*D[i,j];
       end;
   end;
writeln('Matrica U=A*D:');
for i:=1 to ka do
    begin
      for j:=1 to ld do
      write(U[i,j]:5);
      writeln;
    end;
readln;
end.
44K
13 мая 2009 года
OCTAGRAM
30 / / 11.03.2009
Цитата: Prewior
Здравствуйте, помогите пожалуйста, нужно срочно сделать меню для программы. В меню должны быть 2 пункта:
1. Работа самой программы
2. Выход.
Заранее спасибо, буду очень благодарен за помощь.



Код:
uses crt;
const nmax=20;
var A,D,U:array[1..nmax,1..nmax]of integer;
    ka,la,kd,ld,i,j,r:integer;

function menu : Integer;
var
  menuitems : array[1 .. 5] of string;
  menuitemcount : integer;
  menucuritem : integer;

  row1, col1, row2, col2 : integer;
  i, j, maxlen : integer;

begin
  menuitems[1] := 'Работа самой программы';
  menuitems[2] := 'Выход';
  menuitemcount := 2;
  menucuritem := 1;

  row1 := 7; row2 := row1 + menuitemcount + 2 - 1;
  maxlen := 0;
  for i := 1 to menuitemcount do
    if length(menuitems) > maxlen then
      maxlen := length(menuitems);
  col1 := 40 - ((maxlen + 4) div 2);
  col2 := col1 + maxlen + 4 - 1;

  clrscr;
  repeat
    textbackground(blue);
    textcolor(lightgray);
    gotoxy(col1, row1);
    write(chr($da));
    for i := 1 to col2 - col1 - 1 do
      write(chr($c4));
    write(chr($bf));
    for j := 1 to row2 - row1 - 1 do
    begin
      gotoxy(col1, row1 + j);
      textbackground(blue);
      textcolor(lightgray);
      write(chr($b3));
      if j = menucuritem then
      begin
        textbackground(lightgray);
        textcolor(blue);
      end else
      begin
        textbackground(blue);
        textcolor(lightgray);
      end;
      write(' ', menuitems[j]);
      for i := length(menuitems[j]) + 1 + 1 to col2 - col1 - 1 do
        write(' ');
      textbackground(blue);
      textcolor(lightgray);
      write(chr($b3));
    end;
    textbackground(blue);
    textcolor(lightgray);
    gotoxy(col1, row2);
    write(chr($c0));
    for i := 1 to col2 - col1 - 1 do
      write(chr($c4));
    write(chr($d9));

    gotoxy(col1 + 1, row1 + menucuritem);

    case readkey of
      #27 : { Escape }
       begin menu := 0; break; end;
      #13 : { Enter }
       begin menu := menucuritem; break; end;
      #0 :
       case readkey of
          'H' :
            if menucuritem > 1 then
              menucuritem := menucuritem - 1;
          'P' :
            if menucuritem < menuitemcount then
              menucuritem := menucuritem + 1;
        end;
    end;
  until False;

  textbackground(black);
  textcolor(lightgray);
  clrscr;
end;

begin
  if menu <> 1 then exit;
  randomize;
  writeln('Размеры матрицы A:');
  repeat
    write('Количество строк ka=');readln(ka);
  until (ka>0)and(ka<=nmax);
  repeat
    write('Количество столбцов la=');readln(la);
  until (la>0)and(la<=nmax);
  writeln('Размеры матрицы D:');
  repeat
    write('Количество строк kd=');readln(kd);
  until (kd>0)and(kd<=nmax);
  repeat
    write('Количество столбцов ld=');readln(ld);
  until (ld>0)and(ld<=nmax)and(ld=ka);
  {количество столбцов второй матрицы должно быть равно
    количеству строк первой матрицы}
  writeln('Матрица A:');
  for i:=1 to ka do
    begin
      for j:=1 to la do
        begin
          A[i,j]:=random(9)+1;
          write(A[i,j]:3);
        end;
      writeln;
    end;
  readln;
  writeln('Матрица D:');
  for i:=1 to kd do
    begin
      for j:=1 to ld do
        begin
          D[i,j]:=random(9)+1;
          write(D[i,j]:3);
        end;
      writeln;
    end;
  readln;
  for r:=1 to ka do
    for j:=1 to ld do
      begin
        U[r,j]:=0;
        for i:=1 to la do
          begin
            U[r,j]:=U[r,j]+A[r,i]*D[i,j];
          end;
      end;
  writeln('Матрица U=A*D:');
  for i:=1 to ka do
    begin
      for j:=1 to ld do
        write(U[i,j]:5);
      writeln;
    end;
  readln;
end.
41K
13 мая 2009 года
Prewior
11 / / 26.02.2009
Большое спасибо!
А можно сделать чтобы когда заходил в меню, чтобы фон был синего цвета, и кнопки розмещились не по вентру, а вверху 1 кнопка вверху с левой стороны, п арпавая кнопка вверху с правой стороны, и чтобы они были больше крупного размера, и их отступ сверху был хотябы 2 см.
Заранее спасибо.
44K
14 мая 2009 года
OCTAGRAM
30 / / 11.03.2009
Код:
uses crt;
const nmax=20;
var A,D,U:array[1..nmax,1..nmax]of integer;
    ka,la,kd,ld,i,j,r:integer;

procedure drawbox(x1, y1, x2, y2 : integer;
  forecolor, backcolor, innerfore, innerback : integer);
var i, j : integer;
begin
  textbackground(backcolor);
  textcolor(forecolor);
  gotoxy(x1, y1);
  write(chr($da));
  for i := 1 to x2 - x1 - 1 do
    write(chr($c4));
  write(chr($bf));

  for j := y1 + 1 to y2 - 1 do
  begin
    gotoxy(x1, j);
    write(chr($b3));
    textbackground(innerback);
    textcolor(innerfore);
    for i := 1 to x2 - x1 - 1 do
      write(' ');
    textbackground(backcolor);
    textcolor(forecolor);
    write(chr($b3));
  end;

  gotoxy(x1, y2);
  write(chr($c0));
  for i := 1 to x2 - x1 - 1 do
    write(chr($c4));
  write(chr($d9));
end;

function menu : Integer;
var
  menucuritem, menuitemcount : integer;
  forecolor, backcolor, innerfore, innerback : integer;
  cursx, cursy : integer;
begin
  menucuritem := 1;
  menuitemcount := 2;

  textbackground(blue);

  clrscr;
  repeat
    if menucuritem = 1 then
    begin
      forecolor := red;
      backcolor := lightgray;
      innerfore := blue;
      innerback := lightgray;
    end else
    begin
      forecolor := lightgray;
      backcolor := blue;
      innerfore := lightgray;
      innerback := blue;
    end;

    drawbox(4, 4, 15, 8, forecolor, backcolor, innerfore, innerback);
    textbackground(innerback);
    textcolor(innerfore);
    gotoxy(7, 6); write('Запуск');
    if menucuritem = 1 then begin cursx := 6; cursy := 6; end;

    if menucuritem = 2 then
    begin
      forecolor := red;
      backcolor := lightgray;
      innerfore := blue;
      innerback := lightgray;
    end else
    begin
      forecolor := lightgray;
      backcolor := blue;
      innerfore := lightgray;
      innerback := blue;
    end;

    drawbox(66, 4, 76, 8, forecolor, backcolor, innerfore, innerback);
    textbackground(innerback);
    textcolor(innerfore);
    gotoxy(69, 6); write('Выход');
    if menucuritem = 2 then begin cursx := 68; cursy := 6; end;

    gotoxy(cursx, cursy);

    case readkey of
      #27 : { Escape }
       begin menu := 0; break; end;
      #13 : { Enter }
       begin menu := menucuritem; break; end;
      #0 :
       case readkey of
          'H', 'K' :
            if menucuritem > 1 then
              menucuritem := menucuritem - 1;
          'P', 'M' :
            if menucuritem < menuitemcount then
              menucuritem := menucuritem + 1;
        end;
    end;
  until False;

  textbackground(black);
  textcolor(lightgray);
  clrscr;
end;

begin
  if menu <> 1 then exit;
  randomize;
  writeln('Размеры матрицы A:');
  repeat
    write('Количество строк ka=');readln(ka);
  until (ka>0)and(ka<=nmax);
  repeat
    write('Количество столбцов la=');readln(la);
  until (la>0)and(la<=nmax);
  writeln('Размеры матрицы D:');
  repeat
    write('Количество строк kd=');readln(kd);
  until (kd>0)and(kd<=nmax);
  repeat
    write('Количество столбцов ld=');readln(ld);
  until (ld>0)and(ld<=nmax)and(ld=ka);
  {количество столбцов второй матрицы должно быть равно
    количеству строк первой матрицы}
  writeln('Матрица A:');
  for i:=1 to ka do
    begin
      for j:=1 to la do
        begin
          A[i,j]:=random(9)+1;
          write(A[i,j]:3);
        end;
      writeln;
    end;
  readln;
  writeln('Матрица D:');
  for i:=1 to kd do
    begin
      for j:=1 to ld do
        begin
          D[i,j]:=random(9)+1;
          write(D[i,j]:3);
        end;
      writeln;
    end;
  readln;
  for r:=1 to ka do
    for j:=1 to ld do
      begin
        U[r,j]:=0;
        for i:=1 to la do
          begin
            U[r,j]:=U[r,j]+A[r,i]*D[i,j];
          end;
      end;
  writeln('Матрица U=A*D:');
  for i:=1 to ka do
    begin
      for j:=1 to ld do
        write(U[i,j]:5);
      writeln;
    end;
  readln;
end.
41K
14 мая 2009 года
Prewior
11 / / 26.02.2009
Огромное спасибо!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог