[ Foro de C ]

crear vector sin dimension

16-Aug-2014 00:11
Felipe Navarro Chamaca
2 Respuestas

Hola quisiera saber como poder crear un vector que lea todos los valores que se ingresen hasta que el ultimo valor ingresado sea "0"  para asi poder calcular sus factoriales con el siguiente codigo:

 
#include<stdio.h>
 
int main(){
    int i,numero;
    long factorial = 1;
while(numero<0){
    printf("ingrese un numero: ");
    scanf("%d",&numero);
    if(numero!=0){
    printf("\n%d!= ",numero);
 
    for(i=2;i<=numero;i++)
    {
        factorial *=i;
 
    }
    printf("%1d\n\n",factorial);
    }
}
    return 0;
}
 


de antemano muchas gracias...


17-Aug-2014 00:06
Luis Torres (+12)

Tienes varios errores.

En primer lugar, estás utilizando en una condición (la del while) una variable que no has inicializado previamente, eso es algo muy grave. Deberías leer primero la variable "numero" antes de del ciclo while, si éste valor es mayor que cero, entonces se puede calcular su factorial, caso contrario es imposible.

En segundo lugar, la condición del while es equivocada, porque para poder calcular el factorial "número" debe ser mayor que cero y tú tienes escrito, menor que cero.

En tercer lugar, de haber leído la variable "número" antes del while es necesario volverla a leer AL FINAL del ciclo, después de haber mostrado el factorial del número previamente leído, además tendrás que volver a inicializar "factorial" a 1, cada vez que se vaya a procesar un nuevo número, la inicialización se hace al principio del ciclo. Yo escribí un código y, te lo dejo a continuación:

 
#include <stdio.h>
 
int main(){
   int i, numero;
   long factorial = 1;
 
   printf("Ingrese un numero: ");
   scanf("%d", &numero);
   while (numero > 0)
   {
       factorial = 1;
       for (i=2;i<=numero;i++)
       {
           factorial *= i;
       }
       printf("\nEl factorial es: %d\n\n",factorial);
       printf("Ingrese un numero: ");
       scanf("%d", &numero);
   }
 
   return 0;
}
 


17-Aug-2014 00:15
Felipe Navarro Chamaca

gracias por corregirme esos detalles, como soy nuevo en este tema de la programación no entendía bien como realizar el ciclo, ahora comprendo bien porque no funcionaba el algoritmo :P fue de gran ayuda esto






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)