Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Naimaderis en 21 Diciembre 2016, 23:25 pm



Título: Estoy colocando bien las variables globales, y el prototipo de las funciones
Publicado por: Naimaderis en 21 Diciembre 2016, 23:25 pm
¿Este codigo esta bien? Funcionar, funciona como debe, pero me refiero, a la identacion, al prototipo de las funciones y a las variables globales.
¿Las variables globales estan bien colocadas? ¿Alguna deberia ser estatica y la declare como global? Aun tengo un poco de dudas con respecto a eso.

Código
  1. #include <stdio.h>
  2.  
  3. void pantallacomprarmanzanas(void);
  4. void pantalla1(void);
  5. void pantallacomprarmanzanas(void); // prototipo de funciones //
  6.  
  7. int monedas = 50;
  8. int cantidadmanzanas = 5;
  9. int preociomanzanas = 2; // variable que se utilizaran en toda la fucnion //
  10. int cant_eleccion;
  11. enum Accion {COMPRAR, VENDER};
  12. enum Accion manzanas;
  13.  
  14. int main(void){
  15.  
  16.    while (8 != 5){ /* con esto quiero que el programa no termine nunca */
  17.        pantalla1();
  18.        switch(manzanas) {
  19.  
  20.            case COMPRAR:
  21.                cantidadmanzanas = cantidadmanzanas + cant_eleccion;
  22.                monedas = monedas - cant_eleccion * preociomanzanas;
  23.                break;
  24.  
  25.            case VENDER:
  26.                cantidadmanzanas = cantidadmanzanas - cant_eleccion;
  27.                monedas = monedas + cant_eleccion * preociomanzanas;
  28.                break;
  29.        }
  30.    }
  31. }
  32.  
  33.  
  34. void inventario(void){
  35.    printf("1 - Manz anas = %d \n",cantidadmanzanas);
  36.    int eleccion;
  37.    scanf("%d", &eleccion);
  38.    if (eleccion == 1){pantallacomprarmanzanas();}
  39. }
  40.  
  41. void pantalla1(void){
  42.    system("cls");
  43.    printf("Monedas: %d \n",monedas);
  44.    inventario();
  45. }
  46.  
  47. void pantallacomprarmanzanas(void){
  48.    printf("Que desea hacer con las manzanaz?\n");
  49.    int eleccion;
  50.    printf("1 - Comprar\n");
  51.    printf("2 - Vender\n");
  52.    scanf("%d", &eleccion);
  53.    if (eleccion == 1){manzanas = COMPRAR; printf("¿Que cantidad desea comprar?"); scanf("%d",&cant_eleccion); }
  54.    else
  55.    if (eleccion == 2){manzanas = VENDER; printf("¿Que cantidad desea vender?"); scanf("%d",&cant_eleccion); }
  56. }
  57.  

(Se podria hacer mucho mas facil con arrays, pero aun no he llegado a ese capitulo del libro)


Título: Re: Estoy colocando bien las variables globales, y el prototipo de las funciones
Publicado por: engel lex en 21 Diciembre 2016, 23:55 pm
main debe tener retorno y normalmente debe ser 0

Código:
while(1)

los (void) no son necesario, pero si los vas a usas se consistente y colocaselo al main


Título: Re: Estoy colocando bien las variables globales, y el prototipo de las funciones
Publicado por: Naimaderis en 22 Diciembre 2016, 00:29 am
main debe tener retorno y normalmente debe ser 0

Código:
while(1)

los (void) no son necesario, pero si los vas a usas se consistente y colocaselo al main

Creí que era necesario colocar siempre que la función no reciba parámetro, como mi compilador me deja pasar muchas cosas, siento que debo prestar demasiada atención a realizar una correcta estructura.

Con respecto a lo del retorno del main, ¿Te refieres al "return 0"? Crei que era solo para indicarle al sistema que se ejecuto todo correctamente, entonces, como nunca iba a llegar a ese debido al
Código:
 while (8 != 5) 
lo omiti. ¿Como es eso del
Código:
 while (1) 
?


Título: Re: Estoy colocando bien las variables globales, y el prototipo de las funciones
Publicado por: engel lex en 22 Diciembre 2016, 01:21 am
Citar
¿Como es eso del
para todo efecto una variable numerica de cualquier tipo, 0 es false, cualquier otro valor es true, no es necesario que hagas al programa calcular esa operación, coloca un 1 y listo, eso se interpretará como true

Citar
Con respecto a lo del retorno del main, ¿Te refieres al "return 0"? Crei que era solo para indicarle al sistema que se ejecuto todo correctamente

toda función que no sea void debe llevar return