#include <stdio.h>
#include <stdlib.h>
struct pessoa {
char nome[20];
int idade;
};
int compararIdade (const void *x, const void *y) {
int pri = ((struct pessoa *)x)->idade;
int seg = ((struct pessoa *)y)->idade;
return (pri - seg);
}
int compararNome (const void *a, const void *b) {
return strcmp (((struct pessoa
*)a
)->nome
,((struct pessoa
*)b
)->nome
); }
int main () {
int i;
int idades[]={9,7,8,5,2};
char nomes[][20] = {"Joao","Pedro","Ana","Maria","Teste"};
struct pessoa item[5];
printf("Pessoas sem ordem:\n"); for (i = 0; i < 5; i++) {
strcpy(item
[i
].
nome, nomes
[i
]); item[i].idade = idades[i];
printf("%s: %d\n", item
[i
].
nome, item
[i
].
idade); }
qsort(item
, 5, sizeof(struct pessoa
), compararIdade
);
printf("Pessoas ordenadas por idade:\n"); for (i = 0; i < 5; i++) {
printf("%s: %d\n", item
[i
].
nome, item
[i
].
idade); }
qsort(item
, 5, sizeof(struct pessoa
), compararNome
);
printf("Pessoas ordenadas por nome:\n"); for (i = 0; i < 5; i++) {
printf("%s: %d\n", item
[i
].
nome, item
[i
].
idade); }
return(0);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnN0cnVjdCBwZXNzb2EgewogICAgY2hhciBub21lWzIwXTsKICAgIGludCBpZGFkZTsKfTsKCmludCBjb21wYXJhcklkYWRlIChjb25zdCB2b2lkICp4LCBjb25zdCB2b2lkICp5KSB7CiAgICBpbnQgcHJpID0gKChzdHJ1Y3QgcGVzc29hICopeCktPmlkYWRlOwogICAgaW50IHNlZyA9ICgoc3RydWN0IHBlc3NvYSAqKXkpLT5pZGFkZTsKICAgIHJldHVybiAocHJpIC0gc2VnKTsKfQoKaW50IGNvbXBhcmFyTm9tZSAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikgewogICAgcmV0dXJuIHN0cmNtcCAoKChzdHJ1Y3QgcGVzc29hICopYSktPm5vbWUsKChzdHJ1Y3QgcGVzc29hICopYiktPm5vbWUpOwp9CgppbnQgbWFpbiAoKSB7CiAgIGludCBpOwogICBpbnQgaWRhZGVzW109ezksNyw4LDUsMn07CiAgIGNoYXIgbm9tZXNbXVsyMF0gPSAgeyJKb2FvIiwiUGVkcm8iLCJBbmEiLCJNYXJpYSIsIlRlc3RlIn07CiAgIHN0cnVjdCBwZXNzb2EgaXRlbVs1XTsKCiAgIHByaW50ZigiUGVzc29hcyBzZW0gb3JkZW06XG4iKTsKICAgZm9yIChpID0gMDsgaSA8IDU7IGkrKykgewogICAgIHN0cmNweShpdGVtW2ldLm5vbWUsIG5vbWVzW2ldKTsKICAgICBpdGVtW2ldLmlkYWRlID0gaWRhZGVzW2ldOwogICAgIHByaW50ZigiJXM6ICVkXG4iLCBpdGVtW2ldLm5vbWUsIGl0ZW1baV0uaWRhZGUpOwogICB9CgogICBxc29ydChpdGVtLCA1LCBzaXplb2Yoc3RydWN0IHBlc3NvYSksIGNvbXBhcmFySWRhZGUpOwoKICAgcHJpbnRmKCJQZXNzb2FzIG9yZGVuYWRhcyBwb3IgaWRhZGU6XG4iKTsKICAgZm9yIChpID0gMDsgaSA8IDU7IGkrKykgewogICAgIHByaW50ZigiJXM6ICVkXG4iLCBpdGVtW2ldLm5vbWUsIGl0ZW1baV0uaWRhZGUpOwogICB9CgogICBxc29ydChpdGVtLCA1LCBzaXplb2Yoc3RydWN0IHBlc3NvYSksIGNvbXBhcmFyTm9tZSk7CgogICBwcmludGYoIlBlc3NvYXMgb3JkZW5hZGFzIHBvciBub21lOlxuIik7CiAgIGZvciAoaSA9IDA7IGkgPCA1OyBpKyspIHsKICAgICBwcmludGYoIiVzOiAlZFxuIiwgaXRlbVtpXS5ub21lLCBpdGVtW2ldLmlkYWRlKTsKICAgfQoKICAgcmV0dXJuKDApOwp9Cg==