mojonjunior
Usuario (Estados Unidos)

Nro de vehiculo km de salida km de llegada la tarifa es de $6.25 el kilometro se pide procesar la informacion de lo viajes realizados e informar: 1. mayor cantidad de kilometros recorridos en un viaje 2. total de km recorrido por cada vehiculo 3. numero de vehiculo con mayor cantidad de km recorridos 4. Mostrar ordenado por cantidad de viajes realizados nro vehiculo, cant viajes, total de kilometros recorridos, total facturado */ #include<stdio.h> #include<stdlib.h> #include<conio.h> /*si no les funciona el parar, es por el compilador, en el de la facu funciona. reemplazarlo por printf("nn"; getch(); y comentar la linea de #define*/ #define parar printf("nn"; system("pause"; int VehiculoMayorKM(float *); float TotalFacturadoV(float, float, float); void Ordenar(int *, int *); main() { int codVeh; float kmSalida=0; float kmLlegada=0; int vCodVeh[]={1,2,3,4,5} ; float kmAcumVeh[5]={0}; int CantViajesVeh[5]={0}; int ID[5]={0,1,2,3,4}; float MaxKmViaje=0; float tfv[5]={0}; float tf={0}; const float tarifa = {6.25}; int i; /*carga de datos*/ printf("CodVehiculo: "; scanf("%d", &codVeh); while (codVeh!=0 && codVeh>0 && codVeh<6) { do { printf("KmSalida: "; scanf("%f", &kmSalida); }while (kmSalida<0); do { printf("KmLlegada: "; scanf("%f", &kmLlegada); }while (kmLlegada<=0 ||kmSalida==kmLlegada); //Me fijo si el viaje que cargo es el maximo en kilometrajes MaxKmViaje = MaxKmViaje<(kmLlegada-kmSalida)?(kmLlegada-kmSalida):MaxKmViaje; //acumulo los kilometros por vehiculo kmAcumVeh[codVeh-1]= kmAcumVeh[codVeh-1] + (kmLlegada-kmSalida); //cuento los viajes CantViajesVeh[codVeh-1] = CantViajesVeh[codVeh-1] + 1; //total facturado por vehiculo tfv[codVeh-1]= TotalFacturadoV(kmLlegada ,kmSalida, tarifa); //total facturado tf = tf + (kmLlegada-kmSalida)* tarifa; printf("CodVehiculo: "; scanf("%d", &codVeh); } codVeh = VehiculoMayorKM(tfv); //impresiones printf("nn"; printf("Mayor cantidad de km en un viaje: %10.2f KM", MaxKmViaje); parar; //Total por vehiculo for(i=0;i<5;i++) { printf("vehiculo: %d %10.2f Km Recorridos n",vCodVeh, kmAcumVeh ); } parar; //Muestro el vehiculo que mas kilometros recorrio. codVeh = VehiculoMayorKM(tfv); printf("vehiculo: %d %10.2f Km Recorridos n",codVeh, kmAcumVeh[codVeh-1]); parar; //ordeno el vector ID Ordenar(ID,CantViajesVeh); //salida de datos printf("Reporte nn"; for(i=0;i<5;i++) { printf("Vehiculo: %d CantViajes: %d KM: %10.2f Total F %10.2f n", vCodVeh, CantViajesVeh,kmAcumVeh, tfv); /* Esto es para debug, esta bueno para saber en que registro pincha printf("Vehiculo: %d n", vCodVeh); printf("CantViajes: %d n",CantViajesVeh); printf("KM: %10.2f n", kmAcumVeh); printf("Total F %10.2f nn", tfv); */ } parar; } int VehiculoMayorKM(float*tfv) { int i; float aux=0; int CodVeh=0; for(i=0;i<5;i++) { if(aux<tfv) { aux= tfv; CodVeh = i+1; //me da el codigo de vehiculo } } return CodVeh; } float TotalFacturadoV(float kmLlegada, float kmSalida, float tarifa) { return (kmLlegada-kmSalida)* tarifa; } void Ordenar(int*ID, int*CantViajesVeh) { int i=0, k=1, aux=0, cota=4; while(k!=0) { k=0; for(i=0;i<cota;i++) { if(CantViajesVeh[ID[i+1]]> CantViajesVeh) { aux = ID; ID = ID[i+1]; ID[i+1] = aux; k=i; } } cota=k; } } Espero que les sirva