Pascal/Turbo Pascal - Progresion

   
Vista:

Progresion

Publicado por Edu004 (3 intervenciones) el 26/10/2007 08:58:35
Saludos a todos. Estoy intentando hacer un programa para determinar si los números de cada línea de un fichero de texto forman una progresión geométrica o no. ¿Alguien me puede ayudar con el procedimiento para comprobar si hay progresion geometrica y saber su razon?.Ej:
fichero.txt

6 12 24 línea 1, hay progresión geométrica de razón: 2

11 8 7 66 99 11 23 línea 2, no hay progresión geométrica

-1 -5 -25 -125 línea 3, hay progresión geométrica de razón: 5

50 70 71 línea 4, no hay progresión geométrica

12 14 16 18 20 22 24 26 27 línea 5, no hay progresión geométrica

-99 línea 6, no hay progresión geométrica
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Progresion

Publicado por Mariano (57 intervenciones) el 26/10/2007 23:36:06
El programa seria asi, yo nada mas me preocupe x verificar que la razon se de entre el primero y el segundo, y entre el segundo y el tercero, x lo que la 5 linea en este programa daria que hay progresion, si lo queres cambiar, lo unico q tenes q hacer es un ciclo while y que vaya comparando de a dos.
Avisaaa si te sirviooo!!!

un abrazoo

Program Progresion;
uses
crt;

const
NL=#13#10;

procedure Analiza(cad:string;var valor:longint;var pos:byte;i:byte);
var
long:byte;
fin:boolean;
cod:integer;
pre:string;
c:byte;
begin
c:=i;
long:=length(cad);
fin:=false;
while (not fin) and (i<=long) do begin
if cad[i] = ' ' then
fin:=true
else
inc(i)
end;
pre:=copy(cad,c,i-c);
val(pre,valor,cod);
pos:=i+1

end;

procedure Abrir(var t:text);
begin
assign(t,'texto.txt');
reset(t)
end;

var
texto:text;
linea:string;
a,pos3,pos1,pos2:byte;
valor1,valor2,valor3:longint;
razon,razon2:integer;
nlinea:integer;
begin
nlinea:=0;
clrscr;
a:=1;
Abrir(texto);
while not eof(texto) do begin
inc(nlinea);
readln(texto,linea);
Analiza(linea,valor1,pos1,a);
Analiza(linea,valor2,pos2,pos1);
Analiza(linea,valor3,pos3,pos2);
razon:=valor2 - valor1;
razon2:=valor3-valor2;
if razon = razon2 then begin
writeln ('En la linea numero ', nlinea, ' hay progresion');
writeln ('La razon es: ',razon:4,NL)
end
else
writeln ('En la linea numero ', nlinea, 'NO hay progresion',NL);
end;
close(texto);
readln
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Progresion

Publicado por Rigal (1 intervención) el 15/11/2007 14:14:54
Yo puedo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Progresion

Publicado por alfredo (1 intervención) el 10/12/2007 16:07:09
Hola Hugo, soy un profesor del departamento de LPSI de la universidad politecnica.

Que sepas que lo vas a tener chungo para aprobar en esta universidad.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar