elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayudita con programacion en c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayudita con programacion en c  (Leído 3,648 veces)
Langosta Sexual

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Ayudita con programacion en c
« en: 6 Junio 2013, 01:59 am »

 Es una duda que cualquiera con 1 semana de experiencia podria resolver (imagino), soy bastante nuevo programando en c, mi profesor de programacion nos mando a realizar este programa:

 En una farmacia se venden medicamentos genericos y no genericos, los medicamentos genericos tienen un descuento de 15%, los medicamentos no genericos tienen un impuesto de 12%, realizar un programa que permita calcular el monto a pagar de ambos medicamentos y tambien si hay vuelto (cambio) o no.

Yo lo estoy haciendo asi

Código
  1. #include <stdio.h>
  2. #include <conio.h>
  3.  
  4. main ()
  5. {
  6.    double mg, ng, d=0.15, iva=1.12, p, p1, mpg, mpng;
  7.  
  8.    printf("Ingrese el precio de el medicamento generico:");
  9.    scanf("%lf", &mg);
  10.    if (mg<=0)
  11.    { printf("No puede introducir un precio negativo o igual a cero");
  12.    return mg;      
  13. }
  14. return 0;
  15. }
  16.  

Cuando introdusco un valor mayor a 0 el programa me va bien, pero cuando introdusco uno menor o igual a cero el programa se cierra sin montrar el segundo print ni retornando a la variable mg, ¿Que tengo malo?.


En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Ayudita con programacion en c
« Respuesta #1 en: 6 Junio 2013, 02:16 am »

Usas las conio y seguramente usarás también el desfasado y descatalogado devcpp... Es de verguenza que los profesores enseñen esas prácticas.

Despues de mis quejas de viejo, te cuento donde está el error:

Código
  1. if (mg<=0)
  2.   { printf("No puede introducir un precio negativo o igual a cero");
  3.   return mg;      
  4. }

Devcpp no incluye pausa al final del programa (por eso te he calao  ;-)). Tienes que ponersela tú mismo:

Código
  1. if (mg<=0)
  2. {
  3.   printf("No puede introducir un precio negativo o igual a cero");
  4.   getchar(); // Pausa
  5.   return mg;      
  6. }

Ahora sí deberías ver el printf. El return se aplica al main, y significaría que el main devuelve ese valor. Si lo que querías es mostrar su valor:

Código
  1. if (mg<=0)
  2. {
  3.   printf("No puede introducir un precio negativo o igual a cero");
  4.   printf("\n El valor introducido es: %d",mg);
  5.   getchar();  
  6.   return 1; // Por convenio, devolvemos 1 en el main para indicar un error.
  7. }

Puedes cambiar el getch(); que tienes ahí abajo por un getchar();. Así podrás quitar las conio, además debería ser int main para que sea más acorde al estándar. Total el código quedaría:
Código
  1. #include <stdio.h>
  2.  
  3. int main ()
  4. {
  5.  double mg, ng, d=0.15, iva=1.12, p, p1, mpg, mpng;
  6.  
  7.  printf("Ingrese el precio de el medicamento generico:");
  8.  scanf("%lf", &mg);
  9.  
  10.  if (mg<=0)
  11.  {
  12.     printf("No puede introducir un precio negativo o igual a cero");
  13.     printf("\n El valor introducido es: %d",mg);
  14.     getchar();  
  15.     return 1;      
  16.  }
  17.  
  18.  getchar();
  19.  return 0;
  20. }

Y bueno, si tienes elección te recomendaría que cambiases el Devcpp por Codeblocks, es un IDE mucho más moderno y el lenguaje sigue siendo el mismo.


« Última modificación: 6 Junio 2013, 02:19 am por amchacon » En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Langosta Sexual

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Ayudita con programacion en c
« Respuesta #2 en: 6 Junio 2013, 02:25 am »

Muchas gracias por tu atencion amchacon, actualmente uso el dev c++ (porque es el programa que se usa en la universidad) y necesito aprender en ese ya que si no aceptan el otro que me hablas, en tanto al error del que me hablas, cuando introduzco todo el codigo fuente, me da el mismo error ¿No sabras por que?.
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Ayudita con programacion en c
« Respuesta #3 en: 6 Junio 2013, 02:36 am »

Muchas gracias por tu atencion amchacon, actualmente uso el dev c++ (porque es el programa que se usa en la universidad) y necesito aprender en ese ya que si no aceptan el otro que me hablas, en tanto al error del que me hablas, cuando introduzco todo el codigo fuente, me da el mismo error ¿No sabras por que?.
El lenguaje C es el mismo independientemente que uses Devc++, CodeBlocks, Geany o Visual Studio... Pero bueno, ya les haré un mal de ojo a los profesores de Universidad.

Corrijo el error:

Código
  1. #include <stdio.h>
  2.  
  3. int main ()
  4. {
  5.    double mg, ng, d=0.15, iva=1.12, p, p1, mpg, mpng;
  6.  
  7.    printf("Ingrese el precio de el medicamento generico: ");
  8.    scanf("%lf", &mg);
  9.    getchar();
  10.  
  11.    if (mg<=0)
  12.    {
  13.        printf("No puede introducir un precio negativo o igual a cero");
  14.        printf("\nEl valor que se introdujo es: %d",mg);
  15.        getchar();
  16.        return 1;
  17.    }
  18.  
  19.    getchar();
  20.    return 0;
  21. }
  22.  

Lo que he hecho es poner un getchar() después del scanf para que se "coma" el primer enter.
« Última modificación: 6 Junio 2013, 02:39 am por amchacon » En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Langosta Sexual

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Ayudita con programacion en c
« Respuesta #4 en: 6 Junio 2013, 02:45 am »

Bien, segun lo que me dijiste segui haciendo el programa y me quedo asi:

Código
  1. #include <stdio.h>
  2.  
  3. int main ()
  4. {
  5.   double mg, ng, d=0.15, iva=1.12, p, p1, mpg, mpng;
  6.  
  7.   printf("Ingrese el precio de el medicamento generico: ");
  8.   scanf("%lf", &mg);
  9.   getchar();
  10.  
  11.   if (mg<=0)
  12.   {
  13.       printf("No puede introducir un precio negativo o igual a cero");
  14.       printf("\nEl valor que se introdujo es: %f", mg);
  15.       getchar();
  16.       return 1;
  17.   }
  18.  
  19.     printf("Ingrese monto a pagar:");
  20.     scanf("%lf", &p);
  21.     if (p<=0)
  22.     {
  23.        printf("No puede introducir un precio negativo o igual a cero");
  24.        printf("\n El valor introducido es: %lf", p);
  25.        getchar();  
  26.        return 1;      
  27.     }
  28.  
  29.     mpg=-1*(mg*d)+p;
  30.  
  31.     printf("Su cambio es:%.2lf", mpg);
  32.  
  33.     getchar();
  34.     return 0;
  35. }

El problema ahora es que no me quiere dar el resultado del calculo de la variable mpg, disculpa las molestias.
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Ayudita con programacion en c
« Respuesta #5 en: 6 Junio 2013, 02:49 am »

Lo mismo, después del segundo scanf pon un getchar(); para que se coma el enter.
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Langosta Sexual

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Ayudita con programacion en c
« Respuesta #6 en: 6 Junio 2013, 02:52 am »

Muchas gracias amchacon, ya no te molesto mas jeje, es bueno ver que los mas expertos ayudan a los ''noobs'' por aqui, un saludo.
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Ayudita con programacion en c
« Respuesta #7 en: 6 Junio 2013, 12:20 pm »

Bien, segun lo que me dijiste segui haciendo el programa y me quedo asi:


Pues a mí me quedo así:

Código
  1. #include <stdio.h>
  2.  
  3. int main ()
  4. {
  5.    int opcion;
  6.    float precio_g=0.1,precio_ng=0.1, precio_ng_sin=0.1,precio_g_con=0.1, pagar=-1,no_sufiente=0;
  7.    do
  8.    {
  9.        printf ("\nSeleccione la opcion:\n1.- Generico\n2.- No generico\n3.- Salir:\n");
  10.        scanf ("%d",&opcion);
  11.    }while (opcion<0 || opcion>3);
  12.    if (opcion ==3)
  13.    {
  14.        puts("Hasta la proxima visita.");
  15.        puts ("Presione una tecla para salir");
  16.        getchar();
  17.        getchar();return 1;
  18.    }
  19.    do
  20.    {
  21.        printf ("Introduzca el precio:");
  22.        if (opcion==1)
  23.            scanf ("%f",&precio_g);
  24.        else if (opcion==2)
  25.            scanf ("%f",&precio_ng);
  26.        if (precio_g<0  || precio_ng<=0)
  27.            puts ("Opcion no valida");
  28.    }while (precio_g<0 || precio_ng<=0);
  29.    precio_ng_sin=precio_ng*.85;
  30.    precio_g_con=precio_g*1.12;
  31.    if (opcion==2)
  32.        printf("\nPrecio del no generico: %g\n",precio_ng_sin);
  33.    else
  34.        printf("\nPrecio del generico: %g\n",precio_g_con);
  35.    do
  36.    {
  37.        no_sufiente=0;
  38.        printf ("Introduzca cantidad con que va a pagar: ");
  39.        scanf ("%f",&pagar);
  40.        if ((opcion ==1 && pagar<precio_g_con) || (opcion ==2 && pagar<precio_ng_sin))
  41.            {
  42.                puts("\nCantidad insuficiente");
  43.                no_sufiente=1;
  44.            }
  45.    }while (no_sufiente==1);
  46.    printf("Cantidad a devolver: ");
  47.    if (opcion==2)
  48.        printf("%g\n",pagar-precio_ng_sin);
  49.    else
  50.        printf("%g\n",pagar-precio_g_con);
  51.    puts ("Presione una tecla para salir");
  52.    getchar();
  53.    getchar();
  54.    return 0;
  55. }
  56.  

Como ves, hay que introducir varios do-while para cuando la elección no sea correcta se vuelva atrás y se permita la elección correcta. Y por otro lado declaro las variables, menos la variable opcion, como float, ya que double es una pasada , sólo para números exageradamente grandes.

Saluditos! .... ..

« Última modificación: 6 Junio 2013, 12:23 pm por leosansan » En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Ayudita con programacion en c
« Respuesta #8 en: 6 Junio 2013, 12:22 pm »

Es la mejor opción, pero como no sabía si había dado los while he preferido lanzar un error fatal y punto.
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Ayudita con programacion en c
« Respuesta #9 en: 6 Junio 2013, 12:40 pm »

Es la mejor opción, pero como no sabía si había dado los while he preferido lanzar un error fatal y punto.

Lo entiendo, pero esas tareas que se mandan sin haber explicado mínima-mente los bucles me parecen, cuanto menos, una insensatez, por aplicar un calificativo "suave".

Claro que tampoco hay que esperar mucho de un profesor que les obliga a usar Dev-C++, a estas alturas del siglo XXI. Mira que les cuesta actualizarse, no hay nada como una plaza fija para apoltronarse y pasar de todo. Así se entiende que vaya la enseñanza como va, y luego se quejan de recortes y demás sandeces. Lo malo es que eso no hay ley que lo arregle, es consustancial al género humano el "apoltronamiento" cuando se es fijo y no se tienen más metas que cobrar al final de mes. Asco de gentuza que in-dignifican la bella labor de la enseñanza y lo dice alguien que se ha tirado más de treinta años dedicado, en cuerpo y alma, a la enseñanza universitaria.

Y gracias otra vez por el enlace
;)

Saluditos! .... ..


P.D: Lo de la banderita es que estoy celebrando el día de Canarias .....un mes después. Es que ando despacito, despacito. :laugh: :laugh: :laugh:
« Última modificación: 6 Junio 2013, 13:38 pm por leosansan » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
uNA AYUDITA PLZ
Software
_km3loth_ 1 1,783 Último mensaje 30 Abril 2005, 22:26 pm
por Randomize
Una ayudita...
Diseño Gráfico
PhorSeth 7 3,151 Último mensaje 24 Mayo 2005, 12:31 pm
por + enrique ZP
Una ayudita con la programacion de un bat sencillo
Scripting
Jo$$ 9 3,417 Último mensaje 3 Diciembre 2006, 16:11 pm
por Hendrix
algunas dudas en programacion BATCH(nuevo en esto de programacion)
Scripting
stock_C 8 9,003 Último mensaje 19 Junio 2009, 18:08 pm
por frank30
Programacion Estructurada Vs Programacion Orientada a Objetos
Programación General
79137913 3 8,138 Último mensaje 1 Junio 2011, 18:02 pm
por 79137913
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines