ADVERTENCIA: LOS SIGUIENTES ALGORITMO SE ENTREGA "COMO SON" ("AS IS") SiN GARANTIA DE NINGUN TIPO. DEBE REALIZAR LAS VERIFICACIONES CORRESPONDIENTES ANTES DE EMPLEARLOS PARA CUALQUIER FIN. SOLO TIENEN UNA FINALIDAD EDUCATIVA.

viernes, 2 de noviembre de 2012

Ejemplo de Algoritmo para evaluar expresiones polinomicas (PseInt)


SubProceso potencia <- Elevar ( n, m )
Definir potencia como entero;
Definir i como entero;
potencia <- 1;
Para i <- 1 Hasta m con Paso 1 Hacer
potencia <- potencia*n;
FinPara
FinSubProceso

SubProceso numero <- ANumero (n)
Definir numero como entero;

Si n = "0" Entonces
numero <- 0;
FinSi
Si n = "1" Entonces
numero <- 1;
FinSi
Si n = "2" Entonces
numero <- 2;
FinSi
Si n = "3" Entonces
numero <- 3;
FinSi
Si n = "4" Entonces
numero <- 4;
FinSi
Si n = "5" Entonces
numero <- 5;
FinSi
Si n = "6" Entonces
numero <- 6;
FinSi
Si n = "7" Entonces
numero <- 7;
FinSi
Si n = "8" Entonces
numero <- 8;
FinSi
Si n = "9" Entonces
numero <- 9;
FinSi

FinSubProceso



Proceso CalculaValorPolinomio

Definir coeficientes como entero;
Definir exponentes como entero;
Definir polinomio como cadena;
Definir len como entero;
Definir digito como logico;
Definir numero como entero;
Definir ic como entero;
Definir ie como entero;
Definir sig como entero;
Definir termino como entero;
Definir terminos como entero;
Definir i como entero;
Definir cad como cadena;
Definir resultado como cadena;
Definir resultador como real;
Definir minimo como entero;
Definir maximo como entero;
Definir valortmp como entero;
Definir j como entero;

Escribir "Ingresar un polinomio de coeficientes enteros y exponentes enteros, en orden descendente segun el grado de los terminos. Ejemplo 2*x + 1:";
Leer polinomio;


Dimension coeficientes[1000];
Dimension exponentes[1000];

len <- longitud (polinomio);

digito <- falso;
ic <- 0;
ie <- 0;
sig <- 1;
terminos <- 0;

Para i<- 0 Hasta len - 1 Con Paso 1 Hacer
cad <- SUBCADENA (polinomio,i,i);

Si cad = "0" | cad = "1" | cad = "2" | cad = "3" | cad = "4" | cad = "5" | cad = "6" | cad = "7" | cad = "8" | cad = "9" Entonces
Si digito Entonces
numero <- numero*10 + ANumero (cad);
Sino
digito <- verdadero;
numero <- ANumero(cad);
FinSi
FinSi
Si cad = "x" | cad = "X" Entonces
Si digito Entonces
coeficientes[ic] <- numero*sig;
ic <- ic + 1;
digito <- falso;
Sino
coeficientes[ic] <- sig;
ic <- ic + 1;
digito <- falso;
FinSi

FinSi
Si cad = "+" Entonces
Si digito Entonces
exponentes[ie] <- numero*sig;
ie <- ie + 1;
digito <- falso;
SiNo
exponentes[ie] <- sig;
ie <- ie + 1;
digito <- falso;
FinSi
sig <- 1;
FinSi
Si cad = "-" Entonces
Si digito Entonces
exponentes[ie] <- numero*sig;
ie <- ie + 1;
sig <- 1;
digito <- falso;
SiNo
exponentes[ie] <- sig;
ie <- ie + 1;
digito <- falso;
FinSi
sig <- -1;
FinSi
FinPara

Si digito Entonces
coeficientes[ic] <- numero*sig;
ic <- ic + 1;
digito <- falso;
FinSi

Escribir "Ingrese numero ENTERO correspondiente al valor minimo del rango inclusive: ";
Leer minimo;

Escribir "Ingrese numero ENTERO correspondiente al valor minimo del rango inclusive: ";
Leer maximo;

Para i <-minimo Hasta maximo Con Paso 1 Hacer
resultador <- 0;
Para j <- 0 Hasta ic - 1 Hacer
Si j < ie Entonces
valortmp <- coeficientes[j]*Elevar (i,exponentes[j]);
resultador <- resultador + valortmp;
Sino
resultador <- resultador + coeficientes[j];
FinSi
FinPara
Escribir "Polinomio evaluado en ",i," = ",resultador;

FinPara


FinProceso

No hay comentarios:

Publicar un comentario