Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-12-2010
goomba91 goomba91 is offline
Registrado
NULL
 
Registrado: dic 2010
Posts: 9
Poder: 0
goomba91 Va por buen camino
club de futbol

hola,
estoy realizando un programa con delphi 7 sobre un equipo de futbol, en el qual debo hacer un registro de cada uno de los jugadores del equipo, ingresando su nombre, peso, estatura, rendimiento y numero de goles.

El problema me surge cuando se me pide que laaplicacion debe permitir modificar un dato deljugador como por ejemplo el peso, buscando por el nombre...
intuyo que debo utilizar una estructura while/do pero no se mas.
por favor, una ayudita.
Responder Con Cita
  #2  
Antiguo 29-12-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.287
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Hola goomba91, bienvenido a los foros.
Antes de nada te recomiendo que revises la Guía de estilo.

Tu problema es acceder a los datos para poder modificarlos. Antes de seguir lo más importante es que expliques dónde están almacenados esos datos.

¿Records en memoria?
¿Los tienes en una Base de Datos?
¿En un fichero plano en disco?

Después lo lógico es:
(1) Buscar el jugador a modificar; El método variará segun los tengas almacenados (aquí puedes ser que tengas que utilizar un WHILE).
(2) Modificar los datos de ese jugador.
(3) Guardarlos de nuevo si es necesario.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 29-12-2010
goomba91 goomba91 is offline
Registrado
NULL
 
Registrado: dic 2010
Posts: 9
Poder: 0
goomba91 Va por buen camino
dado que no me han enseñado aun a usar bases de datos ni ficheros, intuyo seran records en memoria.
P.D. tambien he considerado usar un procedure o function para ello, pero comobien dices mi problema es acceder a dicha informacion para despues modificarla
Responder Con Cita
  #4  
Antiguo 29-12-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.287
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
En ese caso lo primero que debes hacer es definir la estructura de los records tal y como te han enseñada para almacenar los datos de cada jugador.

Luego debes rellenar los records con datos (PROCESO DE ALTAS);
(1) Pidiendo los datos por pantalla
(2) Realizando una pequeña rutina que rellene unos cuantos datos de ejemplo.

Hay que entender que si los datos no se guardan en disco, cada vez que ejecutes el programa deberás volver a introducir los datos de los jugadores, de ahi que sea bueno tener el punto (2), la rutinilla que te rellene al menos 2 o 3 jugadores para no tener que hacerlo manualmente cada ejecución; eso te ahorarrá tiempo ál hacer pruebas.

Una vez tengas esto, se puede empezar a programar las modificaciones (PROCESO DE MODIFICACION). Se trataría de buscar un jugador y modificar sus datos.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 04-01-2011
goomba91 goomba91 is offline
Registrado
NULL
 
Registrado: dic 2010
Posts: 9
Poder: 0
goomba91 Va por buen camino
ya he realizado el codigo del programa

Código Delphi [-]
program jugador;

{$APPTYPE CONSOLE}

uses
  SysUtils;

Const
Nmax=3;

Type

t_jugador=record
   nombre:string;
   peso:real;
   altura:real;
   rendimiento:real;
   num_gol:integer;
   tiempo: integer;
end;

t_club= Array[1..Nmax] of t_jugador;

var
 i:integer;
 player: t_club;
 x,y:integer;
 rendto:real;

function frend(var n1:integer;var n2:integer):real;
begin (*subprograma que nos determinara el rendimiento *)
   rendto:= (x/y)*100;
end;

begin (*programa principal *)
  for i:=1 to Nmax do
  begin 
    write('Escribe el nombre del jugador: ');
    readln(player[i].nombre);
    write('Escribe el peso del jugador(kg): ');
    readln (player[i].peso);
    write('Escribe la estatura del jugador(m): ');
    readln (player[i].altura);
    write('Escribe el numero de goles marcados: ');
    readln(player[i].num_gol);
    write('Escribe el tiempo jugado en minutos: ');
    readln(player[i].tiempo);
    x:= player[i].num_gol;
    y:= player[i].tiempo;
    frend(x,y);
    write('rendimiento: ',rendto:4:2,' %');
    readln;
  end;
  readln;
end.
pero me surgen las siguientes dudas:
-¿como hago para poder introducir el maximo numero de jugadores que quiera?, antes de empezar a rellenar los datos de cada uno, es decir, pedirlo por pantalla previamente.
-sigo sin saber como modificar un dato, se que deberia buscar por el nombre del jugador y posteriormente por el dato a modificar, pero no se inicia la busqueda ni como modificarlo.

Última edición por ecfisa fecha: 04-01-2011 a las 16:58:27. Razón: etiqueta / identado
Responder Con Cita
  #6  
Antiguo 04-01-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Te hago una observación sobre la funcion frend, no es necesario utilices var en los parámetros
Código Delphi [-]
function frend(n1, n2:integer):Real;
begin
   frend:= (n1/n2)*100;
end;


Sobre tu primera pregunta, creo que podes hacerlo de dos maneras:
1)
Código Delphi [-]
const
  Nmax= 1000; // o lo que gustes
var
  i, Tope: Integer;
  s: string;
begin
  Str(Nmax, s);
  Write('Cuantos jugadores?'+' (Maximo: '+ s +'):');
  Readln(Tope);
  for i:= 1 to Tope do
  ...

2)Pero creo que es un poco mejor finalizar el ingreso cuando se de Intro sin ingresar nada ('')
Código Delphi [-]
var
  player: t_club;
  Ingresados: Integer;
...
var
  x,y: Integer;
  rendto:real;
begin
  Ingresados:= 1;
  write('Nombre del jugador (nada para terminar): ');
  readln(player[Ingresados].nombre);
  while (i < Nmax) and (Player[Ingresados].nombre <> '') do
  begin
    Inc(Ingresados); 
    // pedir demas datos y mostrar resultados
    ...
    write('Nombre del jugador (nada para terminar): ');
    readln(player[Ingresados].nombre);
  end;
  ....
  ...
end.

Sobre tu segunda pregunta podrías hacer una función que te devuelva la posición dentro del arreglo si encuentra el dato,
o cero si no.
Código Delphi [-]
function Buscar(Nombre: string; Num: Integer): Integer;
var
  i,sw: Integer;
begin
  sw:= 0;
  for i:= 1 to Num do
  begin
    writeln(player[i].Nombre+' '+Nombre);
    if Player[i].Nombre = Nombre then
      sw:= i;
  end;
  Buscar:= sw;
end;

Una vez lleno el arreglo, se usaria así:
Código Delphi [-]
...
var
  jugador: string;// nombre a buscar
  Posic: Integer; // posición del dato en el arreglo
begin
  write('Buscar: '); Readln(jugador);
  Posic:= Buscar(Jugador, Ingresados); 
  if Posic > 0 then 
    //  los datos a modificar estarán en Player[Posic]
  ...

Es muy útil el consejo de Neftali si usas datos en memoria. Te va a ahorrar bastante tiempo...

También sería mejor si hicieras un procedimiento/función para el ingreso, otro para modificar, etc.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 04-01-2011 a las 18:19:47.
Responder Con Cita
  #7  
Antiguo 06-01-2011
goomba91 goomba91 is offline
Registrado
NULL
 
Registrado: dic 2010
Posts: 9
Poder: 0
goomba91 Va por buen camino
gracias de antemano, pero tengo una dudilla.

que quieres decir cuando escribes:
Str(Nmax, s);

...
Inc(Ingresados);es decir, ¿para que sirve?
Responder Con Cita
  #8  
Antiguo 06-01-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por goomba91 Ver Mensaje
gracias de antemano, pero tengo una dudilla.

que quieres decir cuando escribes:
Str(Nmax, s);

...
Inc(Ingresados);es decir, ¿para que sirve?
Hola.

Str es un procedimiento de la unit System que convierte una variable numérica a string ('Nmax' en este caso) y la almacena
en 's' de tipo string. En la ayuda de Delphi tenés toda la información. Se podría haber usado IntToStr con el mismo resultado.

La variable Ingresados almacena la cantidad de jugadores ingresados que en este caso, pueden ser menos o la totalidad-1 de
elementos del arreglo pero no más. De ahí que la línea Inc(Ingresados) incrementa la cantidad de jugadores ingresados en 1
en cada ingreso y en el ciclo while se evalúa ( i < Nmax) para que no supere el rango declarado del arreglo (Nmax).

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 06-01-2011 a las 15:37:21.
Responder Con Cita
  #9  
Antiguo 07-01-2011
goomba91 goomba91 is offline
Registrado
NULL
 
Registrado: dic 2010
Posts: 9
Poder: 0
goomba91 Va por buen camino
pero no seria (Ingresados<Nmax) porque sino no le veo sentido dado que no he introducido ningun valor para i
Responder Con Cita
  #10  
Antiguo 14-01-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por goomba91 Ver Mensaje
pero no seria (Ingresados<Nmax) porque sino no le veo sentido dado que no he introducido ningun valor para i
Si, tenés toda la razón.
Disculpá el error, pero escribí el código sin probarlo por que no tenía delphi en ese equipo...

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Delphi Fútbol Club MaMu La Taberna 53 22-03-2008 00:20:51
...genialidades en el futbol... Jure Humor 15 29-02-2008 18:22:35
una de futbol Pedro-Juan Humor 2 05-11-2007 19:56:56
La sexta, futbol y..... userlazarus La Taberna 0 28-02-2007 19:21:33
Futbol en el Cielo gatosoft Humor 0 30-05-2003 22:16:45


La franja horaria es GMT +2. Ahora son las 10:22:30.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi