Ayuda soy un poco nobato en c++

Iniciado por cristhian_plaza, 16 Agosto 2012, 23:51 PM

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

cristhian_plaza

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;
}
             
   

avesudra

#1
¡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.
Código (cpp) [Seleccionar]
#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;
}

           
Regístrate en

CSQCasimiro

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;
  }

}

"Mejora el Algoritmo, no el Código"
"Buscando todos los días ser mejor que ayer"

ecfisa

#3
Hola Cristhian.

También podes optimizar un poco el código de las funciones.

Código (cpp) [Seleccionar]

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'  :)