UTNianos

Versión completa: Info 1 (electronica) ejercicio en lenguaje C vectores y matrices
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola me podria ayudar con este ejercicio

Para una carrera de autos se permite realizar 3 vueltas clasificatorias para cada uno
de los participantes.
Se pide que al finalizar las vueltas clasificatorias de 10 participantes se muestre en
pantalla ordenado por orden de largada:
NOMBRE CONDUCTOR Nº DEL AUTO MEJOR VUELTA POSICION
XXXX XX XX.XX XX

lo que hice hasta el momento fue esto:

#include <stdio.h>
#include <stdlib.h>

int main()
{
int v[3][10],vueltas[3][10],vi[10],i,j,aux;
char nombres[30][10];
for(i=0;i<10;i++)
{
printf("Nombre del Conductor: ");
gets(nombres[i]);
printf("Ingrese Numero de Auto: ");
scanf("%d",&v[0][i]);
printf("Posicion: ");
scanf("%d",&v[1][i]);
for(j=0;j<3;j++)
{
printf("Ingrese el tiempo de la vuelta %d: ",j+1);
scanf("%d",&vueltas[j][i]);
}
vi[j]=j;
}
for(i=0;i<10;i++)
{
if(vueltas[0][i]<vueltas[1][i]) v[1][i]=1;
else if(vueltas[1][i]<vueltas[0][i]) v[2][i]=2;
else v[2][i]=3;
}
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
{
if(v[1][i]>v[1][j])
{
aux=vi[i];
vi[i]=vi[j];
vi[j]=aux;
}
}
}
for(i=0;i<10;i++)
{
printf("%s\t %d\t %d\t %d\t",nombres[vi[i]],v[0][vi[i]],v[1][vi[i]],v[2][vi[i]]);
}
return 0;
}
Ayudame a guiarme un poco..

En el array v almacenás la información del vehículo:
  • En [0] el número de Auto
  • En [1] la posición de largada
  • En [2] el mejor tiempo de vuelta

En el array vueltas almacenás la info de las vueltas de cada vehículo

En el array vi siempre almacenas el valor 3 .. ¿ Por qué ?
¿ No querrás almacenar el tiempo total que estuvo corriendo ?
Algo así :


vi[10] = [0,0,0,0,0,0,0,0,0,0];
for(j=0;j<3;j++)
{
printf("Ingrese el tiempo de la vuelta %d: ",j+1);
scanf("%d",&vueltas[j][i]);
vi[j] += vueltas [j][i] ;
}
//Si haces vi[j] = j; acá, siempre va a ser vi[3] = 3;



O tal vez almacenar la posición relativa del array pero en ese caso sería


vi[i] = i ;



Para que cuando hagas esto, ordenes dentro de vi por orden de largada según la posición relativa ..
Cita:


for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
{
if(v[1][i]>v[1][j])
{
aux=vi[i];
vi[i]=vi[j];
vi[j]=aux;
}
}
}


mmm... porque lo haces con matrices? no sería más conveniente usar estructuras? mmm medio confuso hubieras subido el enunciado original.
URLs de referencia