Ayuda con PSEINT

Unido
julio 31, 2008
Mensajes
2,775
Karma
822
Ubicación
Venezuela
Buenas amigos, apenas estoy empezando en esto de la informática y lo que me piden es :

Escribir un programa que tome una cantidad m de valores ingresados por el usuario, a cada uno le calcule el factorial e imprima el resultado junto con el número de orden correspondiente.


lo que tengo en PSEINT es:


Código:
Proceso factorial;
    m<-0;num<-0;fact<-0
    Escribir "Ingrese la cantidad de números a calcular el factorial";
    Leer m;
    Para i<-1 Hasta m Hacer
        Escribir "Ingrese el valor-",i;
        Leer num
          fact<-1
          Para i<-1 Hasta num Hacer
            fact<-fact*i
            Escribir "El factorial de-",num,"-es-",fact;
          FinPara
    FinPara
    
 FinProceso
....................

Lo que me termina calculando es el factorial del ultimo numero que introduzco :buf:
 

H.Wesker

H-Wesker
Unido
mayo 12, 2012
Mensajes
43
Karma
4
Ubicación
Nicaragua
[MENTION]SharinganX [/MENTION]

Tenías un error de lógica, para el segundo for estabas usando como variable de nuevo i, por lo tanto, sí por ejemplo tu ponías que te revisara 3 numeros y calculabas por ejemplo el factorial de 6, tu segundo for (al final de recorrerlo) quedaba con el valor de i=6, y por lo tanto al entrar al primer for "i" ya había recorrido más de la cuenta.

Solucion:
Inicializar tu sengundo for con otra variable.

Te dejo el código, funciona a la perfección.

Código:
Proceso factorial
    Escribir "Ingrese la cantidad de números a calcular el factorial: "
    Leer cantidad;
    Para i<-1 Hasta cantidad Hacer
        Escribir "Ingrese el valor ",i,":"
        Leer numero
		fact<-1
		Para h<-1 Hasta numero Hacer
			fact<-fact*h
		FinPara
		Escribir "El factorial de ",numero," es ",fact,"."
		Escribir ""
    FinPara
 FinProceso
Saludos! :eek:lee:
 
Última edición:
Unido
julio 31, 2008
Mensajes
2,775
Karma
822
Ubicación
Venezuela
@H.Wesker dijo:
SharinganX

Tenías un error de lógica, para el segundo for estabas usando como variable de nuevo i, por lo tanto, sí por ejemplo tu ponías que te revisara 3 numeros y calculabas por ejemplo el factorial de 6, tu segundo for (al final de recorrerlo) quedaba con el valor de i=6, y por lo tanto al entrar al primer for "i" ya había recorrido más de la cuenta.

Solucion:
Inicializar tu sengundo for con otra variable.

Te dejo el código, funciona a la perfección.

Código:
Proceso factorial
    Escribir "Ingrese la cantidad de números a calcular el factorial: "
    Leer cantidad;
    Para i<-1 Hasta cantidad Hacer
        Escribir "Ingrese el valor ",i,":"
        Leer numero
        fact<-1
        Para h<-1 Hasta numero Hacer
            fact<-fact*h
        FinPara
        Escribir "El factorial de ",numero," es ",fact,"."
        Escribir ""
    FinPara
 FinProceso
Saludos! :eek:lee:
Tienes razón, gracias:eek:lee:
 
Superior