Problema nell'ordinare una struct in C

di il
1 risposte

Problema nell'ordinare una struct in C

#include <stdio.h>
#include <string.h>



struct carta{
char valore;
char seme;
};






void ordina_carte(struct carta carte[]){

int i, j, m,scambi;
struct carta temp;

/* Il ciclo piu` esterno rappresenta i passi principali dell'algoritmo.
Ciascuna sua iterazione colloca uno degli elementi nella posizione
finale. */
for (i = 0; i < 12-1 ; i++) {
scambi=0;

/* Il ciclo piu` interno cerca l'indice del piu` piccolo tra gli
elementi non ancora ordinati a, ..., a[n-1]. */
j = i;
for (j = 1; j < 12-i; j++) {
if(carte[j].valore<='7' && carte[j].valore>='1'){
if(carte[j].valore < carte[j-1].valore ){ //'J'<'Q'<'K'<'A'//

temp = carte[j];
carte[j] = carte[j-1];
carte[j-1] = temp;
scambi++;
}
}
else if(carte[j].valore=='J' && carte[j].valore=='Q' && carte[j].valore=='K' &&carte[j].valore=='A' ){
if('J'<'Q'<'K'<'A'){
temp = carte[j];
carte[j] = carte[j-1];
carte[j-1] = temp;
scambi++;
}
}
}

if(scambi==0)
break;
}
}




int main(void) {

int i;
int t;


struct carta carte[12]={
{'3','Q'},
{'7','C'},
{'Q','F'},
{'4','P'},
{'3','P'},
{'Q','P'},
{'A','C'},
{'2','P'},
{'K','F'},
{'6','C'},
{'7','Q'},
{'J','C'}
};

ordina_carte(carte);

for(i=0;i<12;i++){
printf("%c %c\n",carte.valore , carte.seme);
}





/*
ES1
Scrivere una funzione che accetti come parametro un array di carte e che lo ordini secondo l'ordine 2<3<4<5<6<7<J<Q<K<A.
Invocare nel main la funzione sull'array"carte" e quindi stampare il risultato.
*/

/*
ES2

Come l'esercizio precedente ma facendo in modo che, a parità di valore, le carte siano ordinate per seme secondfo l'ordine C<Q<F<P.
*/

return 0;
}

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte