Prograsion geométrica
Buenos días, tengo otro pequeño problemilla con un programa sobre si hay progresión geométrica o no de una serie de números. El programa funciona correctamente, lo único que me han comentado que tengo que cambiar la cabecera del subprograma ProgGeomet ¿me podrías ayudar?
Program Progresion(F, Output);
VAR contLin,numAnt,numAct,razAnt,razAct:Integer;
F:text;
EsProg:Boolean;
Procedure ProgGeomet(var F:text; var numAnt,numAct:integer; Var razAnt:integer;var EsProg:boolean; var contLin:integer);
{El subprograma toma los valores de los componentes del fichero y calcula o establece la razon geometrica si la hay de cada una de las lineas.
Utiliza variables de entrada y salida}
Var num:integer;
BEGIN
Read(F,num);
If Eoln(F) then
EsProg:=false
else
Begin
EsProg:=true;
Read(F,numAct);
RazAnt:=numAct div num;
End;
contLin:=contLin+1;
(*comparacion*)
While not eoln (F) and Esprog do
Begin
num:=numAct;
Read (F,numAct);
If numAct <> num*razAnt then EsProg:=false
End
END;
Procedure ProcesarLinea(EsProg:boolean; razAnt,contLin:integer);
{Recibe una variable Boolean a partir de la cual escribe los resultados
calculados anteriormente.Utiliza variables de entrada}
BEGIN
if EsProg then
writeln('linea ',contLin,', hay progresion geometrica de razon: ', razAnt)
else
writeln('linea ',contLin,', no hay progresion geometrica.');
Readln(F)
END;
BEGIN (*Programa Principal*)
contLin:=0;
Esprog:=false;
assign (F,'C:\P1\datosp1b.txt');
Reset(F);
while not eof (F) do
BEGIN
ProgGeomet(F,numAnt,numAct,razAnt,Esprog,contLin);
ProcesarLinea(EsProg,razAnt,conTLin)
END
END.
Gracias
Program Progresion(F, Output);
VAR contLin,numAnt,numAct,razAnt,razAct:Integer;
F:text;
EsProg:Boolean;
Procedure ProgGeomet(var F:text; var numAnt,numAct:integer; Var razAnt:integer;var EsProg:boolean; var contLin:integer);
{El subprograma toma los valores de los componentes del fichero y calcula o establece la razon geometrica si la hay de cada una de las lineas.
Utiliza variables de entrada y salida}
Var num:integer;
BEGIN
Read(F,num);
If Eoln(F) then
EsProg:=false
else
Begin
EsProg:=true;
Read(F,numAct);
RazAnt:=numAct div num;
End;
contLin:=contLin+1;
(*comparacion*)
While not eoln (F) and Esprog do
Begin
num:=numAct;
Read (F,numAct);
If numAct <> num*razAnt then EsProg:=false
End
END;
Procedure ProcesarLinea(EsProg:boolean; razAnt,contLin:integer);
{Recibe una variable Boolean a partir de la cual escribe los resultados
calculados anteriormente.Utiliza variables de entrada}
BEGIN
if EsProg then
writeln('linea ',contLin,', hay progresion geometrica de razon: ', razAnt)
else
writeln('linea ',contLin,', no hay progresion geometrica.');
Readln(F)
END;
BEGIN (*Programa Principal*)
contLin:=0;
Esprog:=false;
assign (F,'C:\P1\datosp1b.txt');
Reset(F);
while not eof (F) do
BEGIN
ProgGeomet(F,numAnt,numAct,razAnt,Esprog,contLin);
ProcesarLinea(EsProg,razAnt,conTLin)
END
END.
Gracias
1 respuesta
Respuesta de elrata
1