Ayuda!!! :( con c++

Iniciado por Norochii, 19 Octubre 2011, 15:29 PM

0 Miembros y 1 Visitante están viendo este tema.

Norochii

hello.. tengo una duda.. estoy haciendo un programa en c++ y necesito saber como hacerle para que cuando el usuario introduzca un caracter en la variable entera entre de nuevo al ciclo do-while por que lo que hace el programa cuando introducen un caracter es k despliega la tabla del cero y no se devuelve al ciclo do-while el codigo es el siguiente :D les agradeceria su ayuda :D

#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <Windows.h>


using namespace std;

void TablasDeMultiplicar()
{
   int Tabla = 0;
   do
   {
   cout<<"\n\n  Ingresa el numero de la Tabla de Multiplicar que quieras Aprender: \n\n";
   cout<<"  Solo Podras Ver las Tablas del 0 al 12\n\n";
   cout<<"  Tabla del : ";
   cin>>Tabla;
   if(Tabla<=12 && Tabla >=0)
   {
   
   for(int i = 0; i<=12; i++)
   {
      cout<<"\n"<<Tabla<<" X "<<i<<" = "<<Tabla*i<<endl;
   }
   cout<<"\n\n\n"<<endl;
   }
   else
   {
      cout<<"\n\nNumero no valido"<<endl;
   }
   cout<<"\n\n\n";
   system("PAUSE");
   system("cls");
   }while(Tabla>12 || Tabla <0 );
}
int main()
{
   char a;
   system("color 9B");

   TablasDeMultiplicar();
   
   system("PAUSE");
   return 0;
}
Norochii

CeroX901

En la linea:

Código (cpp) [Seleccionar]
}while(Tabla>12 || Tabla <0 );

intenta arreglarlo como:

Código (cpp) [Seleccionar]
}while(true);

De está manera el programa nunca termina...


Norochii

Norochii

CeroX901

Listo. me quedó así:


Código (cpp) [Seleccionar]
#include <iostream>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <Windows.h>
#include <sstream>

using namespace std;

void TablasDeMultiplicar()
{
   do
   {
   string entrada = "";
   int Tabla = 0;

   cout<<"\n\n  Ingresa el numero de la Tabla de Multiplicar que quieras Aprender: \n\n";
   cout<<"  Solo Podras Ver las Tablas del 0 al 12\n\n";
   cout<<"  Tabla del : ";
   getline(cin, entrada);
   stringstream numero(entrada);
   numero >> Tabla;

   if(Tabla <= 12 && Tabla >=0)
   {
   
   for(int i = 0; i<=12; i++)
   {
  cout<<"\n"<<Tabla<<" X "<<i<<" = "<<Tabla*i<<endl;
   }
   cout<<"\n\n\n"<<endl;
   }
   else
   {
  cout<<"\n\nNumero no valido"<<endl;
}
cout<<"\n\n\n";
system("PAUSE");
system("cls");
}while(true);
}
int main()
{
   char a;
   system("color 9B");

   TablasDeMultiplicar();
   
   system("PAUSE");
   return 0;
}


Norochii

para que sirve esta linea??
stringstream numero(entrada);
:O
Norochii

CeroX901

para convertir de cadena a entero.

Norochii

ia corriste el programa con las modificaciones que isiste?? :O es k has de cuenta k se supone k si el usuario mete una letra en vez de numero debe aparecer el letrero de numero invalido i volver a visualizar donde se ingresa el numero pero.... no se si en tu compilador si haga eso las modificaciones k le isiste por k ami no :'( lo siento por dar tantos problemas pero es k e buskado pero nomas no encuentro u.u
Norochii

CeroX901

#7
Ahí me sirve perfecto, cuando ingresa una letra me dice "numero no valido" y cuando ingresa un numero que no está entre 0 y 12 me dice lo mismo.

Arreglé el código... Ya no debes tener problema.

Código (cpp) [Seleccionar]
#include <iostream>
#include <sstream>

using namespace std;

void TablasDeMultiplicar() {
do {
string entrada = "";
int Tabla = 0;

cout<<"\n\n  Ingresa el numero de la Tabla de Multiplicar que quieras Aprender: \n\n";
cout<<"  Solo Podras Ver las Tablas del 0 al 12\n\n";
cout<<"  Tabla del : ";

getline(cin, entrada);
stringstream numero(entrada);
if (numero >> Tabla) { //Verifica que sea un número
if(Tabla <= 12 && Tabla >=0) { //Verifica que esté entre el rango especificado (0-12)
for(int i = 0; i<=12; i++) {
cout<<"\n"<<Tabla<<" X "<<i<<" = "<<Tabla*i<<endl;
}
cout<<"\n\n\n"<<endl;
} else {
cout<<"\n\nNumero no valido"<<endl;
}
} else {
cout<<"\n\nNumero no valido"<<endl;
}

cout<<"\n\n\n";
system("pause");
system("cls");
}while(true);
}
int main() {
system("color 9B");
TablasDeMultiplicar();
system("PAUSE");
return 0;
}

CeroX901

Ahi le puse comentarios..

Norochii

Muchisimas Gracias Me ayudo de mucho si funciona muy bien te lo agradezco :D n.n espero poder contar con tu ayuda si es que me trabo en algo mas :D .
Nos vemos
Saludos
Gracias
Norochii