Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - JimP

#1
El contador de selecciones no da bien el resultado, en lugar de ir mostrando 1,2,3,... muestra 1,3,6,... y así. Para arreglarlo el ts=0 se pondría dentro del do while, antes del for de la línea 51.
O en lugar del for de la línea 51 poner simplemente un ++t;
Adicionalmente en la líneas 36 y 40 faltan los "open".
Eso es los posibles errores adicionales que he encontrado.
#2
Bueno muchas gracias a todos.
Lo que estaba en esa página es para C++, pero básicamente si se hace los mismo solo que en lugar de -std=c++11 se pone -std=c11 sirve para C.
#3
Cita de: MAFUS en 30 Mayo 2017, 15:30 PM
Estarás usando TurboC o TurboC++ de Borland o algún otro compilador pre-ansi con extensiones. Te recomiendo cambiarlo lo más pronto posible para evitarte aprender malos hábitos.
Pues estoy usando el Dev-C++ y no se por cual cambiarlo.
#4
Mi compilador no me marca tales errores y si me ejecuta el programa.
Este es el resultado:

1.Opcion 1
2.Opcion 2
3.Opcion 3
4.Salir
Ingrese una opcion entre 1 y 4: 1
29
1.Opcion 1
2.Opcion 2
3.Opcion 3
4.Salir
Ingrese una opcion entre 1 y 4: 2
2 43
1.Opcion 1
2.Opcion 2
3.Opcion 3
4.Salir
Ingrese una opcion entre 1 y 4: 3
3 43 55
1.Opcion 1
2.Opcion 2
3.Opcion 3
4.Salir
Ingrese una opcion entre 1 y 4: 4
4 43 55 86

--------------------------------
Process exited after 4.485 seconds with return value 0
Presione una tecla para continuar . . .


Ahí se ve como el primer número que devuelve, la variable a, siempre cambia según la opción menos la primera vez.
Y la demás variables no cambian, si no se mantienen con el valor asignado.

Cambie los errores que me dijeron y definí a las 4 variables como globales
#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int a,b,c,d;

int numeroEntero(char op1[50],char op2[50],char op3[50],char op4[50], int min, int max){
int o;
printf("%s\n%s\n%s\n%s\n", op1,op2,op3,op4);
do{ printf("Ingrese una opcion entre %d y %d: ", min, max);
scanf("%d", &o);
} while(o>max || o <min);
return o;
}

int men(int x){

switch (x){
case 1:
a=29;
printf("%d \n",a);
break;
case 2:
b=43;
printf("%d %d \n",a,b);
break;
case 3:
c=55;
printf("%d %d %d \n",a,b,c);
break;
case 4:
d=86;
printf("%d %d %d %d \n",a,b,c,d);
break;
}
return 0;
}

int main() {
int op;
char op1[50]="1.Opcion 1";
char op2[50]="2.Opcion 2";
char op3[50]="3.Opcion 3";
char op4[50]="4.Salir";
  do{ op=numeroEntero(op1,op2,op3,op4,1,4);
  men(op);
} while(op!=4);


return 0;
}


Y el código si funciona como debería. Gracias!!!
Aunque no entiendo todavía porque el compilador no me marcaba esos errores y porque el valor de las otras variables si me guardaba.

No hacer doble post
#5
Es cierto, pero mi problema es que se va entrando a las opciones por orden por lo tanto la variable a, b, c se definen antes de ser imprimidas y la variable es la que cambia mientras que las demas continuan con los valores asignados
#6
Programación C/C++ / Ayuda con funciones.
30 Mayo 2017, 06:15 AM
Hola, necesito un programa que use funciones creadas por uno mismo y probé este codigo
#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int numeroEntero(char op1[50],char op2[50],char op3[50],char op4[50], int min, int max){
int o;
printf("%s\n%s\n%s\n%s\n", op1,op2,op3,op4);
do{ printf("Ingrese una opcion entre %d y %d: ", min, max);
scanf("%d", &o);
} while(o>max || o <min);
return o;
}

int men(x){
int a,b,c,d;
switch (x){
case 1:
a=29;
printf("%d \n",a);
break;
case 2:
b=43;
printf("%d %d \n",a,b);
break;
case 3:
c=55;
printf("%d %d %d \n",a,b,c);
break;
case 4:
d=86;
printf("%d %d %d %d \n",a,b,c,d);
break;
}

}

int main() {
int op;
char op1[50]="1.Opcion 1";
char op2[50]="2.Opcion 2";
char op3[50]="3.Opcion 3";
char op4[50]="4.Salir";
  do{ op=numeroEntero(op1,op2,op3,op4,1,4); //llama a la funcion que valida el numero y muestra el texto con los nombres de las opciones
  men(op);                                                  //llama a la funcion que gestiona el menu
} while(op!=4);


return 0;
}



El problema es que al entrar a la opción 1 la variable a toma el valor de 29, el cual no debería cambiar, pero al entrar a las otras 3 opciones muestra que a toma el valor del número de la opción ingresada.
Por favor alguien me puede ayudar con lo que pasa en el código.