No he conseguido solucion :( AYUDAAA!!!!

mrpolo
12 de Mayo del 2004
Hola a todos.. tengo un problema con un programa sencillo en donde tengo que calcular el factorial cualquiera dado por el usuario, pero el problema esta en que si el usuario por error en vez de introducir un numero entero me introduce una letra o un caracter, el programa en vez de trancarse deberia decir que no se permiten letras ni caracteres que no sean enteros para el cálculo... Aqui les pongo el algoritmo en VC++ para ver en donde pongo esas sentencias que me faltan para completar mi programa. Gracias de Antemano.

#include<iostream.h>
#include<ctype.h>
#include<process.h>
void main()
{
int a, c=1, d, n;
char o;
do{
system("cls");
cout<<"Introducir numero ";
cin>>a;
if(a<0){cout<<"Los numeros negativos no tienen factorial n";}
if(a==0){cout<<"El factorial de 0 es 1 n";}
if(a>0){
for(n=1;n<=a;n++){
c=c*n;
}
cout<<"El factorial de "<<a<<" es "<<c<<" n";
c=1;
}
cout<<"Desea repetir la operacion s/n? ";
cin>>o;
}
while(o=='s');
}

noel solw
12 de Mayo del 2004
Alguien hizo esta pregunta, hace un par de semanas.
Te envio un programa que recibe solo valores numericos para que sepas como reformar el tuyo.

// program numeros.cpp

#include <iomanip.h>
#include <iomanip.h>
#include <stdlib.h>
#include <ctype.h>

int Check(char *a)
{
for(int i = 0;a[i];i++)
if(!isdigit(a[i]))
return 0;
return 1;
} // CHECK

long GetNum()
{
char a[15];
do
{
cout << "entre solo cifras digitales : ";
cin >> a;
} while(!Check(a));
return atol(a);
} // GET NUM

void main()
{
for(long num = GetNum();num;num = GetNum())
cout << num << endl;
cout << "end of program - good bye ! ! !" << endl;
} // MAIN

mrpolo
12 de Mayo del 2004
Gracias amigo por tu ayuda pero no entiendo como funciona tu programa, lo corrí y todo pero no se como aplicarlo al mio :( gracias de todos modos.. si me podrias decir para que sirven las sentencias que estan ahi.. por lo menos la que usas !isdigit. nose porque usas ese signo de exclamacion.. bueno yo soy un novato..pero seria de mucha ayuda... gracias de antemano y disculpa la molestia. Yo se que algun dia podré ayudar a alguien :)