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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ejercicio en C de Vectores 1.2[Borland 5.02]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ejercicio en C de Vectores 1.2[Borland 5.02]  (Leído 2,520 veces)
SonaArtica

Desconectado Desconectado

Mensajes: 53


Estudiando...♥


Ver Perfil WWW
Ejercicio en C de Vectores 1.2[Borland 5.02]
« en: 6 Noviembre 2012, 05:53 am »

Bueno sigo cn lo mismo,otro ejercicio de vectores,quisiera saber si creen que le falta algo.A mi parecer esta bien el ejercicio,corre perfecto si lo funcionan.Espero sus opiniones  ;D
Código
  1. #include <stdio.h>
  2. #include <conio.h>
  3. /* Se deben cargar en un vector los tiempos de clasificacion de 60 autos.
  4. Los autos se identifican con numeros correlativos del 1 al 60.Se pide determinar:
  5.       a)Numero de Auto que clasifico primero.
  6.       b)Peor tiempo de clasificacion. */
  7. main(){
  8.       int tiempo[60];
  9.       int autoganador;
  10.       int i;
  11.       float peortiempo,mejortiempo;
  12.       for(i=1;i<60;i++){
  13.                        printf("Ingrese Tiempo de auto %d \n",i);
  14.                        fflush(stdin);
  15.                        scanf(" %f",&tiempo[i-1]);
  16.                        if (i==1 || tiempo[i-1]<mejortiempo){
  17.                            autoganador=i;
  18.                            mejortiempo=tiempo[i-1];
  19.                        }//Cierre del If que saca al auto ganador
  20.                        if(i==1 || tiempo[i-1]>autoganador){
  21.                              peortiempo=tiempo[i-1];
  22.                        }//Cierre del If que saca el peor tiempo
  23.       }
  24.       printf("El auto ganador es %d con el tiempo de %f \n",autoganador,mejortiempo);
  25.       printf("El auto con peor tiempo fue de %f \n",peortiempo);
  26. return 0;
  27. }


En línea

<z
soyloqbuskas

Desconectado Desconectado

Mensajes: 219


¡El conocimiento es de todos!


Ver Perfil
Re: Ejercicio en C de Vectores 1.2[Borland 5.02]
« Respuesta #1 en: 6 Noviembre 2012, 10:55 am »

¡Buenas SonaArtica!

No he ejecutado tu programa pero creo que tiene un par de fallos...

1) el bucle se ejecuta 59 veces cuando deberia ser 60. El array va desde 0 hasta 59 y tu bucle va desde 1 hasta 59. Asi que el bucle escribelo asi:
Código
  1. for(i=0;i<60;i++){
  2. //codigo
  3. }

2) y los if del bucle no son del todo correcto si te fijas, pones
Código
  1.                        if (i==1 || tiempo[i-1]<mejortiempo){
  2.                                 //codigo
  3.                        }
  4.                        if(i==1 || tiempo[i-1]>autoganador){
  5.                                 //codigo
  6.                        }
  7.  
Para el caso i==1 entras en ambos if y lo que hagas en el segundo puede anular lo que hayas hecho en el primero. Y ademas no calculas bien el perdedor.....(usa else para que tu programa sea mas eficiente)

Yo lo haria asi...:
Código
  1. #include <stdio.h>
  2. #include <conio.h>
  3. /* Se deben cargar en un vector los tiempos de clasificacion de 60 autos.
  4. Los autos se identifican con numeros correlativos del 1 al 60.Se pide determinar:
  5.       a)Numero de Auto que clasifico primero.
  6.       b)Peor tiempo de clasificacion. */
  7. main(){
  8.       int tiempo[60];
  9.       int autoganador=0;
  10.       int i=0;
  11.       float peortiempo,mejortiempo;
  12.  
  13.        //el primero es el mejor y el peor al mismo tiempo ya que es el unico
  14.       printf("Ingrese Tiempo de auto %d \n",i);
  15.       fflush(stdin);
  16.       scanf(" %f",&tiempo[0]);
  17.       peortiempo=tiempo[0];
  18.  
  19.       //pedimos que ingrese datos y comparamos
  20.       for(i=1;i<60;i++){
  21.                        printf("Ingrese Tiempo de auto %d \n",i);
  22.                        fflush(stdin);
  23.                        scanf(" %f",&tiempo[i]);
  24.                        if (tiempo[i]<mejortiempo){
  25.                            autoganador=i;
  26.                            mejortiempo=tiempo[i];
  27.                        }//Cierre del If que saca al auto ganador
  28.                        else(tiempo[i]>peortiempo){//ESTA LINEA HA CAMBIADO!
  29.                              peortiempo=tiempo[i];  
  30.                        }//Cierre del If que saca el peor tiempo
  31.       }
  32.       printf("El auto ganador es %d con el tiempo de %f \n",autoganador+1,mejortiempo);
  33.       printf("El auto con peor tiempo fue de %f \n",peortiempo);
  34. return 0;
  35. }
  36.  

En caso de empate  con mejor tiempo tanto tu programa como el mio imprimiran el primer coche....

NOTA: el codigo lo he hecho a ojo y no lo he compilado pero creo que es correcto el algoritmo.

Un saludo.


« Última modificación: 6 Noviembre 2012, 11:03 am por soyloqbuskas » En línea

"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ejercicio en C de Vectores 1.2[Borland 5.02]
« Respuesta #2 en: 6 Noviembre 2012, 17:06 pm »

Bueno sigo cn lo mismo,otro ejercicio de vectores,quisiera saber si creen que le falta algo.A mi parecer esta bien el ejercicio,corre perfecto si lo funcionan.Espero sus opiniones
Se puede mejorar evitando el uso de la biblioteca conio de Borland, cambiando la definición de la función "main" y evitando el uso de "fflush(stdin);", las razones de ello se explican en el tema |Lo que no hay que hacer en C/C++. Nivel basico|.

En cuanto al caso especial (primer valor) este se puede eliminar si se utilizan dos bucles: el primero para obtener los valores y el segundo para encontrar el máximo y el mínimo.

Un saludo
En línea

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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ejercicio en C de Vectores 1[Borland 5.02]
Programación C/C++
SonaArtica 7 3,292 Último mensaje 6 Noviembre 2012, 06:20 am
por SonaArtica
Ejercicio en C de Vectores 1.0[Borland 5.02]
Programación C/C++
SonaArtica 0 3,214 Último mensaje 6 Noviembre 2012, 02:14 am
por SonaArtica
Ejercicio en C de Vectores 1.1[Borland 5.02]
Programación C/C++
SonaArtica 0 1,623 Último mensaje 6 Noviembre 2012, 05:28 am
por SonaArtica
[PROBLEMA]Ejercicio en C de Vectores 1.3[Borland 5.02]
Programación C/C++
SonaArtica 1 2,242 Último mensaje 6 Noviembre 2012, 17:04 pm
por HRSLASH
Problema con ejercicio de Vectores.
Programación C/C++
Starscream-94 2 1,965 Último mensaje 17 Marzo 2013, 11:36 am
por pacoperico
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines