Tengo un problema ayuda!

Iniciado por Juan821, 5 Junio 2014, 03:37 AM

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

Juan821

(uso visual studio 2010) en este programa trato de que entre a una categoria cualquiera para hacer una serie de preguntas pero ese es el error que no entra a ninguno de los casos

#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <stdio.h>
using namespace std;
int His(int);
int Cien(int);
int Depor(int);
int Geo(int);
int c=1;
int main()
   {
      int s,tot,u=0;
       while (c==1)
      {
      cout<<"Presione cualquier tecla para escoger su categoria"<<endl;
      getch();
      srand(time(NULL));
      s=rand()% 4 + 1;
      cout<<"Presione cualquier tecla para escoger su categoria"<<s<<endl;
      switch (s)
      {
      case 1:
         {
            int His();
            break;
         }
      case 2:
         {
            int Cien();
            break;
         }
      case 3:
         {
            int Depor();
            break;
         }
      case 4:
         {
            int Geo();
            break;
         }
      }
      }
      system ("pause");
      return 0;
   }

int His()
{
   system ("cls");
   cout<<"<===============Su categoria es historia===============>"<<endl;
   cout<<"Presione cualquier tecla para continuar"<<endl;
   getch();
   return 0;
}
int Depor()
{
   system ("cls");
   cout<<"<===============Su categoria es Ciencia===============>"<<endl;
   cout<<"Presione cualquier tecla para continuar"<<endl;
   getch();
   return 0;
}
int Cien()
{
   system ("cls");
   cout<<"<===============Su categoria es Deportes===============>"<<endl;
   cout<<"Presione cualquier tecla para continuar"<<endl;
   getch();
   return 0;
}
int Geo()
{
   system ("cls");
   cout<<"<===============Su categoria es Deportes===============>"<<endl;
   cout<<"Presione cualquier tecla para continuar"<<endl;
   getch();
   return 0;
}

Drewermerc

hola amigo.
bueno supongo que el error radica en que el prototipo de la funcion esta mal por que yo que sepa si no se vana pasar variable no tienes que poner nada en lo parentesis y aparte de que lo indicas que que se pasara una variable int pero ni siquiera poner el nombre de la variable.
y tambien cuando llamas a la funcion solo es el puro nombre sin el int seria algo asi.


//prototipo correcto
int Depor();

// cuando se llama a la funcion es asi
Depor();


Saludos.
Drewermerc.

Juan821

Pero cuando lo hago asi me aparece el error de compilacion ya lo intente

Drewermerc

que error es el que te manda.

rir3760

Cita de: Juan821 en  5 Junio 2014, 04:19 AMPero cuando lo hago asi me aparece el error de compilacion ya lo intente
Pues habra que revisar tu codigo fuente actualizado ya que las indicaciones de Drewermerc deben solucionar el problema siempre y cuando las apliques correctamente.

Explicando un poco mas a detalle el problema se genera en los casos de (la sentencia condicional) switch:
Código (cpp) [Seleccionar]
switch (s) {
case 1: {
   int His();
   break;
}
case 2: {
   int Cien();
   break;
}
case 3: {
   int Depor();
   break;
}
case 4: {
   int Geo();
   break;
}
}

El detalle ahí es que no estas llamando a las funciones, las estas declarando.

Para solucionarlo se debe cambiar a:
Código (cpp) [Seleccionar]
// Las funciones no requieren de argumentos
int His();
int Cien();
int Depor();
int Geo();

// ...

switch (s){
case 1:
   His();
   break;
case 2:
   Cien();
   break;
case 3:
   Depor();
   break;
case 4:
   Geo();
   break;
}


Otras partes que se deben modificar en el programa son:

* Utilizar el nombre correcto de los encabezados en C++: <cstdlib> y <ctime>, el encabezado <stdio.h> no es necesario en el programa y su directiva de inclusión debe eliminarse.

* Evitar el uso de la biblioteca conio de Borland, mas información en la pagina |Lo que no hay que hacer en C/C++. Nivel basico|.

* La llamada a srand hay que colocarla justo al principio de la función main pero fuera del bucle.

* No es necesaria la variable "s" ya que puedes utilizar la expresión "rand() % 4 + 1" directamente para controlar la rama de ejecución en el condicional:
Código (cpp) [Seleccionar]
switch (rand() % 4 + 1){
// ...


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

Juan821

Bueno el problema que me sale es que la funcion no puede aceptar argumentos 0

Juan821

Cita de: rir3760 en  5 Junio 2014, 04:26 AM
Pues habra que revisar tu codigo fuente actualizado ya que las indicaciones de Drewermerc deben solucionar el problema siempre y cuando las apliques correctamente.

Explicando un poco mas a detalle el problema se genera en los casos de (la sentencia condicional) switch:
Código (cpp) [Seleccionar]
switch (s) {
case 1: {
   int His();
   break;
}
case 2: {
   int Cien();
   break;
}
case 3: {
   int Depor();
   break;
}
case 4: {
   int Geo();
   break;
}
}

El detalle ahí es que no estas llamando a las funciones, las estas declarando.

Para solucionarlo se debe cambiar a:
Código (cpp) [Seleccionar]
// Las funciones no requieren de argumentos
int His();
int Cien();
int Depor();
int Geo();

// ...

switch (s){
case 1:
   His();
   break;
case 2:
   Cien();
   break;
case 3:
   Depor();
   break;
case 4:
   Geo();
   break;
}


Otras partes que se deben modificar en el programa son:

* Utilizar el nombre correcto de los encabezados en C++: <cstdlib> y <ctime>, el encabezado <stdio.h> no es necesario en el programa y su directiva de inclusión debe eliminarse.

* Evitar el uso de la biblioteca conio de Borland, mas información en la pagina |Lo que no hay que hacer en C/C++. Nivel basico|.

* La llamada a srand hay que colocarla justo al principio de la función main pero fuera del bucle.

* No es necesaria la variable "s" ya que puedes utilizar la expresión "rand() % 4 + 1" directamente para controlar la rama de ejecución en el condicional:
Código (cpp) [Seleccionar]
switch (rand() % 4 + 1){
// ...


Un saludo

Lo de las librerias me exige visual studio que sea asi, lo de la variable a la final fue por lo que no me daba intentado solucionarlo he llegado hasta alla y lo otro ya lo arregle pero me sigue saliendo el error que no acepta 0 argumentos

Juan821

Cita de: rir3760 en  5 Junio 2014, 04:26 AM
Pues habra que revisar tu codigo fuente actualizado ya que las indicaciones de Drewermerc deben solucionar el problema siempre y cuando las apliques correctamente.

Explicando un poco mas a detalle el problema se genera en los casos de (la sentencia condicional) switch:
Código (cpp) [Seleccionar]
switch (s) {
case 1: {
   int His();
   break;
}
case 2: {
   int Cien();
   break;
}
case 3: {
   int Depor();
   break;
}
case 4: {
   int Geo();
   break;
}
}

El detalle ahí es que no estas llamando a las funciones, las estas declarando.

Para solucionarlo se debe cambiar a:
Código (cpp) [Seleccionar]
// Las funciones no requieren de argumentos
int His();
int Cien();
int Depor();
int Geo();

// ...

switch (s){
case 1:
   His();
   break;
case 2:
   Cien();
   break;
case 3:
   Depor();
   break;
case 4:
   Geo();
   break;
}


Otras partes que se deben modificar en el programa son:

* Utilizar el nombre correcto de los encabezados en C++: <cstdlib> y <ctime>, el encabezado <stdio.h> no es necesario en el programa y su directiva de inclusión debe eliminarse.

* Evitar el uso de la biblioteca conio de Borland, mas información en la pagina |Lo que no hay que hacer en C/C++. Nivel basico|.

* La llamada a srand hay que colocarla justo al principio de la función main pero fuera del bucle.

* No es necesaria la variable "s" ya que puedes utilizar la expresión "rand() % 4 + 1" directamente para controlar la rama de ejecución en el condicional:
Código (cpp) [Seleccionar]
switch (rand() % 4 + 1){
// ...


Un saludo

Pero ya solucione el problema lo de la libreria conio.h porque la reemplazaria necesito la pausa en el sistema hasta que se presione una tecla

Drewermerc

podrias poner el error que te da el compilador. y tu codigo completo.

Juan821

No ya resolvi el problema muchas gracias fue un error de mi profesor a enseñarme algo que no era pero porque prodia reemplazar ese getch que necesito para hacer una pausa en el sistema para poder quitar la libreria conio.h