No he conseguido solucion :( AYUDAAA!!!!
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');
}
#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');
}
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
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
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 :)
