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[ID], CantViajesVeh[ID],kmAcumVeh[ID], tfv[ID]);
/*
Esto es para debug, esta bueno para saber en que registro pincha
printf("Vehiculo: %d n", vCodVeh[ID]);
printf("CantViajes: %d n",CantViajesVeh[ID]);
printf("KM: %10.2f n", kmAcumVeh[ID]);
printf("Total F %10.2f nn", tfv[ID]);
*/
}
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[ID])
{
aux = ID;
ID = ID[i+1];
ID[i+1] = aux;
k=i;
}
}
cota=k;
}
}
Espero que les sirva

