#include #include #include #include struct dish{ char name[100]; float price; <<<<<<< HEAD }; int comparator (const void * p1, const void * p2){ return (*(int*)p1 - *(int*)p2); } void getOrder(struct dish dishesList[100], int dishesNumber, int* result){ float allPrises[dishesNumber]; float ascendingPrises[dishesNumber]; int* order = calloc(dishesNumber, sizeof(int)); int counter = 0; float temp; ======= }; // блюда -- название и цена int comparator (const void * p1, const void * p2){ return (*(int*)p1 - *(int*)p2); } // сравнитель для сортировки void getOrder(struct dish dishesList[100], int dishesNumber, int* result){ //сортиовка по ценам float allPrises[dishesNumber]; //все цены float ascendingPrises[dishesNumber]; // для сортировки в будущем int* order = calloc(dishesNumber, sizeof(int)); //порядок возрастающих элементов в масиве int counter = 0; //счетчик >>>>>>> 4c98f69b4ddc69a1a8afad98899d692228dc1269 for(int i = 0; i < dishesNumber; i++){ allPrises[i] = dishesList[i].price; ascendingPrises[i] = allPrises[i]; } <<<<<<< HEAD qsort(ascendingPrises, dishesNumber, sizeof(int), comparator); for(int i = 0; i < dishesNumber; i++){ ======= qsort(ascendingPrises, dishesNumber, sizeof(int), comparator); //процеес сортировки for(int i = 0; i < dishesNumber; i++){ //запись порядка элемента в основном массиве >>>>>>> 4c98f69b4ddc69a1a8afad98899d692228dc1269 for(int j = 0; j < dishesNumber; j++){ STEP: if(ascendingPrises[i] == allPrises[j]){ for(int y = 0; y < counter; y++){ if(order[y] == j){ j++; goto STEP; } } order[counter] = j; counter++; break; } } } <<<<<<< HEAD memcpy(result, order, dishesNumber * sizeof(int)); } void getAlphabetOrder(int* order, struct dish dishesList[100], int dishesNumber){ ======= memcpy(result, order, dishesNumber * sizeof(int)); //копирование одного в другой } void getAlphabetOrder(int* order, struct dish dishesList[100], int dishesNumber){ //сорторвка по алфавиту >>>>>>> 4c98f69b4ddc69a1a8afad98899d692228dc1269 int* result = calloc(dishesNumber, sizeof(int)); int counter = 0; int temp; for(int i = 0; i < dishesNumber; i++){ <<<<<<< HEAD for(int j = i; j < dishesNumber; j++){ if(dishesList[order[i]].price == dishesList[order[j]].price){ if(dishesList[order[i]].name[0] < dishesList[order[j]].name[0]){ break; } else if(dishesList[order[i]].name[0] == dishesList[order[j]].name[0]){ if(dishesList[order[i]].name[1] < dishesList[order[j]].name[1]){ break; } else{ ======= for(int j = i; j < dishesNumber; j++){ //чтение масивов их сравнение if(dishesList[order[i]].price == dishesList[order[j]].price){ //сравнение если цены совпадают if(dishesList[order[i]].name[0] < dishesList[order[j]].name[0]){ // если цены сопали но уже в порядке алфавита break; } else if(dishesList[order[i]].name[0] == dishesList[order[j]].name[0]){ //если цены совпали но первые буквы одиннаковые if(dishesList[order[i]].name[1] < dishesList[order[j]].name[1]){ break; } else{ >>>>>>> 4c98f69b4ddc69a1a8afad98899d692228dc1269 temp = order[i]; order[i] = order[j]; order[j] = temp; } } <<<<<<< HEAD else{ ======= else{ //цены совпали но не в порядке алфавита >>>>>>> 4c98f69b4ddc69a1a8afad98899d692228dc1269 temp = order[i]; order[i] = order[j]; order[j] = temp; } } } <<<<<<< HEAD result[counter] = order[i]; counter++; } memcpy(order, result, dishesNumber * sizeof(int)); } int main(){ struct dish dishesList[100]; int i = 0; int finalCounter = 0; for(i = 0; fgets(dishesList[i].name, 100, stdin); i++){ finalCounter++; if(dishesList[i].name[0] == '\n' || dishesList[i].name[0] == '\0') finalCounter--; scanf("%f", &dishesList[i].price); if(dishesList[i].price == 0.0){ finalCounter--; break; } getchar(); } int* printOrder = calloc(finalCounter, sizeof(int)); getOrder(dishesList, finalCounter, printOrder); getAlphabetOrder(printOrder, dishesList, finalCounter); for(int j = 0; j < finalCounter; j++){ ======= result[counter] = order[i]; //запись сортирвки counter++; } memcpy(order, result, dishesNumber * sizeof(int)); //запись результата в main } int main(){ struct dish dishesList[100]; //список блюдд int i = 0; int finalCounter = 0; //конечный счётчик колличества блюд for(i = 0; fgets(dishesList[i].name, 100, stdin); i++){ // запись блюд с ввода finalCounter++; if(dishesList[i].name[0] == '\n' || dishesList[i].name[0] == '\0') finalCounter--; //если название пустое scanf("%f", &dishesList[i].price); if(dishesList[i].price == 0.0){ //если цены нету finalCounter--; break; } getchar(); //убирает перенос строки с ввода } int* printOrder = calloc(finalCounter, sizeof(int)); //полная запись всего результата getOrder(dishesList, finalCounter, printOrder); getAlphabetOrder(printOrder, dishesList, finalCounter); for(int j = 0; j < finalCounter; j++){ //вывод >>>>>>> 4c98f69b4ddc69a1a8afad98899d692228dc1269 printf("%s", dishesList[printOrder[j]].name); printf("%f\n", dishesList[printOrder[j]].price); } return 0; <<<<<<< HEAD } ======= } >>>>>>> 4c98f69b4ddc69a1a8afad98899d692228dc1269