[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