si, ho fatto, ora ho un secondo problema....
per modificare il tabellone punteggi di una corsa ciclistica
ho scritto questo if che dovrebbe effettuarmi vari swap:
codice:
if ( tempi_classifica[e]> tempi_classifica[i]) { cswap(corridore[e].nome, corridore[i].nome); cswap(corridore[e].cognome, corridore[i].cognome); iswap(&tempi_classifica[e],&tempi_classifica[i]); iswap(&ciclisti_classifica[e],&ciclisti_classifica[i]); iswap(&caselle_classifica[e],&caselle_classifica[i]); iswap(&giri_classifica[e],&giri_classifica[i]); iswap(&caselle_giro_classifica[e],&caselle_giro_classifica[i]); }
con queste funzioni:
iswap: (per gli interi)
codice:
#include <stdio.h> #include "mylib.h" void iswap(int *p, int*q) { int tmp; tmp=*p; *p=*q; *q=tmp; }
cswap: (per le stringhe)
codice:
#include <stdio.h> #include <string.h> #include "mylib.h" void cswap(char *p, char *q) { char tmp[20]; strcpy(tmp,q); strcpy(q,p); strcpy(p,tmp); }
stranamente tutti gli iswap si muovono cordinatamente fra loro, mentre i cswap, seppur muovendosi non cordinano gli spostamenti con gli iswap.
mi spiego meglio:
ho questa layout:
'nome' 'cognome' n oo:mm:ss n_giri caselle_percorse
da n in poi si muovono tutti cordinatamente mentre il nome ed il cognome rimangono vicini fra loro ma si spostano scambiano seguendo una logica a me sconosciuta xD
mi stanno fumando le orecchie xD
grazie in anticipo, anche se questa è davvero difficile