Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda con programa de resistencias (https://www.clubdelphi.com/foros/showthread.php?t=81920)

cesar.zapata 03-01-2013 20:51:46

Ayuda con programa de resistencias
 
Hola soy nuevo en programacion delphi y me han enviado este trabajo para la universidad .
Alguien que me heche una mano ?
Cada semana el jefe de producción decidirá un número máximo de resistencias a
controlar (numMaxRe = S5) y sus valores (en kOhm). Por ejemplo: 1kOhm, 4,7 kOhm,
1000 kOhm (equivalente 1MOhm). En este caso, 3 valores diferentes.
2. Se desea realizar los controles todos los días de la semana (podéis imaginar 1 a 5).
Así, durante la semana, cada día se extraerán muestras de cada una de las resistencias tipo de
la semana y entrarán los valores medidos.
Al final de la semana se suele ∙ licitarán los informes correspondientes.
En definitiva, se trata de hacer una memoria donde se incluya:
1. Diseño de la estructura de datos
2. Definir un tipo tDadesQualitat que incluirá todas del datos de la semana.
3. Diseñar y escribir acciones para:
a. Inicializar la estructura cada semana, admiten "cuántas" resistencias
examinarán esta semana (entre 1 y 5) y sus valores. Acción en forma de
procedure pInicialitzaEstructura. Este procedimiento también inicializará a
cero los contadores de datos entradas de cada resistencia.
b. Acción en forma de procedure para añadir a la estructura global un valor medido
de un tipo de resistencia y un día (por ejemplo valor nominal = 4,7. / día = 3 /
valor medido = 4,9). Si el valor nominal no existe debería dar un MSG
de error. Se trata del procedure pAfegirDada
c. Acción en forma de procedure que recibe una estructura, un día y un valor nominal
y devuelve el valor max, min y promedio. Procedure pDadesDia.
d. Acción en forma de función que dado un día y un valor nominal de resistencia,
llama a pDadesDia y devuelve la tolerancia de esa resistencia en ese día.
fToleranciaDia

MAXIUM 03-01-2013 21:02:50

Saludos Cesar,

Cuentame, ¿que es lo que estudias?

cloayza 04-01-2013 03:16:37

Y la consulta cual es?...

Ya que aquí no se realizan las tareas de nadie...

Date una vuelta por la Guía de estilo

Saludos cordiales

Casimiro Notevi 04-01-2013 12:00:27

Muy interesante ese trabajo, supongo que ya lo tienes casi terminado y hay algunas cositas que no van bien, pues pon el código que lo veamos y explica el problema o la duda que tengas, así se te podrá ayudar.

cesar.zapata 06-01-2013 18:55:20

La consulta es que el profesor nos ha pedido que cuando introducimos los datos sean en datos de STRING y cuando estos datos sean validados se conviertan el NUMEROS REALES
seria como una procedure pero no cuando hago la procedure no me responde el programa. Algun consejo ?

Casimiro Notevi 06-01-2013 19:50:40

Pon el código fuente, que lo veamos.

cesar.zapata 06-01-2013 22:35:33

1 Archivos Adjunto(s)
Esto es lo que tengo avanzado ..
pero aun tengo q organizar lo del tema de la entrada de datos por STRING
En definitiva, es tracta de fer una memòria on s’inclogui:
1. Disseny de l’estructura de dades
2. Definir un tipus tDadesQualitat que ha d’incloure totes del dades de la setmana.
3. Dissenyar i escriure accions per tal de:
a. Inicialitzar l’estructura cada setmana, admeten “quantes” resistències
s’examinaran aquesta setmana (entre 1 i 5) i els seus valors. Acció en forma de
procedure pInicialitzaEstructura. Aquest procediment també inicialitzarà a
zero els comptadors de dades entrades de cada resistència.
b. Acció en forma de procedure per afegir a l’estructura global un valor mesurat**
d’un tipus de resistència**i un dia (per exemple valor nominal = 4,7./ dia = 3/
valor mesurat = 4,9). Si el valor nominal no existeix hauria de donar un MSG
d’error. Es tracta del procedure pAfegirDada
c. Acció en forma de procedure**que rep una estructura, un dia i un valor nominal
i torna el**valor max, min i promig. Procedure pDadesDia.
d. Acció en forma de funció que donat un dia i un valor nominal de resistència,
crida a pDadesDia i torna la tolerància d’aquella resistència en aquell dia.
fToleranciaDia.
PD NO PIDO QUE ME HAGAIS EL DPR , SOLO QUE SI TENEIS TIEMPO ME HECHEIS UNA MANO CON LO DE INTRODUCIR LOS DATOS CON STRINGS.
GRACIAS

Casimiro Notevi 06-01-2013 22:48:29

Puedes poner aquí el código, no hace falta un un archivo adjunto. Lo copio y lo pego:

Código Delphi [-]
 program eix4s13VERSIONOK; 
 
{$APPTYPE CONSOLE} 
 
uses 
  SysUtils; 
 
CONST 
     nMAx = 100; 
     marca = -1; 
     nominalMax=10000; 
TYPE 
 
    tnumMostres = 1..nMax; 
    tmostres = ARRAY[tnumMostres] OF REAL; 
    tMostradia =  RECORD 
                    nCont: 0..nMax; 
                    dades: tMostres; 
 
                     END; 
    Tindex=1..nominalMax; 
    tLlista=ARRAY [TIndex]of REAL ; 
 
 
 VAR 
      mevaLlista: tMostradia; 
      miLlista:TLlista; 
     tolerancia,max, min: REAL; 
      numNominal:TLlista; 
   // ----------------------------------------- 
    PROCEDURE LlegirLlista( OUT unaLlista:tMostradia); 
     VAR 
            mostres, i: integer; 
      BEGIN 
       i:=0 ; 
           REPEAT 
            Write('- Entri una mostra i premi ENTER: ',i+1:3,'= '); 
            Readln(mostres); 
              IF mostres <> marca 
               THEN 
                BEGIN 
                  i:= i+1; 
                  unaLlista.dades[i]:= mostres; 
                END; 
           UNTIL (mostres = marca) OR (i=nMAx); 
           unaLlista.nCont:=i; 
            writeln('>  Memoria llena presione ENTER   <'); readln; 
 
      END; 
    // ------------------------------------------- 
    PROCEDURE MostrarLlista (unaLlista: tMostradia); 
      VAR i:INTEGER; 
        BEGIN 
           i:=1; 
        FOR i:=1 TO mevaLlista.nCont 
             DO 
               BEGIN 
                    Writeln('Mostra ', i:3, '=', mevaLlista.dades[i]:6:2); 
 
               END; 
               i:= i +1  ; 
 
        END; 
    // --------------------------------------------- 
       FUNCTION fPromig(unaLlista:tMostradia): REAL; 
           VAR 
        i: INTEGER; 
        s: REAL; 
          BEGIN 
            i:=1; 
            s:=0; 
          FOR i:=1 TO unaLlista.nCont 
            DO 
 
             s:= s + unaLlista.dades[i]; 
 
 
            i:=i+1; 
 
           RESULT:=(s/unaLlista.nCont); 
 
    END; 
 
    // --------------------------------------------- 
       PROCEDURE pMaxMin(unaLlista:tMostradia; OUT unMAX, unMIN: REAL); 
          VAR 
            i:INTEGER; 
 
         BEGIN 
            i:=1; 
 
          FOR i:=1 TO unaLlista.nCont 
          DO 
            BEGIN 
             IF unaLlista.dades[i] < unMIN 
            THEN 
              unMIN:= unaLlista.dades[i] 
            ELSE 
             IF unaLlista.dades[i] > unMAX 
              THEN 
               unMAX:= unaLlista.dades[i]; 
 
             END; 
             i:= i+1 ; 
        END; 
 
    // ------------------------------------------ 
 
        FUNCTION fTolerancia (unaLlista:tMostradia):real; 
        var 
          tol, tolmax,tolmin,max,min:real; 
 
 
 
          begin 
 
          pMaxMin(unaLlista,max,min); 
          tolmax:=abs(unaresist-max); 
          tolmin:=abs(unaresist-min); 
          if tolmax > tolmin 
           THEN 
           tol:=tolmax 
           else 
            tol:=tolmin; 
            fTolerancia:=tol; 
            end; 
 
    // --------------------------------------------- 
 // REeordar que "mevaLlista" és una variable GLOBAL (MEVA !!!) 
 
begin 
  Writeln('ALUMNO:CESAR ZAPATA'); 
  Writeln('PROFESOR : FERRAN VIRGOS'); 
  Writeln('GRUPO : T44'); 
  Writeln('                                '); 
  Writeln('Programa que registra muestras y  '); 
  Writeln('da el calculo  promedio, un  maxim i un minimo'); 
  writeln; 
  Writeln('# Introduce las muestras hasta un maximo de ',nMAx,' registros #'); 
  Writeln('# Para finalizar la introduccion de notas poner una nota con el valor: ',marca,' #'); 
  writeln; 
 
  LlegirLlista ( mevaLlista ); 
 
  Writeln; Writeln ('MUESTRAS') ; 
 
  MostrarLlista (  mevaLlista ); 
 
 
  // aqui deixem espai per les crides a funció fpromig i PROCEDURE pMinMax 
 
  Writeln; Writeln('el promedio  es: ' ,fPromig(mevaLlista):6:2); 
 
  pMaxMin(mevaLlista, max, min); 
 
  Writeln ('El Max es: ', max:6:2,' i el Min es: ', min:6:2); 
   
 
   tolerancia:=(ftolerancia(mevaLlista))/100; 
 
  Writeln('Y para finalizar mostramos la tolerancia :',tolerancia:8:4); 
 
 
  // ------------------------------------------ 
 
//  FINAL  ---------------------------------------------------------- 
    Writeln; 
    Writeln; 
    Writeln('GRACIAS POR USAR ESTE PROGRAMA '); Writeln; 
    Write('Prem ENTER per sortir'); 
    Readln; 
end.

Casimiro Notevi 06-01-2013 22:52:01

La verdad es que no he entendido el problema que tienes con lo de "introducir los datos con strings"

nlsgarcia 07-01-2013 00:17:07

cesar.zapata,

Cita:

Empezado por cesar.zapata
La consulta es que el profesor nos ha pedido que cuando introducimos los datos sean en datos de STRING y cuando estos datos sean validados se conviertan el NUMEROS REALES

Cita:

Empezado por cesar.zapata
NO PIDO QUE ME HAGAIS EL DPR , SOLO QUE SI TENEIS TIEMPO ME HECHEIS UNA MANO CON LO DE INTRODUCIR LOS DATOS CON STRINGS

Revisa este código:
Código Delphi [-]
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils, Dialogs;

type
   TData = record
      Fecha : Integer;
      Data1 : String;
      Data2 : Integer;
      Data3 : Double;
   end;

var
   Data : Array of TData;
   Input : String;
   CountData : Integer;
   i : Integer;

procedure LoadData;
begin

   Write('Cantidad de Datos a Ingresar: ');
   Readln(Input);
   CountData := StrToInt(Input);

   SetLength(Data,CountData);

   for i := 0 to CountData-1 do
   begin

      Write('Input Fecha en formato AAAAMMDD: ');
      Readln(Input);
      Data[i].Fecha := StrToInt(Input);

      Write('Input Data1 (String): ');
      Readln(Input);
      Data[i].Data1 := Input;

      Write('Input Data2 (Integer): ');
      Readln(Input);
      Data[i].Data2 := StrToInt(Input);

      Write('Input Data3 (Float): ');
      Readln(Input);
      Data[i].Data3 := StrToFloat(Input);

   end;

end;

begin
   LoadData;
end.
El código anterior permite cargar N datos por medio de una variable String y posteriormente asignar dichos valores a variables en un arreglo de registros con sus tipos correspondientes por medio de funciones de conversión. Quizás puedas aplicar la idea general a tu proyecto.

Revisa estos links:
Espero sea útil :)

Nelson.

MAXIUM 07-01-2013 00:39:40

Eso es lo otro, ¿que tipos de datos han estudiado o te permiten usar?. Lo pregunto por si no te han pasado el uso de arreglos, no te permitan hacerlo.

Cuando estudiante, nos pidieron harcer un video juego (me toco el Arcanoid...). Como no me pasaron los punteros, tuve que arreglarmelas con registros y arreglos (hasta me hice un editor de niveles).

Lo mismo me ocurrio antes de eso en otro trabajo (un calendario en pantalla). Como no me pasaron arreglos, me las ingeníe usando string como tales (Mes[x] por ejemplo).

La idea fue magistral y funciono a la perfección. Lo malo es que la profesora era muy ignorante, ni siquiera sabia programar, todo lo evaluaba a base de una platilla hecha por otro estudiante y si no calzaba te daba mala calificación. Así fue como me reprobo el trabajo con un "no supe lo que hiciste aquí...).

cesar.zapata 07-01-2013 11:07:28

Muchas gracias ! Señores de verdad a todos los que me habeis aportado algo , estoy terminando de hacer el algoritmo principal , estaremos en contacto.

cesar.zapata 07-01-2013 11:40:09

Alguna WEb con ejemplos de algoritmos ?

Casimiro Notevi 07-01-2013 11:49:47

¿Qué parte no has entendido?

cesar.zapata 07-01-2013 11:53:38

Tengo un problema por que ahora me piden que con lo que tengo hecho , es decir el calculo de maximo , minimo , y promedio , hago un nuevo programa con una serie de lecturas de resistencias , pero a la vez me piden que añada la fecha de cada analitica de esas resistencias .. y ya directamente no se como empezar

nlsgarcia 07-01-2013 18:51:27

cesar.zapata,

Cita:

Empezado por cesar.zapata
Alguna WEb con ejemplos de algoritmos ?

Revisa estos links:
Cita:

Empezado por cesar.zapata
Tengo un problema por que ahora me piden que con lo que tengo hecho , es decir el calculo de maximo , minimo , y promedio , hago un nuevo programa con una serie de lecturas de resistencias , pero a la vez me piden que añada la fecha de cada analitica de esas resistencias

Revisa el ejemplo que te sugerí en el Mensaje 10, es una forma general de manejo de data que se puede adaptar a tu proyecto.

Espero sea útil :)

Nelson.


La franja horaria es GMT +2. Ahora son las 05:05:27.

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