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.