Funciones en C++

Iniciado por LauraD, 25 Abril 2014, 04:13 AM

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

LauraD

Buenas noches!

Tengo que realizar un algoritmo en C++ mediante la implementación de funciones que no reciben y no retornan, el algoritmo esta compuesto por varias opciones por lo que obligatoriamente me piden implementar el condicional "Switch" para ejecutar segun la opcion que requiera el usuario..

Inicie mi algoritmo y al compilar funcionaba, pero al implementar las funciones de los diferentes casos del switch, muestra un error, supongo yo que no permite que una función este dentro de otra función, así que no se como plantear el algoritmo para que no se genere dicho error  :( ..


Aquí les dejo el algoritmo que llevo hasta el momento..


#include<cstdlib>
#include<iostream>

using namespace std;
   
   
    void menu()
    {   
    int Num;
       
       
    cout<<"Ingrese el numero correspondiente a la opcion que desea ejecutar"<<endl;
    cout<<endl<<"1: Conversion grados Celsius a grados Farenheit. "<<endl;
    cout<<"2: Calculo del ahorro capital mensual de un banco. "<<endl;
    cout<<"3: Calculo del cuadrado o del cubo de un numero. "<<endl;
    cout<<"4: Calculo costo entradas de cine. "<<endl;
    cout<<"5: Calculo de la aceleracion de un vehiculo. "<<endl<<endl;
    cin>>Num;
    }
   
       
   
    void opciones ()
    {
         
    int Num;
             
    switch (Num)
    {
   
    case 1:

    void Conversion()
    {
         
         int C;
         int F;
         
         cout<<" Ingrese el valor en grados Celsius que desea convertir "<<endl;
         cin>>C;
         
         F = (C*9.5+32);
         
         cout<<" La conversion de "<<C<<" grados celcius a grados farenheit es igual a: "<<F<<endl;
         break;
    }   
         
    case 2:
         break;
         
    case 3:
         break;
         
    case 4:
         break;
         
    case 5:
         break;
         
   
   
    default:
    cout<<"Esta opcion no es valida"<<endl;
    }
    }
   
   
    int main()
    {
        menu();
        opciones ();
        conversion ();
       
       
        system ("PAUSE");
        return EXIT_SUCCESS;
    }


Les agradeceria muchisimo si me ayudaran!

Gracias c:

engel lex

procura usar etiquetas GeSHi cuando postees codigo...

tu codigo tiene varios errores... debido a lo mismo...

lo que pasa en tu codigo es que en programacion está el concepto de "scope" que es donde está ubicado "el cursor" por decir lo una manera...

si haces

Código (cpp) [Seleccionar]

void algo(){
  int hola = 1;
}

int main(){
  algo();
  cout << hola;
}


esto dará un error debido a que "hola" se declaró fuera de su alcance...

el alcance normalmente se determina por los corchetes "{}"
en general todo puede alcanzar lo que esté en un corchete menor, nada, puede alcanzar un mayor...

Código (cpp) [Seleccionar]

int a;
if (...) {
    a = 1; //funciona
    int b;
    if (...) {
        a = 2; //funciona
        b = 2; //funciona
        int c = 3;
    }
    a = 4; //funciona
    b = 5; //funciona
    c = 6; //error
}
a = 7; //funciona
b = 8; //error
c = 9; //error


para poder hacer que "num" funcione, tienes que declararla una sola vez de manera "global" es decir, debajo del namespace, fuera de cualquier corchete...

lo mismo va para void Conversion()
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

leosansan

#2
Cita de: LauraD en 25 Abril 2014, 04:13 AM

Tengo que realizar un algoritmo en C++ mediante la implementación de funciones que no reciben y no retornan, el algoritmo esta compuesto por varias opciones por lo que obligatoriamente me piden implementar el condicional "Switch" para ejecutar segun la opcion que requiera el usuario.
...................................
supongo yo que no permite que una función este dentro de otra función,.



Si no reciben ni retornan las variables F,C,Num,etc deben ser declaradas como globales, tal como te indicó engel lex:

Código (cpp) [Seleccionar]

...........................

using namespace std;

int C,F,Num;
..................


y debes retirar todas las declaraciones de las mismas variables en todas las funciones, sólo debe quedar la declaración inicial que te indico arriba.

Por otro lado la función conversión no tiene sentido ya que esa labor se lleva a cabo en el switch de la función opciones: eliminala:


Código (cpp) [Seleccionar]
///conversion ();

De esa forma te queda el comienzo del switch funcionado como:

Código (cpp) [Seleccionar]
void opciones ()
   {

   switch (Num)
   {

   case 1:
        cout<<" Ingrese el valor en grados Celsius que desea convertir "<<endl;
        cin>>C;
        F = (C*9.5+32);
        cout<<" La conversion de "<<C<<" grados celcius a grados farenheit es igual a: "<<F<<endl;
        break;



¡¡¡¡ Saluditos! ..... !!!!



EDITO: Y no, no están permitidas las declaraciones de funciones dentro de otras. Se declaran cada una aparte. Otra cosa es que se pueda llamar a una función desde otra, eso si es posible y es lo normal.