Pascal/Turbo Pascal - Loteria de 30 tarjetas con 12 numeros por tarjeta

 
Vista:

Loteria de 30 tarjetas con 12 numeros por tarjeta

Publicado por nEOLOBO (5 intervenciones) el 23/09/2008 22:26:16
O sea, lo uqe queiro hacer es una loteria de 30 tarjetas en cada cual tengo 12 numeros es decir un arreglo bidimencional de 30*12 no son 360 numeros mi problema es que de esos 360 numeros con los cuales peudo rellenar la tarjeta solo puedo usar del 1-54 es decir solo peudo usar 54 numeros repetidos varaias veces entre 360 numeros ya he logrado llenar las tarjetas sin que haya cais una repeticion de valores con este codigo que les muestro a continuacion

program loteria;
uses crt;
var
a,b,c,d,f:integer;
Plantillas: Array[1..12] of integer;
Tarjetas: Array[1..30,1..12] of integer;


Begin
clrscr;
Randomize;
For d:=1 to 30 do
begin
For a:=1 to 12 do
Begin
Tarjetas[d][a]:=Random(54);
For b:=12 to 1 do
if (Tarjetas[d][b] = Tarjetas[d][a]) then Tarjetas[d][a]:=Random(54);
For c:=1 downto 12 do
if (Tarjetas[d][c] = Tarjetas[d][b]) then Tarjetas[d][a]:=Random(54);
end;
end;
For f:=1 to 5 do
for d:=1 to 12 do
Writeln(f,'','',d,' Valor ', Tarjetas[f][d]);
Writeln;
readln;
end.

ahroa el detalle de esto y en el cual me quedo totalmente bloqueado es que si hago 360 numeros por logica tnego que dividir 360/54 (para que me de las veces en que se peude repetir un numero), me da 6.6 lo redondeo a 7 tons como hago para que el progrma me cheque los 12 numeros de cada tarjeta y me diga sabes que ete se repitio 7 veces y ya no lo use en el random ??
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

RE:Loteria de 30 tarjetas con 12 numeros por tarje

Publicado por Neolobo (5 intervenciones) el 24/09/2008 02:44:46
Le hice estos cambios al codigo croe uqe es mas etendible

program loteria;
uses crt;

type
Tarjetas= Array[1..30,1..12] of byte;
Coplar= Array[1..30,1..12] of byte;
Comp= array[1..12] of byte;
var
a,b,c,d,f,g,w,m:integer;
x,y:Tarjetas;
z:Comp;
p:Coplar;

Procedure Rmatriz(c:integer);
Begin
Randomize;
For d:=1 to 30 do
begin
For a:=1 to 12 do
Begin
x[d,a]:=Random(c+1);
y[d,a]:=x[d,a];
end;

end;
end;

Procedure Comparar(x,y:Tarjetas);
begin
For d:=1 to 30 do
Begin
For a:=1 to 12 do
Begin
If (x[d,a] = y[d,a+1]) then x[d,a]:=Random(54+1);
If (y[d,a-1] = x[d,a]) then x[d,a]:=Random(54+1);
End;
For a:=1 downto 12 do
Begin
If (x[d,a] = y[d,a+1]) then x[d,a]:=Random(54+1);
If (y[d,a-1] = x[d,a]) then x[d,a]:=Random(54+1);
End;
End;
End;

Procedure CompTabla(x,y:Tarjetas; z:Comp; p:Coplar);
Begin
w:=w+1;
For c:=1 to 54 do
For d:=1 to 30 do
For a:=1 to 12 do
If x[c,a]=z[c] then w:=w+1;
if w=7 then z[c]:=z[w];
end;


Procedure imatriz(x:Tarjetas);
Begin
for f:=1 to 30 do
Begin
Writeln(f:1);
for d:=1 to 12 do
Begin
Write(x[f,d]:8);
Writeln;
end;
Writeln('----------------');
end;
end;

Procedure Garchivo(x:Tarjetas);
var
ArchText : Text;
Begin
Assign (ArchText,'loteria.txt');
Rewrite(ArchText);
For f:=1 to 30 do
Begin
Writeln(Archtext,f:1);
for d:=1 to 12 do
Begin
Write(Archtext,x[f,d]:8);
Writeln(Archtext);
end;
Writeln(Archtext,'----------------');
end;
Close(ArchText)
end;

Begin
clrscr;
c:=54;
Rmatriz(c);
Comparar(x,y);
imatriz(x);
Garchivo(x);
readln;
end.

Lo unico que me hace falta es que no se puedan repetir lso 7 numeros alguin alguna idea para esto??
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