PDA

Ver la Versión Completa : Ayuda con programa de resistencias


cesar.zapata
03-01-2013, 20:51:46
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 (http://www.clubdelphi.com/foros/guiaestilo.php)

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
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:

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,


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



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:

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:

Delphi Basics: Conversions Operations
http://www.delphibasics.co.uk/ByFunction.asp?Main=Strings&Sub=Calcs

Delphi Basics: Conversions from
http://www.delphibasics.co.uk/ByFunction.asp?Main=Strings&Sub=ConvsFrom

Delphi Basics: Conversions to
http://www.delphibasics.co.uk/ByFunction.asp?Main=Strings&Sub=ConvsTo

Delphi Basics: Displaying
http://www.delphibasics.co.uk/ByFunction.asp?Main=Strings&Sub=Display


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,


Alguna WEb con ejemplos de algoritmos ?

Revisa estos links:

Tips & Tricks - Greatis Delphi Pages
http://www.greatis.com/delphicb/tips/lib/

Trucomania
http://www.trucomania.org/trucomania/ftesp.html

Delphi Tips
http://www.martinstoeckli.ch/delphi/delphi.html#StringPChar

Delphi About
http://delphi.about.com/

Delphi Basics
http://www.delphibasics.co.uk/

Delphi Programming
http://delphi.wikia.com/wiki/Useful_Sites

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.