No entiendo porque al compilar... el programa el menu de opciones no llama las funciones solo me pide el numero y dspss de eso¡¡ me aparece la interfaz de menu e inmediato sin escoger la opcion me aparecee lo que tengo en el default, agradezco respuesta :D
#include <iostream>
#include <conio.h>
#include <stdlib.h>
using namespace std;
int llenado(int numero);
float valor_absoluto(int numero);
int cambio_numeros(int numero);
int main()
{
int opcion, cambio, llenar, numero;
float case1;
llenar = llenado(numero);
cout<<endl<<endl;
cout<<"\t\t ESCOJA LA OPCION QUE DESEA"<<endl<<endl;
cout<<" 1. HALLAR EL VALOR ABSOLUTO DE UN NUMERO"<<endl;
cout<<" 2. SI EL NUMERO ES PAR CAMBIARLO POR 1 EN CASO CONTRARIO ES 0"<<endl;
cout<<" 3. IMPRIMIR"<<endl;
cout<<" 4. SALIR"<<endl;
switch(opcion)
{
case 1:
case1 = valor_absoluto(numero);
cout<<case1;
break;
case 2:
cambio = cambio_numeros(numero);
cout<<cambio;
break;
case 3:
llenar = llenado(numero);
cout<<llenar;
case 4:
exit(0);
break;
default:
cout<<endl<<endl;
cout<<"tLA OPCION INGRESADA NO ESTABA DENTRO DEL MENU";
break;
}
cout<<endl;
system("pause");
}
int llenado(int numero)
{
int rta;
cout<<"DIGITE UN NUMERO DESEADO A EVALUAR CON EL SIGUIENTE MENU: ";
cin>>numero;
rta = numero;
return rta;
}
float valor_absoluto(int numero)
{
int rta;
if(numero < 0)
{
rta = numero * (-1);
}
else
{
rta = numero * 1;
}
return rta;
}
int cambio_numeros(int numero)
{
int residuo, rta;
residuo = numero % 2;
if(residuo == 0)
{
rta = 1;
}
else
{
rta = 0;
}
return rta;
}
¡Hola! Por favor la proxima vez que publiques hazlo bajo las etiquetas GeSHi que colorean el código , ahora lo hago yo. Por lo demás , no importa que seas noVato en C++ , por lo primero no deberías usar conio, por lo segundo es lógico que no te coja el numero para el menú porque no lo pides y en opcion no hay ningun número , bueno sí el generado por el compilador. Me huele esto a tarea copiada...Y aquí no se hacen tareas lo digo de antemano.
#include <iostream>
#include <conio.h>
#include <stdlib.h>
using namespace std;
int llenado(int numero);
float valor_absoluto(int numero);
int cambio_numeros(int numero);
int main()
{
int opcion, cambio, llenar, numero;
float case1;
llenar = llenado(numero);
cout<<endl<<endl;
cout<<"\t\t ESCOJA LA OPCION QUE DESEA"<<endl<<endl;
cout<<" 1. HALLAR EL VALOR ABSOLUTO DE UN NUMERO"<<endl;
cout<<" 2. SI EL NUMERO ES PAR CAMBIARLO POR 1 EN CASO CONTRARIO ES 0"<<endl;
cout<<" 3. IMPRIMIR"<<endl;
cout<<" 4. SALIR"<<endl;
switch(opcion)
{
case 1:
case1 = valor_absoluto(numero);
cout<<case1;
break;
case 2:
cambio = cambio_numeros(numero);
cout<<cambio;
break;
case 3:
llenar = llenado(numero);
cout<<llenar;
case 4:
exit(0);
break;
default:
cout<<endl<<endl;
cout<<"tLA OPCION INGRESADA NO ESTABA DENTRO DEL MENU";
break;
}
cout<<endl;
system("pause");
}
int llenado(int numero)
{
int rta;
cout<<"DIGITE UN NUMERO DESEADO A EVALUAR CON EL SIGUIENTE MENU: ";
cin>>numero;
rta = numero;
return rta;
}
float valor_absoluto(int numero)
{
int rta;
if(numero < 0)
{
rta = numero * (-1);
}
else
{
rta = numero * 1;
}
return rta;
}
int cambio_numeros(int numero)
{
int residuo, rta;
residuo = numero % 2;
if(residuo == 0)
{
rta = 1;
}
else
{
rta = 0;
}
return rta;
}
bueno, acordate, el cout es "sacar" (out en ingles) datos en pantallas, y el cin es para ingresar (in en ingles) datos, ej:
cout[b]<<[/b]"hola mundo"<<endl;
cin [b]>>[/b] variable;
ahora hace un intento de leer tu propio codigo linea por linea, vas a ver que a la variable opcion que controla tu dato jamas le ingresas un valor con cin, como primer instancia, y como segunda instancia, si yo ingreso, por ejemplo, un 6, va al default, y termina el programa, ya que no quedan mas instrucciones. esto es la estructura de un menu:
char opcion;
bool loop=true; //las variables tipo bool, solo poseen dos posibles valores, 0 y 1 (true / false)
while (loop)
{
cout<<"opciones de menu"<<endl;
cout<<"eleccion: ";
cin >> opcion;
switch (opcion)
{
//cases del switch, acordate que es tipo char, iran entre comillas simples los case, ej: case '1' :
//eso es para evitar errores mas adelante....
case '4':
loop=false //corta el while y termina programa
break;
default:
system("CLS"); //limpia pantalla, termina switch, encuentra la llave de cierra del while, y empiesa del principio
break;
}
}
Hola Cristhian.
También podes optimizar un poco el código de las funciones.
unsigned int valor_absoluto (int nro) {
if (nro < 0)
nro *= -1;
return nro;
}
unsigned short int cambio_numeros(int nro) {
if (nro % 2)
return 0;
else
return 1;
}
Saludos.
Edito: Casi me olvidaba, aunque sutílmente ya lo mencionaron, por favor novato con 'v' :)