Ayuda programa de matrices con números aleatorios
Publicado por Javi (2 intervenciones) el 15/12/2021 13:03:36
Buenas, tengo que hacer un ejercicio en el que hay que crear una matriz con números aleatorios y que cada número de la matriz no se repita. Lo único que no se es cómo escribir esa condición. Os dejo el código que he escrito. Gracias de antemano.
{$mode objfpc}{$H-}{$R+}{$T+}{$Q+}{$V+}{$D+}{$X-}{$warnings on}
program unicos;
uses crt;
const
FIlas = 3;
Columnas = 3;
CarasDado = 9;
type
TipoMatriz = array[1..Filas, 1..Columnas] of integer;
function tira_dado(caras_dado: integer): integer;
begin
result := random(caras_dado) + 1;
end;
procedure inicia_matriz(var matriz: TipoMatriz);
var
j, i: integer;
begin
for i := 1 to Filas do
for j := 1 to Columnas do begin
{¿Cómo hago para que no se repitan?}
end;
end;
procedure escribe_matriz(var matriz: TipoMatriz);
var
i, j: integer;
begin
for i := 1 to Filas do begin
for j := 1 to Columnas do
write(matriz[i,j], ' ');
writeln();
end;
end;
function precondicion(caras_dado: integer): boolean;
var
k: integer;
begin
k := Filas * Columnas;
result := (caras_dado >= k);
end;
var
matriz: TipoMatriz;
begin
delay(1000);
randomize;
if precondicion(CarasDado) then begin
inicia_matriz(matriz);
escribe_matriz(matriz);
end
else
writeln('Error');
end.
{$mode objfpc}{$H-}{$R+}{$T+}{$Q+}{$V+}{$D+}{$X-}{$warnings on}
program unicos;
uses crt;
const
FIlas = 3;
Columnas = 3;
CarasDado = 9;
type
TipoMatriz = array[1..Filas, 1..Columnas] of integer;
function tira_dado(caras_dado: integer): integer;
begin
result := random(caras_dado) + 1;
end;
procedure inicia_matriz(var matriz: TipoMatriz);
var
j, i: integer;
begin
for i := 1 to Filas do
for j := 1 to Columnas do begin
{¿Cómo hago para que no se repitan?}
end;
end;
procedure escribe_matriz(var matriz: TipoMatriz);
var
i, j: integer;
begin
for i := 1 to Filas do begin
for j := 1 to Columnas do
write(matriz[i,j], ' ');
writeln();
end;
end;
function precondicion(caras_dado: integer): boolean;
var
k: integer;
begin
k := Filas * Columnas;
result := (caras_dado >= k);
end;
var
matriz: TipoMatriz;
begin
delay(1000);
randomize;
if precondicion(CarasDado) then begin
inicia_matriz(matriz);
escribe_matriz(matriz);
end
else
writeln('Error');
end.
Valora esta pregunta


0