Hola!

Registrándote como bakuno podrás publicar, compartir y comunicarte en privado con otros bakuos :D

Regístrame ya!

Me ayudan ccon mi error en un programa en c++?

Me Gangsta

Becerro
Desde
14 Mar 2012
Mensajes
47
Buenas bakunos.

Me encargaron un programa en C++ que convierta los numeros normales a romanos. Y tengo que usar "switch" de a fuerzas.

Mi código es el siguiente:

Código:
#include <iomanip>
#include <iostream>
using namespace std;

int main()
{
	//Defining variables
	string number1;
	int roman;
	int  choice;

	//Input Validation
if ((choice >= 1) && (choice <= 10))\
{
	cin>>roman;

	
	//Display
	switch (choice)
	{
	case 1: 
	number1 = "I";
	break;
	case 2:
	number1 = "II";
	break;
	case 3:
	number1="III";
	break;
	case4:
	number1="IV";
	break;
	case 5:
	number1="V";
	break;
	case 6:
	number1="VI";
	break;
	case 7:
	number1="VII";
	break;
	case 8:
	number1="VIII";
	break;
	case 9:
	number1="IX";
	break;
	case 10:
	number1="X";
	break;
	default:
	number1 = "out of range";
	

	cout <<"Your Number is equal to the Roman Numeral "<< number1 << ".\n";
	}
}	
	
	else if (choice !=11)
	{
		cout <<"You did not enter a number between 1-10, please try again\n";
	}
	
	return 0;
}


El error que tengo es:

Run-Time Check Failure #3 - The variable 'choice' is being used without being initialized.

Buscando en Google había visto que esta clase de errores era porque no ponian "int y+ la variable" antes de el condicional IF, y pues yo lo puse pero aun así me sale ese error.

Agradecería mucho que me ayudaran porque la neta no tengo ni la mas mínima idea de donde pueda estar el error, ya que estuve checando y en el libro viene el código de esa manera en un programa d ejemplo.
 
Pues como dice el error...usas la variable sin inicializarla...te falto una instruccion para solicitar el valor de choice...
 
De acuerdo con tu código fuente, no entiendo porque lees roman dentro del if, otra seria que iguales choice con roman, después de la lectura de roman y antes de iniciar el switch, así estarías omitiendo el error, asignándole valor a la variable en cuestión.
algo asi:

cin>>roman;

choice=roman;

//Display
switch (choice)
 
Entiendo de tu codigo que lo quieres es leer capturara un valor y guardarlo en choice, te da error porque choice no tiene ningun valor asignado cuando llega a la validacion del if... consejo siempre que utilices un lenguaje tipado inicializa las variables
 
es facil lo poco que me acuerdo, roman y choice las manejas como enteros, pero si tedas cuenta cuando ponees cualquier case pones number2= "s" <<<< ese punto es una cadena y es string o char no numero
 
Código:
#include <iomanip>
#include <iostream>
using namespace std;

int main()
{
	//Defining variables
	string number1;
	int roman;
	int  choice;

	//Input Validation
if (([B]choice >= 1[/B]) && (choice <= 10))\
{
	

[B]Run-Time Check Failure #3 - The variable 'choice' is being used without being initialized.[/B]

[/QUOTE]
es simple, tu variable "choice" no esta inicializada ademas no entiendo como quieres hacer un switch si nunca le asignas valor a choice. pueba con esto:

[QUOTE]#include <iomanip>
#include <iostream>
using namespace std;

int main()
{
	//Defining variables
	string number1;
	int roman;
	int  choice;

        cin>>roman;
        choice=roman;
	//Input Validation
if ((choice >= 1) && (choice <= 10))\
{
	

	
	//Display
	switch (choice)
	{
	case 1: 
	number1 = "I";
	break;
	case 2:
	number1 = "II";
	break;
	case 3:
	number1="III";
	break;
	case4:
	number1="IV";
	break;
	case 5:
	number1="V";
	break;
	case 6:
	number1="VI";
	break;
	case 7:
	number1="VII";
	break;
	case 8:
	number1="VIII";
	break;
	case 9:
	number1="IX";
	break;
	case 10:
	number1="X";
	break;
	default:
	number1 = "out of range";
	

	cout <<"Your Number is equal to the Roman Numeral "<< number1 << ".\n";
	}
}	
	
	else if (choice !=11)
	{
		cout <<"You did not enter a number between 1-10, please try again\n";
	}
	
	return 0;
}[/QUOTE]
 
Intente con ponerle lo que me dijeron de darle valor al choice pero me sigue saliendo lo mismo.

cout<<"Type a number between 1 and 10"<<endl;
cin>>choice;

//Input Validation
if ((choice >= 1) && (choice <= 10))
{
 
int main()
{
//Defining variables
string number1;
int roman;
int choice;

//Input Validation
if ((choice >= 1) && (choice <= 10))\
{
cin>>roman;


//Display
switch (choice)
{
case 1:

choice no tiene definido un valor, y despues de la declaracion de variables te vas a un if donde comparas choice, tienes que igualar en la declaracion choice = 1 o bien preguntar el valor de choice fuera del if
 
Pues tal y como dice es error de ejecución, ya que dice que usas una variable entera sin inicializarla, y esto puede hacer que el programa nunca inicie.

La solución más fácil a mi ver es:

int roman=0;
int choice=0;

y antes del "if" el "cin" para que obtenga el valor que se ocupa y le asigne el nuevo valor para poder funcionar.

Saludos!!!
 
choice tiene que tener un valor inicial

pon: choice = 0;

despues necesitar mandar un letrero en pantalla que diga algo por ejemplo:

printf("Elige una de las siguientes opciones: ");
scanf(choice);

y ahora si podra ser evaluada la variable en el if para poder entrar
 
Volver
Arriba