Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: 5378453 en 21 de Septiembre 2015, 23:50

Título: Como aceptar solo numeros en c++ validar entrada del usuario es numérica
Publicado por: 5378453 en 21 de Septiembre 2015, 23:50
quisiera saber como hacer para que al teclar datos solo reciba numeros, que no permita que introduzcan otra cosa

Es un programa que trabaja con números complejos

mi código:

.h:
Código: [Seleccionar]
#include <conio.h>
#include <math.h>
#include <iostream>
#include <stdlib.h>
using namespace std;

class complejo{

private:

double r,i;

public:

complejo(){
r=0.0;
i=0.0;
}

complejo(double real, double imaginario){
r=real;
i=imaginario;
}

void setRealImaginario(double real,double imaginario){
r=real;
i=imaginario;
}

double getReal(){
return r;
}
double getImaginario(){
return i;
}

void imprime(){
if(r!=0&&i!=0){
cout <<"\nResultado: " << r << "," << i << "i";
}
else if(r==0&&i!=0){
cout <<"\nResultado: " << i <<"i";
}
else if(r!=0&&i==0){
cout <<"\nResultado: " << r;
}
else{
cout <<"\nResultado: 0";
}
}

double sumaComplejos(double real1, double imaginario1, double real2, double imaginario2){
r= real1 + real2;
i= imaginario1 + imaginario2;
return r,1;
}

double restaComplejos(double real1, double imaginario1, double real2, double imaginario2){
r= real1-real2;
i= imaginario1-imaginario2;
return r,i;
}

double multiplicacionComplejos(double real1, double imaginario1, double real2, double imaginario2){
r=(real1*real2)-(imaginario1*imaginario2);
i=(real1*imaginario2)+(imaginario1*real2);
return r,1;
}

double dividirComplejos(double real1, double imaginario1, double real2, double imaginario2){
r=((real1*real2)+(imaginario1*imaginario2))/(pow(real2,2)+pow(imaginario2,2));
i=((imaginario1*real2)-(real1*imaginario2))/(pow(real2,2)+pow(imaginario2,2));
return r,i;
}

void polar(double real, double imaginario){
double magnitud, angulo;
if((real>0)&&(imaginario>0)){
magnitud=sqrt((pow(real,2))+(pow(imaginario,2)));
angulo=((atan(imaginario/real))*57.29);
angulo=sqrt(pow(angulo,2));
}

if((real<0)&&(imaginario>0)){
magnitud=sqrt((pow(real,2))+(pow(imaginario,2)));
angulo=((atan(real/imaginario))*57.29);
angulo=(sqrt(pow(angulo,2)))+90;
}

if((real>0)&&(imaginario<0)){
magnitud=sqrt((pow(real,2))+(pow(imaginario,2)));
angulo=((atan(imaginario/real))*57.29);
angulo=-(sqrt(pow(angulo,2)));
}

if((real<0)&&(imaginario<0)){
magnitud=sqrt((pow(real,2))+(pow(imaginario,2)));
angulo=((atan(real/imaginario))*57.29);
angulo=-(sqrt(pow(angulo,2)))-90;
}

cout<< magnitud<< ","<< angulo<< "\xF8";
}

double rectangular(double real, double imaginario){
r=real*(cos(imaginario*.017453));
i=real*(sin(imaginario*.017453));
return r,1;
}
};

.cpp
Código: [Seleccionar]
using namespace std;
#include "complejo.h"

void main(){
double a,b,c,d,e=1,continuar,real,imag,conti;
complejo resultado;
while(1){
system("cls");
if(e==1){
cout << "Elige la operacion que quieras realizar:\n\n1-Suma\n2-Resta\n3-Multiplicacion\n4-Division\n5-Transformar a Polar\n6-Transformar a Rectangular\n7-Salir\n\n";
e=_getch();
}

else if(e==49){
conti=1;
system("cls");
cout << "Suma:\n\nIngresa El Primer Numero Complejo: ";
cin >> a >> b;
cout << "\nIngresa El Segundo Numero Complejo: ";
cin >> c >> d;
resultado.sumaComplejos(a,b,c,d);
resultado.imprime();
cout << "\n\n1-Continuar\n2-Realizar otra Operacion\n3-Salir\n";
continuar=_getch();
if(continuar == 49){
e=49;
}

else if(continuar == 51){
break;
}
else{
e=1;
}
}

else if(e==50){
system("cls");
cout << "Resta:\n\nIngresa El Primer Numero Complejo: ";
cin >> a >> b;
cout << "\nIngresa El Segundo Numero Complejo: ";
cin >> c >> d;
resultado.restaComplejos(a,b,c,d);
resultado.imprime();
cout << "\n\n1-Continuar\n2-Realizar otra Operacion\n3-Salir\n";
continuar=_getch();
if(continuar == 49){
e=49;
}

else if(continuar == 51){
break;
}
else{
e=1;
}
}

else if(e==51){
system("cls");
cout << "Multiplicacion:\n\nIngresa El Primer Numero Complejo: ";
cin >> a >> b;
cout << "\nIngresa El Segundo Numero Complejo: ";
cin >> c >> d;
resultado.multiplicacionComplejos(a,b,c,d);
resultado.imprime();
cout << "\n\n1-Continuar\n2-Realizar otra Operacion\n3-Salir\n";
continuar=_getch();
if(continuar == 49){
e=49;
}

else if(continuar == 51){
break;
}
else{
e=1;
}
}

else if(e==52){
system("cls");
cout << "Division:\n\nIngresa El Primer Numero Complejo: ";
cin >> a >> b;
cout << "\nIngresa El Segundo Numero Complejo: ";
cin >> c >> d;
resultado.dividirComplejos(a,b,c,d);
resultado.imprime();
cout << "\n\n1-Continuar\n2-Realizar otra Operacion\n3-Salir\n";
continuar=_getch();
if(continuar == 49){
e=49;
}

else if(continuar == 51){
break;
}
else{
e=1;
}
}

else if(e==53){
system("cls");
cout << "Transformar a Polar:\n\n Introduce el Numero Rectangular: ";
cin >> a >> b;
resultado.polar(a,b);
cout << "\n\n1-Continuar\n2-Realizar otra Operacion\n3-Salir\n";
continuar=_getch();
if(continuar == 49){
e=49;
}

else if(continuar == 51){
break;
}
else{
e=1;
}
}

else if(e==54){
system("cls");
cout <<"Transformar a Rectangular:\n\nIntroduce el Numero Polar: ";
cin >> a >> b;
resultado.rectangular(a,b);
resultado.imprime();
cout << "\n\n1-Continuar\n2-Realizar otra Operacion\n3-Salir\n";
continuar=_getch();
if(continuar == 49){
e=49;
}

else if(continuar == 51){
break;
}
else{
e=1;
}
}

else if(e==55){
break;
}

else{
e=1;
}
}

}
Título: Re:Como aceptar solo numeros en c++ validar entrada del usuario es numérica
Publicado por: Ogramar en 23 de Septiembre 2015, 09:11
Hola para validar que el usuario introduce un número y que es entero

Código: [Seleccionar]
int n;
cin >> n;
if(!cin) // o también if(cin.fail())
{
    // El usuario no introdujo un número
    cin.clear(); // Borrar la entrada fallida
    cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //Saltar la entrada no válida
    // Aquí poner código para volver a pedirle al usuario que introduzca un número
}

Salu2