diff --git a/cv2/program.c b/cv2/program.c index 6cb5be0..8a5c7bc 100644 --- a/cv2/program.c +++ b/cv2/program.c @@ -6,47 +6,48 @@ 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); } // сравнитель для сортировки +int* insertSort(int* array, int size){ + int temp; + for(int i = 1; i < size; i++){ +  if(array[i] < array[i-1]){ +   for(int j = i-1; j >= 0; j--){ +    if(array[i] >= array[j]){ +     break; +    } +    else{ +     temp = array[j]; +     array[j] = array[i]; +     array[i] = temp; +     i = j; +    } +   } +  } + } + + return array; +} + + 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); //процеес сортировки + ascendingPrises = insertSort(ascendingPrices, dishesNumber); //процеес сортировки for(int i = 0; i < dishesNumber; i++){ //запись порядка элемента в основном массиве ->>>>>>> 4c98f69b4ddc69a1a8afad98899d692228dc1269 for(int j = 0; j < dishesNumber; j++){ STEP: if(ascendingPrises[i] == allPrises[j]){ @@ -63,34 +64,15 @@ void getOrder(struct dish dishesList[100], int dishesNumber, int* result){ //с } } -<<<<<<< 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]){ // если цены сопали но уже в порядке алфавита @@ -101,53 +83,18 @@ void getAlphabetOrder(int* order, struct dish dishesList[100], int dishesNumber) 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++; } @@ -176,14 +123,9 @@ int main(){ 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 +} \ No newline at end of file