Pascal/Turbo Pascal - Ayuda programa de matrices con números aleatorios

 
Vista:

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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 36
Ha aumentado su posición en 4 puestos en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

Ayuda programa de matrices con números aleatorios

Publicado por Armando José (43 intervenciones) el 31/12/2021 11:47:08
(* numeros que no se repita *)

program matriz;

uses crt;
const
fi = 6;
co = 6;
type
matriz = array[1..fi,1..co]
of integer;

var
a : matriz;

function lot(nu:integer):
integer;
begin
lot := random(nu) +1;
end;

function buscar(x:matriz;fila,columna,n:integer): boolean;
var
i, j : byte;
verdad : boolean;
begin
verdad := false;
for i := 1 to fila do
for j := 1 to columna do
if (x[i,j] = n) then
begin
verdad := true;
break ;
end;

buscar := verdad;

end;



procedure llenar(x:matriz;fila,columna:integer);
var
i, j : byte;
solo : integer ;
verdad : boolean ;
begin
randomize;
for i := 1 to fila do
begin
for j := 1 to columna do
begin
verdad := true;
repeat
solo := lot(fila*columna) ;
verdad := buscar(x,fila,columna,solo);

until (verdad = false);
x[i,j] := solo ;

end;

end;
end;



procedure mostrar(x:matriz;fila,columna:integer);
var
i, j : byte;
begin
for i := 1 to fila do
begin
for j := 1 to columna do
begin
write(x[i,j]:3);
end;
writeln;
end;
end;

begin
clrscr;

llenar(a,fi,co);
writeln('matriz con numeros que no se repitan');
writeln;
mostrar(a,fi,co);

readln;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar