/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

hay un error que no lo encuentro

 
      Índice del Foro elrincondelc.com -> C/C++ en General
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
abarrozo



Registrado: 27 Jul 2012
Mensajes: 6
Ubicación: Empleado, Estudiante

MensajePublicado: 20/04/2014 6:23 pm
Título: hay un error que no lo encuentro

El programa ingresa un código (se supone que de articulos) y luego el importe, hasta que el código sea cero, luego mostrar el código del mayor y del menor, y en el menor me ingresa el cero que justamente es para salir, puede haber otra forma, intente con do while, saludos anexo el código, lo toque por todos lados, espero me ayuden a encontrar el error, yo hice también que cuando ponga cero, a ese cero lo cargue en otra variable pero igual da error, dice que el código del articulo con menor precio es 0, gracias
va el código:::

# include<stdio.h>
# include<conio.h>
int main()
{
int cod,may,men,codmay,codmen,cero;
float importe=0,importemay=0,importemen=0;

do{ printf("ingrese Codigo:\n");
scanf("%d",&cod);

if (cod!=0)
{
printf("ingrese importe\n");
scanf("%f",&importe);

if (importe>importemay)
{

codmay=cod;
importemay=importe;
}

else if (importe<importemen)
{
importemen=importe;
codmen=cod;}


}

} while (cod!=0);


printf("el importe menor es el codigo %d\n",codmen);
printf("el importe mayor es el codigo %d\n",codmay);

getch();
}
_________________
siempre aprender no ocupa espacio
Volver arriba
Yahoo Messenger
rir3760



Registrado: 01 Oct 2004
Mensajes: 7516
Ubicación: Mexico

MensajePublicado: 21/04/2014 4:51 am
Título:

Lo primero a cambiar:
* Si no hay una razón de peso es mejor evitar el uso de la biblioteca conio de Borland.
* Se debe indicar el valor de retorno de la función main con (al menos) "return 0;".
* Las variables "cero", "men" y "may" se deben eliminar ya que no las utilizas en el programa.
* Si vas a imprimir una cadena literal terminada con '\n' utiliza la función puts.

Con los cambios:
Código:
#include <stdio.h>

int main(void)
{
   int cod, codmay, codmen;
   float importe = 0, importemay = 0, importemen = 0;
   
   do {
      puts("Ingrese Codigo:");
      scanf("%d", &cod);
     
      if (cod != 0){
         puts("Ingrese importe:");
         scanf("%f", &importe);
         
         if (importe > importemay){
            codmay = cod;
            importemay = importe;
         }else if (importe < importemen) {
            importemen = importe;
            codmen = cod;
         }
      }
   }while (cod != 0);
   
   printf("Importe menor es el codigo %d\n", codmen);
   printf("Importe mayor es el codigo %d\n", codmay);
   
   return 0;
}


El error que mencionas es lógico: para que se almacene el importe máximo se tiene que introducir un valor mayor que cero y para que se almacene el mínimo tal como esta el programa se debe introducir un valor menor que cero.

Soluciones hay varias, por ejemplo utilizando una bandera para saber si se trata del primer valor:
Código:
#include <stdio.h>

int main(void)
{
   int cod, codmay, codmen;
   float importe = 0, importemay = 0, importemen = 0;
   int primer_valor = 1;
   
   do {
      puts("Ingrese Codigo:");
      scanf("%d", &cod);
     
      if (cod != 0){
         puts("Ingrese importe:");
         scanf("%f", &importe);
         
         if (primer_valor){
            /* El primer valor se debe almacenar en ambas variables */
            codmay = cod;
            importemay = importe;
            codmen = cod;
            importemen = importe;
            primer_valor = 0;
         }else if (importe > importemay){
            codmay = cod;
            importemay = importe;
         }else if (importe < importemen) {
            codmen = cod;
            importemen = importe;
         }
      }
   }while (cod != 0);
   
   if (!primer_valor){
      printf("Importe menor es el codigo %d\n", codmen);
      printf("Importe mayor es el codigo %d\n", codmay);
   }
   
   return 0;
}


Un saludo
_________________
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Volver arriba
      Índice del Foro elrincondelc.com -> C/C++ en General
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com