(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;
}
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.
Pero cuando lo hago asi me aparece el error de compilacion ya lo intente
que error es el que te manda.
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:
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:
// 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| (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html).
* 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:
switch (rand() % 4 + 1){
// ...
Un saludo
Bueno el problema que me sale es que la funcion no puede aceptar argumentos 0
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:
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:
// 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| (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html).
* 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:
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
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:
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:
// 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| (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html).
* 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:
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
podrias poner el error que te da el compilador. y tu codigo completo.
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