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

#1
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.
 
#3
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)
 

gran_lexo

Bovino maduro
#4
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
 
#5
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
 

z0n3r

Bovino maduro
#7
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]
 
#9
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
 
#10
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!!!
 
#11
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
 
Arriba