All pastes #59411 Raw Edit

Something

public text v1 · immutable
#59411 ·published 2006-05-28 20:05 UTC
rendered paste body
program tabela;
uses crt;

var
   i, j, k : integer;
   num_linhas : integer;
   num_cols   : integer;
   bomb_rate  : integer;
   bomb_num   : integer;
   field : array[1..10, 1..10] of integer;
   temp_field : array[1..10, 1..10] of boolean;

{ desenha a tabela }
procedure desenha_tabela(line : integer; col : integer; sp : integer);
var
   i : integer;
   j : integer;
   s : integer;
begin
     writeln;

     for s := 1 to sp do
         write(' ');

     for i := 1 to col do
         write('  ', i, ' ');

         writeln;

     for s := 1 to sp do
         write(' ');

     write(char(218));
     for i := 1 to (col - 1) do
         write(char(196), char(196), char(196), char(194));

     writeln(char(196), char(196), char(196), char(191));

     for j := 1 to line do
     begin
          for s := 1 to sp do
              write(' ');

          for i := 1 to (col + 1) do
          begin
               write(char(179));

               if (i <> col + 1) then
               begin
                    {if (temp_field[j, i] = false) then
                       write('   ')
                    else}
                       write(' ', field[j, i], ' ');
               end;
          end;

          write(j:3);
          writeln;

          if (j <> line) then
          begin
               for s := 1 to sp do
                   write(' ');

               write(char(195));
               for i := 1 to (col - 1) do
               begin
                   write(char(196), char(196), char(196), char(197));
               end;

               writeln(char(196), char(196), char(196), char(180));
          end;
     end;

     for s := 1 to sp do
         write(' ');

     write(char(192));

     for i := 1 to (col - 1) do
         write(char(196), char(196), char(196), char(193));

     writeln(char(196), char(196), char(196), char(217));
end;

{ popula o vetor com bombas aleatoriamente }
procedure random_bombs(bnum : integer; l : integer; c : integer);
var
   c_pos : integer;
   l_pos : integer;
   i : integer;
begin
     randomize;
     for i := 1 to bnum do
     begin
          c_pos := random(c) + 1;
          l_pos := random(l) + 1;

          while (field[l_pos, c_pos] = 9) do
          begin
              c_pos := random(c) + 1;
              l_pos := random(l) + 1;
          end;

          field[l_pos, c_pos] := 9;
     end;
end;

{ programa principal }
begin
     { inicializa a matriz com 0 em tudo }
     for i := 1 to 10 do
         for j := 1 to 10 do
             field[i, j] := 0;

     { inicializa a matriz temporaria com false em tudo,
       pois nenhuma posicao foi aberta até agora }
     for i := 1 to 10 do
         for j := 1 to 10 do
             temp_field[i, j] := false;

     write('Numero de linhas do campo: ');
     readln(num_linhas);

     write('Numero de colunas do campo: ');
     readln(num_cols);

     write('Porcentagem de bombas: ');
     readln(bomb_rate);

     { calcula o numero de bombas no campo }
     bomb_num := round((num_linhas * num_cols) * (bomb_rate / 100));

     writeln('Numero de bombas: ', bomb_num);

     random_bombs(bomb_num, num_linhas, num_cols);
     desenha_tabela(num_linhas, num_cols, 5);

     readln;
end.