Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-05-2012
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

Pensándolo bién... no voy a ser haragán, aquí tenés el código completo:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    btnPromedio: TButton;
    procedure FormCreate(Sender: TObject);
    procedure EditExit(Sender: TObject);
    procedure btnPromedioClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation  {$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.OnExit:= EditExit;
  Edit2.OnExit:= EditExit;
  Edit3.OnExit:= EditExit;
  Edit4.OnExit:= EditExit;
  Edit5.OnExit:= EditExit;
  Edit6.OnExit:= EditExit;
end;

procedure TForm1.EditExit(Sender: TObject);
var
  cd: Double;
begin
  with Sender as TEdit do
  begin
    if not TryStrToFloat(Text, cd) then
    begin
      ShowMessage('Error en la nota ingresada en ' + Name);      
      SetFocus
    end
  end
end;

procedure TForm1.btnPromedioClick(Sender: TObject);
var
  Prom: Double;
begin
  Prom:= (StrToFloat(Edit1.Text)+StrToFloat(Edit2.Text)+
          StrToFloat(Edit3.Text)+StrToFloat(Edit4.Text)+
          StrToFloat(Edit5.Text)+StrToFloat(Edit6.Text)) / 6;
  ShowMessage(Format('El promedio es: %8.2f',[Prom]));
end;

end.
Lo único que tenés que hacer es asignar FormCreate al evento OnCreate de Form1.


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #2  
Antiguo 18-05-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por ecfisa Ver Mensaje
Hola

Pensándolo bién... no voy a ser haragán, aquí tenés el código completo:
Ojo: tu código no toma en cuenta la posibilidad de dejar vacío un Edit.

// Saludos
Responder Con Cita
  #3  
Antiguo 18-05-2012
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 roman Ver Mensaje
Ojo: tu código no toma en cuenta la posibilidad de dejar vacío un Edit.

// Saludos
Hola roman.

Bueno, eso es por que consideré que dejar vacío un edit es un error. Una nota debería ser algún valor numérico...

Saludos.
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 18-05-2012 a las 17:55:54. Razón: corregir sintáxis
Responder Con Cita
  #4  
Antiguo 18-05-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Claro, pero el poder dejar vacíos algunos Edits es justo la razón por la que alenbebote abrió el hilo:

Cita:
Empezado por alenbebote
el programa si me funciona, pero el profesor dice que tambien saque el promedio de por ejemplo 3 edits solamente
y lo corroboró en el mensaje #3:

Cita:
Empezado por alenbebote
mi profesor me dijo que no me faltaba mucho, realmente no se demasiado-- es que el profesor dijo que el puede rellenar el edit 3 con el 5 y con el 6 osea que seria c3+c5+c6 / 3 pero no se como hacer eso
// Saludos
Responder Con Cita
  #5  
Antiguo 18-05-2012
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 roman.

Pues tenes razón, no había reparado en eso... En ese caso solamente habría que cambiar la línea:
Código Delphi [-]
   if not TryStrToFloat(Text, cd) then

Por:
Código Delphi [-]
  if not (TryStrToFloat(Text, cd) or (Text = '')) then

Saludos.

Edito: Y casi me olvido!!!, también el procedimiento asociado al botón:
Código Delphi [-]
procedure TForm1.btnPromedioClick(Sender: TObject);
var
  Prom: Double;
begin
  Prom:= (StrToFloatDef(Edit1.Text,0) + StrToFloatDef(Edit2.Text,0) +
          StrToFloatDef(Edit3.Text,0) + StrToFloatDef(Edit4.Text,0) +
          StrToFloatDef(Edit5.Text,0) + StrToFloatDef(Edit6.Text,0))  /  6;
  ShowMessage(Format('El promedio es: %8.2f',[Prom]));
end;
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 18-05-2012 a las 18:36:57.
Responder Con Cita
  #6  
Antiguo 18-05-2012
Avatar de champy
champy champy is offline
Miembro
 
Registrado: sep 2003
Ubicación: Alicante, España
Posts: 75
Poder: 21
champy Va por buen camino
Arrow

Me parece que le estamos liando más que ayudando. ¿Que tal algo más simplificado en el evento OnClick del Button1?


Código Delphi [-]
Procedure Form1.Button1.OnClick(Sender: TObject);
var
   nota1, nota2, nota3, nota4, nota5, nota6: Integer; 
   NumeroDeExamenes : Integer;
   NotaPromedio : Double;
begin

If Edit1.Text <> '' then //Si el Edit1 tiene algo escrito...
begin
    NumeroDeExamenes := NumeroDeExamenes +1; // sumo 1 a NúmeroDeExamenes 
    Nota1 := StrToint(Edit1.Text); //y guardo su valor en Nota1
end;

 //Lo mismo con todos los demas
If Edit2.Text <> '' then
begin
    NumeroDeExamenes := NumeroDeExamenes +1;
    Nota2 := StrToint(Edit2.Text);
end;

If Edit3.Text <> '' then 
begin
    NumeroDeExamenes := NumeroDeExamenes +1;
    Nota3 := StrToint(Edit3.Text);
end;

If Edit4.Text <> '' then 
begin
    NumeroDeExamenes := NumeroDeExamenes +1;
    Nota4 := StrToint(Edit4.Text);
end;

If Edit5.Text <> '' then 
begin
    NumeroDeExamenes := NumeroDeExamenes +1;
    Nota5 := StrToint(Edit5.Text);
end;

If Edit6.Text <> '' then 
begin
    NumeroDeExamenes := NumeroDeExamenes +1;
    Nota6 := StrToint(Edit6.Text);
end;

//Calculamos el promedio
NotaPromedio := (Nota1 + Nota2 + Nota3 + Nota4 + Nota5 + Nota6) / NumeroDeExamenes

//y mensaje en pantalla mostrando el resultado
ShowMessage(FormatFloat('#0.0', NotaPromedio));


end;

De esta forma puedes sacar el promedio de los 6 examenes, de 3, ó de 5 si te da la gana, solo tiene en cuenta aquellos que tienen algo escrito

Última edición por champy fecha: 18-05-2012 a las 18:29:34.
Responder Con Cita
  #7  
Antiguo 18-05-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por champy Ver Mensaje
Me parece que le estamos liando más que ayudando. ¿Que tal algo más simplificado en el evento OnClick del Button1?
Estoy de acuerdo. Lo que pones va más acorde a lo que él ya tenía programado. De ahí puede partir para agregar las validaciones que le han indicado. Lo que sí, en el código que pones habría que inicializar a ceros las variables Nota1, Nota2, etc, para no afectar el promedio con posibles valores basura que tengan.

// Saludos
Responder Con Cita
  #8  
Antiguo 21-05-2012
alenbebote alenbebote is offline
Registrado
NULL
 
Registrado: may 2012
Posts: 9
Poder: 0
alenbebote Va por buen camino
Cita:
Empezado por champy Ver Mensaje
Me parece que le estamos liando más que ayudando. ¿Que tal algo más simplificado en el evento OnClick del Button1?


Código Delphi [-]
Procedure Form1.Button1.OnClick(Sender: TObject);
var
   nota1, nota2, nota3, nota4, nota5, nota6: Integer; 
   NumeroDeExamenes : Integer;
   NotaPromedio : Double;
begin

If Edit1.Text <> '' then //Si el Edit1 tiene algo escrito...
begin
    NumeroDeExamenes := NumeroDeExamenes +1; // sumo 1 a NúmeroDeExamenes 
    Nota1 := StrToint(Edit1.Text); //y guardo su valor en Nota1
end;

 //Lo mismo con todos los demas
If Edit2.Text <> '' then
begin
    NumeroDeExamenes := NumeroDeExamenes +1;
    Nota2 := StrToint(Edit2.Text);
end;

If Edit3.Text <> '' then 
begin
    NumeroDeExamenes := NumeroDeExamenes +1;
    Nota3 := StrToint(Edit3.Text);
end;

If Edit4.Text <> '' then 
begin
    NumeroDeExamenes := NumeroDeExamenes +1;
    Nota4 := StrToint(Edit4.Text);
end;

If Edit5.Text <> '' then 
begin
    NumeroDeExamenes := NumeroDeExamenes +1;
    Nota5 := StrToint(Edit5.Text);
end;

If Edit6.Text <> '' then 
begin
    NumeroDeExamenes := NumeroDeExamenes +1;
    Nota6 := StrToint(Edit6.Text);
end;

//Calculamos el promedio
NotaPromedio := (Nota1 + Nota2 + Nota3 + Nota4 + Nota5 + Nota6) / NumeroDeExamenes

//y mensaje en pantalla mostrando el resultado
ShowMessage(FormatFloat('#0.0', NotaPromedio));


end;

De esta forma puedes sacar el promedio de los 6 examenes, de 3, ó de 5 si te da la gana, solo tiene en cuenta aquellos que tienen algo escrito
Ya puse el codigo al parecer si funciona pero me marca error en ShowMessage(FormatFloat('#0.0', NotaPromedio)); en la parte de showmessage pero al parecer si funciona que puedo hacerle muchas gracias eh intentando cambiar el nombre de las variables y tambien que mande el mensaje a un memo pero me sigue marcando el error que podra ser gracias
Responder Con Cita
  #9  
Antiguo 21-05-2012
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.

Bueno, si no vamos a ser exquisitos con las comprobaciones y sólo importan aquellos Edits en que se ingresó un dato válido, basta con que hagas:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(Format('%8.2f',
    [(StrToFloatDef(Edit1.Text,0)+StrToFloatDef(Edit2.Text,0)+
      StrToFloatDef(Edit3.Text,0)+StrToFloatDef(Edit4.Text,0)+
      StrToFloatDef(Edit5.Text,0)+StrToFloatDef(Edit6.Text,0))/6]));
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 21-05-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

Bueno, si no vamos a ser exquisitos con las comprobaciones y sólo importan aquellos Edits en que se ingresó un dato válido, basta con que hagas:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(Format('%8.2f',
    [(StrToFloatDef(Edit1.Text,0)+StrToFloatDef(Edit2.Text,0)+
      StrToFloatDef(Edit3.Text,0)+StrToFloatDef(Edit4.Text,0)+
      StrToFloatDef(Edit5.Text,0)+StrToFloatDef(Edit6.Text,0))/6]));
end;

Saludos.
Pedro no. Así no funciona: siempre estarías promediando ceros con los valores no llenados. No es lo mismo esto:

Código:
(10 + 10 + 10) / 3
que esto:

Código:
(10 + 10 + 10 + 0 + 0 + 0) / 6
En el primer caso tomas el promedio de las tres calificaciones asentadas mientras que en el segundo proporcionas cero a las no asentadas. ¡Imagínate! ¡En lugar de diez le pones 5!

// Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Promedio.. digitos primos .. luisito2011 Varios 3 07-05-2011 02:54:02
Promedio de fechas Pancholp1986 MySQL 6 23-03-2011 15:34:29
cálculo de promedio en delphi ??? Trident OOP 8 24-09-2010 20:18:40
promedio velezbunzl Varios 12 17-03-2009 00:07:32
Sacar el promedio o media en sql ? juangabriel1786 SQL 4 04-12-2008 23:33:28


La franja horaria es GMT +2. Ahora son las 17:00:23.


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