[C con Clase] Problema con el Swich

Steven Richard Davidson stevenrichard.davidson en gmail.com
Jue Sep 13 01:37:06 CEST 2007


Hola Cristhian,

On 9/12/07, CRISTHIAN ANGARITA <thiancriss85 en hotmail.com> wrote:
>
>
>  Hola a todos,
>
>  por aca de nuevo molestando, lo que pasa es necesito hacer un Swich en C++,
> eso es fasil pero se me ocurrio hacerlo utilizando clases y metodos. Cuando
> solo dejo el primer CASE todo funciona, pero hago el segundo y ya no me
> funciona me  sale los siguientes errores:
>
>  C:\Documents and Settings\User\Escritorio\Dev C++\Estudiante.cpp In
> function `int main()':
>  126 C:\Documents and Settings\User\Escritorio\Dev C++\Estudiante.cpp jump
> to case label
>  119 C:\Documents and Settings\User\Escritorio\Dev C++\Estudiante.cpp
> crosses initialization of `Ingenieria Ing'
>  C:\Documents and Settings\User\Escritorio\Dev C++\Makefile.win [Build
> Error]  [Estudiante.o] Error 1
>
>  que sera.........
>
>  hay les dejo el codigo
>
>  ahh otra cosa hay la posibilidad de colocar la hora y fecha en un programa
> hecho en C++
>

Sí. Puedes usar las funciones declaradas en <ctime>. Por ejemplo,

time_t actual = time(0);
cout << "Hora y Fecha: " << localtime( &actual ) << endl;

>

Veamos el código que corresponde:

[CORTE]

> switch(opcion)
> {
> case 1:
>     cout<<" \t\tDatos del Estudiante\n\n";
>     Sleep(300);
>        cout<<"Nombre  : ";
>        cin>>Nombre;
>        cout<<"Apellido: ";
>        cin>>Apellido;
>        cout<<"Codigo  : ";
>        cin>>Cod;
>        cout<<"Digitela nota de Matematicas  : ";
>        cin>>nota1;
>        cout<<"Digitela nota de Ingles       : ";
>        cin>>nota2;
>        cout<<"Digitela nota de Algoritmos   : ";
>        cin>>nota3;
>        cout<<"Digitela nota de Programacion : ";
>        cin>>nota4;
>      Ingenieria Ing(Nombre, Apellido, Cod, nota1, nota2, nota3, nota4);

No puedes declarar variables dentro de los casos en un 'switch/case'.
Por lo tanto, o bien las declaras previamente, o bien creas un bloque
de sentencias. Por ejemplo,

case 1:
  ...
  {
    Ingenieria Ing( Nombre, Apellido, Cod, nota1, nota2, nota3, nota4 );
    cout << "\nProcesando Promedio.....\n";
    Sleep( 1200 );
    Ing.VerPromedio( Ing.Promedio() );
  }
break;

Además, como puedes ver, hemos eliminado el uso de la variable
'TPromedio', ya que no es necesario para la programación de este caso.

[CORTE]

Lo mismo sucede con el caso 2.

>      FAdministracion Fadm(Nombre, Apellido, Cod, nota1, nota2, nota3,
> nota4);

Hacemos lo mismo que con 'Ing'. Esto es,

case 2:
  ...
  {
    FAdministracion Fadm( Nombre, Apellido, Cod, nota1, nota2, nota3, nota4 );
    cout << "\nProcesando Promedio.....\n";
    Sleep( 1200 );
    Fadm.VerPromedio( Fadm.Promedio() );
  }
break;


Espero haber aclarado las dudas.

Steven




Más información sobre la lista de distribución Cconclase