Pascal/Turbo Pascal - Problema con comparacion de numeros de 1 tabla

 
Vista:

Problema con comparacion de numeros de 1 tabla

Publicado por andreuu (3 intervenciones) el 16/06/2011 00:08:24
Hola, estoy haciendo un programa sobre un ranking de equipos, pero el ranking lo tiene que generar el programa, a partir de random. el problema es que al imprimir la lista veo que hay algunas posiciones que no se generan. Hay otro procedimiento que introduce los nombres. Aqui os pongo el programa:

const
n_equips=32;

t_equip=record
nom:string;
fifa:integer;
end;

t_copa=array[1..32]of t_equip;

procedure generar_dades(var c:t_copa);

var
a,i,j:integer;
llista:array[1..n_equips]of integer;

begin
for a:=1 to n_equips do
begin
llista[a]:=random(32)+1;

for i:=a downto 1 do
begin
if llista[a]=llista[i-1] then
begin
repeat
j:=random(32)+1;
until j<>llista[a];
llista[a]:=j;
end;
end;

c[a].fifa:=llista[a];

procedure ranking_fifa(c:t_copa);

var
i,j:integer;
trobat:boolean;

begin

for j:=1 to n_equips do
begin
trobat:=false;
i:=1;
while (i<=n_equips) and (trobat=false) do
begin
if c[i].fifa=j then
begin
writeln('Ranking: ',j,'-->',c[i].nom);
trobat:=true;
end;
i:=i+1;
end;
end;
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

Problema con comparacion de numeros de 1 tabla

Publicado por ramon (2158 intervenciones) el 16/06/2011 18:35:30
{Mira el generador de números aleatorios tiene cambios con relación al tuyo a ver si
te va mejor}

uses
crt;

const
n_equips = 32;
type
t_equip = record
nom : string;
fifa : integer;
end;

t_copa = array[1..32]of t_equip;
var
copa : t_copa;

procedure genera_numeros(var c : t_copa);
var
nuevo, r, toma, num : integer;
listo : boolean;
begin
num := 1;
listo := false;
randomize; {Generamos la semilla de numeros del relo del sistema}
fillchar(c,sizeof(t_copa),0);
repeat
toma := random(45);
for r := 1 to num do
begin
if c[r].fifa = toma then
begin
listo := true;
end;
end;
if listo = true then
begin
repeat
nuevo := random(45);
until nuevo <> toma;
c[num].fifa := nuevo;
listo := false;
end
else
begin
c[num].fifa := toma;
listo := false;
end;
num := num + 1;
until num > n_equips;
end;

procedure ranking_fifa(c : t_copa);
var
i, j : integer;
trobat : boolean;
begin
for j := 1 to n_equips do
begin
trobat := false;
i := 1;
while (i <= n_equips) and (trobat = false) do
begin
if c[i].fifa = j then
begin
writeln(' Ranking: ',j,'-->',c[i].nom);
trobat := true;
end;
i := i + 1;
end;
end;
end;

begin
clrscr;
genera_numeros(copa);
ranking_fifa(copa);
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

Problema con comparacion de numeros de 1 tabla

Publicado por andreuu (3 intervenciones) el 17/06/2011 00:36:30
lo he probado y aun no me crea todos los numeros, hay algunos que no los genera, pero gracias por la ayuda
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

Problema con comparacion de numeros de 1 tabla

Publicado por ramon (2158 intervenciones) el 17/06/2011 16:47:08
Fíjate que puede ser que genere el mismo numero mas de una vez pero los numeros los genera
no octante aumenta el numero de semilla a 65 para mas marjen.

procedure genera_numeros(var c : t_copa);
pon esto al final de este procedimiento y comprueba la salida
for k := 1 to n_equips do
writeln(´k ´,c[k].fifa);
readln;
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

Problema con comparacion de numeros de 1 tabla

Publicado por andreuu (3 intervenciones) el 17/06/2011 23:12:17
gracias era por eso, a veces puede crear el mismo numero y por eso no salen todos, muchas gracias por la ayuda
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

necesito el analisis de un problema

Publicado por kevin (1 intervención) el 16/12/2011 17:33:12
Escribir un algoritmo que calcule el promedio de “n” notas en donde considere las “n-1” notas más altas y elimine la nota más baja.(para pascal)
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

necesito el analisis de un problema

Publicado por ramon (2158 intervenciones) el 17/12/2011 17:21:39
{Esto puede valer}

program notasalu;
uses
crt;
type
alumnos = 0..20;
const
minima : real = 4.8;
var
notas : array[alumnos] of real;
y, cont : integer;
prome, nota : real;

procedure entradas;
var
tecla : char;
numer : string[12];
error, i : integer;
re : real;
begin
cont := 0;
i := 1;
repeat
gotoxy(3,4);write('Nota Alumno N§ ',cont + 1,' = ');
repeat
tecla := readkey;
if tecla in[#48..#57,#46,#44] then
begin
if tecla = #44 then
tecla := #46;
numer[i] := tecla;
numer[0] := chr(i);
gotoxy(22 + i,4);write(numer[i]);
i := i + 1;
if i > 12 then
i := 12;
end;
if tecla = #8 then
begin
i := i - 1;
if i < 1 then
i := 1;
numer[i] := ' ';
numer[0] := chr(i);
gotoxy(22 + i,4);write(numer[i]);
end;
until tecla = #13;
val(numer,re,error);
notas[cont] := re;
i := 1;
cont := cont + 1;
gotoxy(23,4);clreol;
until cont > 4;
end;


begin
clrscr;
gotoxy(5,2);write('***** Entre Notas De Alumnos *****');
entradas;
clrscr;
y := 1;
gotoxy(4,2);write('Los Alumnos Que Superaron La Nota : ',
minima:8:2,' Son');
prome := 0;
t := 0;
for cont := 0 to 5 do
begin
if notas[cont] < minima then
begin
end
else
begin
gotoxy(4,4 + y);write('Nota De Alumno N§ ',cont + 1,' : ',
notas[cont]:8:2);
prome := prome + notas[cont];
y := y + 1;
t := t + 1;
end;
end;
write('El promedio Es : ',prome / t - 1:8:2);
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