#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;
}