#include #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); //čítanie riadku zo štandardného vstupu for (size_t j = 0; j <*number_celovek; j++){ if(strcmp (celovek[j].name, step_name)==0 && dobre == false ){ //porovnanie dvoch reťazcov celovek[j].golos += step_golos; odinakovyi = true; i--; } } if ((odinakovyi == false|| *number_celovek == 0) && dobre == false){ celovek[i].golos = step_golos; strcpy(celovek[i].name, step_name); //kopírovanie obsahu jedného reťazca do druhého *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); if (__builtin_isfinite(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_celovek - 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; }