#include #include #include struct celovek{ //definovanie štruktúry s názvom 'celovek' int golos; char name[60]; } void printAll(struct celovek celovek[50],int number_celovek){ //funkcia na vytlačenie všetkých prvkov poľa 'celovek' printf("Vysledky:\n"); for (size_t i = 0; i < number_celovek; i++){ printf("%d", celovek[i].golos); printf("%s", celovek[i].name); } } void readDellSame(bool odinakovyi, bool dobre, int* number_celovek, struct celovek celovek[50]){ //funkcia na čítanie a mazanie duplicitných záznamov z poľa 'celovek' for (size_t i = 0; i >=0; i++) { char step.name[60]; int step.golos =0; int b = scanf("%d", &step.golos); if (b == -1){ break; } if (step.golos == 0){ dobre = true; } fgets(step.name, 60 , stdin); //prečítať riadok z stdin for (size_t j = 0; j <*number_celovek; j++){ if(strcmp (celovek[j].name, step.name)==0 && dobre == false ){ //porovnať reťazce celovek[j].golos += step.golos; odinakovyi = true; i--; } } if ((odinakovyi == false|| *number.celovek == 0) && dobre == false) { clovek[i].holos = step_holos; strcpy(celovek[i].name, step.name); //strcpy - oblasti pamäte kopírovania *number.celovek = *number.celovek +1 ; } odinakovyi = false; } } void sort(int number.celovek, struct celovek celovek[50]){ //funkcia na triedenie poľa 'celovek' na základe počtu 'golov' a 'name' for (size_t i = 0; i celovek[j].name[1]){ int tmp = celovek[i].golos; char tmp_name[60]; strcpy(tmp_name, celovek[i].name); celovek[i].golos = celovek[j].golos; strcpy(celovek[i].name, celovek[j].name); celovek[j].golos = tmp; strcpy(celovek[j].name, tmp_name); } if(celovek[i].name[1] == celovek[j].name[1]){ if(celovek[i].name[2] > celovek[j].name[2]){ int tmp = celovek[i].golos; char tmp_name[60]; strcpy(tmp_name, celovek[i].name); celovek[i].golos = celovek[j].golos; strcpy(celovek[i].name, celovek[j].name); celovek[j].golos = tmp; strcpy(celovek[j].name, tmp_name); } } } } } } int main(){ struct celovek celovek[50]; int number.celovek = 0; bool odinakovyi = false; bool dobre = false; readDellSame(odinakovyi, dobre, &number.celovek,celovek); for (size_t i = 0; i < number.celovek-1; i++){ for (size_t j = 0; j < number_clovek - i-1; j++){ if (celovek[j].golos < celovek[j+1].golos){ int tmp = celovek[j+1].golos; char tmp_name[60]; strcpy(tmp_name, celovek[j+1].name); celovek[j+1].golos = celovek[j].golos; strcpy(celovek[j+1].name, celovek[j].name); celovek[j].golos = tmp; strcpy(celovek[j].name, tmp_name); } } } sort(number.celovek, celovek); printAll(celovek, number.celovek); return 0; }