Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: AnungUnRama en 9 Mayo 2013, 01:03 AM

Título: ¿Me ayudarían a corregir este código?
Publicado por: AnungUnRama en 9 Mayo 2013, 01:03 AM
#include<stdio.h>
#include<conio.h>
int main()
{
      int TT,SB,ANM,canti,cost,z,salir;
      do {
          printf(" \n Ingrese la clave correcta por favor \n");
          scanf("%d", &z);
          } while (z != 123);
      rp: printf("\n");
      rsalir: printf("\n");
      printf("\n ¿Qué desea ordenar? \n (Vacas=1, Dinosaurios=2, Pavos=3) \n");
      scanf("&d", &ANM);
      if (ANM=1)
      cost=200;
      else if (ANM=2)
      cost=600;
      else if (ANM=3)
      cost=100;
      else
      goto rp;
      printf("\n ¿Qué cantidad desea ordenar? \n");
      scanf("%d", &canti);
      SB=canti*cost;
      TT=TT+SB;
      printf("\n Producto: %d", ANM);
      printf("\n Costo: %d", cost);
      printf("\n Cantidad: %d", canti);
      printf("\n Subtotal: %d", SB);
      printf("\n ¿Desea ordenar algo mas? \n (si != 0, no=0) \n");
      scanf("%d", &salir);
      getchar();
      if (salir != 0)
      goto rsalir;
      else
      printf("Su total es: %d", TT);
}
Título: Re: ¿Me ayudarían a corregir este código?
Publicado por: nicolas_cof en 9 Mayo 2013, 01:10 AM
Creo que deberias pasarte por esta sección...

Reglas Subforo de Programación C/C++ (http://foro.elhacker.net/programacion_cc/reglas_del_subforo-t251603.0.html)

Acuerdate de usar los tags para postear codigo fuente

[code=c] Codigo fuente [/code]

[code] Codigo fuente [/code]

Salu2
Título: Re: ¿Me ayudarían a corregir este código?
Publicado por: AnungUnRama en 9 Mayo 2013, 01:25 AM
Muchas gracias, no lo había visto. (:
Título: Re: ¿Me ayudarían a corregir este código?
Publicado por: Luchoz95 en 9 Mayo 2013, 01:26 AM
la verdad que nunca utilice la librería conio, pero no veo errores en el código, solamente limpia el buffer antes de cada scanf con fflush!
fflush(stdin);
Título: Re: ¿Me ayudarían a corregir este código?
Publicado por: nicolas_cof en 9 Mayo 2013, 01:30 AM
Luchoz95, deberias leer esta sección...

[Nivel Basico] Lo que no hay que hacer en C/C++ (http://bit.ly/9frQME)

Salu2
Título: Re: ¿Me ayudarían a corregir este código?
Publicado por: amchacon en 9 Mayo 2013, 10:58 AM
Cita de: Luchoz95 en  9 Mayo 2013, 01:26 AM
la verdad que nunca utilice la librería conio, pero no veo errores en el código, solamente limpia el buffer antes de cada scanf con fflush!
fflush(stdin);
fflush(stdin) debe ser algo prohibido de usar. Solo funciona en Windows, es una buena costumbre hacer aplicaciones multiplataforma.
Título: Re: ¿Me ayudarían a corregir este código?
Publicado por: leosansan en 9 Mayo 2013, 16:30 PM
Tienes un error en

Código (cpp) [Seleccionar]
scanf("&d", &ANM);

que debería ser

Código (cpp) [Seleccionar]
scanf("%d", &ANM);

Además del uso innecesario y no conveniente de la librería conio, como ya te han indicado en el enlace de nicolas_cof.

Además la variable TT has de inicializarla a cero y mejor no usar goto, hay otras opciones menos impredecibles:


Código (cpp) [Seleccionar]
#include<stdio.h>
#include<locale.h>
int main()
{
     setlocale(LC_ALL, "Spanish");
     int TT=0,SB,ANM,canti,cost,z,salir;
     do {
         printf(" \n Ingrese la clave correcta por favor \n");
        scanf("%d", &z);
         } while (z != 123);
     while (1){
       do {
       printf("\n ¿Qué desea ordenar? \n (Vacas=1, Dinosaurios=2, Pavos=3) \n");
     scanf("%d", &ANM);
     if (ANM==1)
       cost=200;
     else if (ANM==2)
       cost=600;
     else  if (ANM==3)
       cost=100;
     else printf("\n\nIngrese 1, 2 o 3\n");
     }while (ANM<1 || ANM>3);
     printf("\n ¿Qué cantidad desea ordenar? \n");
     scanf("%d", &canti);
     SB=canti*cost;
     TT+=SB;
     printf("\n Producto: %d", ANM);
     printf("\n Costo: %d", cost);
     printf("\n Cantidad: %d", canti);
     printf("\n Subtotal: %d", SB);
     printf("\n ¿Desea ordenar algo mas? \n (si != 0, no=0) \n");
     scanf("%d", &salir);
     if (salir == 0)
      break;
   }
      printf("Su total es: %d", TT);
      return 0;
}


Y he aquí una salida del código:

Código (cpp) [Seleccionar]


Ingrese la clave correcta por favor
123

¿Qué desea ordenar?
(Vacas=1, Dinosaurios=2, Pavos=3)
6


Ingrese 1, 2 o 3

¿Qué desea ordenar?
(Vacas=1, Dinosaurios=2, Pavos=3)
1

¿Qué cantidad desea ordenar?
3

Producto: 1
Costo: 200
Cantidad: 3
Subtotal: 600
¿Desea ordenar algo mas?
(si != 0, no=0)
1

¿Qué desea ordenar?
(Vacas=1, Dinosaurios=2, Pavos=3)
2

¿Qué cantidad desea ordenar?
4

Producto: 2
Costo: 600
Cantidad: 4
Subtotal: 2400
¿Desea ordenar algo mas?
(si != 0, no=0)
0
Su total es: 3000


Saluditos!. ....   (http://st.forocoches.com/foro/images/smilies/ciao.gif)

P.D: El uso de la librería locate y lo de spanish es para usar el teclado con caracteres en español, acentos y signos como ¿, si no te salen símbolos "raros".