| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
abarrozo
Registrado: 27 Jul 2012 Mensajes: 6 Ubicación: Empleado, Estudiante
| Publicado: 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 | |  | rir3760

Registrado: 01 Oct 2004 Mensajes: 7516 Ubicación: Mexico
| Publicado: 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 | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |