diff --git a/cv2/program.c b/cv2/program.c index 6cb5be0..adc0a08 100644 --- a/cv2/program.c +++ b/cv2/program.c @@ -3,156 +3,38 @@ #include #include +#define SIZE 100 //колличество пицц + 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 price; }; // блюда -- название и цена -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 +void insertSort(struct pizza array[100], int finalCounter){ + struct pizza temp; +  for(int i = 1; i < finalCounter; i++){ +   if(array[i].price < array[i-1].price){ +    for(int j = i-1; j >= 0; j--){ +     if(array[i].price > array[j].price){ +      break; +     } +     else if(array[i].price == array[j].price){ +      if(strcmp(array[i].name, array[j].name) < 0){ +       temp = array[j]; +       array[j] = array[i]; +       array[i] = temp; +       i = j; +      } +     } +     else{ +      temp = array[j]; +     array[j] = array[i]; +     array[i] = temp; +     i = j; +     } +    } +   } +  } } int main(){ @@ -171,19 +53,12 @@ int main(){ getchar(); //убирает перенос строки с ввода } - int* printOrder = calloc(finalCounter, sizeof(int)); //полная запись всего результата - getOrder(dishesList, finalCounter, printOrder); - getAlphabetOrder(printOrder, dishesList, finalCounter); + insertSort(dishesList, finalCounter); for(int j = 0; j < finalCounter; j++){ //вывод ->>>>>>> 4c98f69b4ddc69a1a8afad98899d692228dc1269 - printf("%s", dishesList[printOrder[j]].name); - printf("%f\n", dishesList[printOrder[j]].price); + printf("%s", dishesList[j].name); + printf("%f\n", dishesList[j].price); } return 0; -<<<<<<< HEAD -} -======= -} ->>>>>>> 4c98f69b4ddc69a1a8afad98899d692228dc1269 +} \ No newline at end of file diff --git a/cv4/a_train.c b/cv4/a_train.c index f456201..6c2c34a 100644 --- a/cv4/a_train.c +++ b/cv4/a_train.c @@ -2,22 +2,40 @@ #include #include #include "a_train.h" +<<<<<<< HEAD struct car* add_car(struct car* first, const char* target){ if(!strcmp(target, "")) return NULL; if(!first){ +======= + +struct car* add_car(struct car* first, const char* target){ + if(!strcmp(target, "")) + return NULL; + + if(!first || !strcmp(first->value, "")){ +>>>>>>> 2033291145353cf5a29605aaa70523464ca047fa first = (struct car*)calloc(1, sizeof(struct car)); strcpy(first->value, target); first->next = NULL; return first; } +<<<<<<< HEAD struct car* temp = first; while(temp->next != NULL) temp = temp->next; +======= + + struct car* temp = first; + + while(temp->next != NULL) + temp = temp->next; + +>>>>>>> 2033291145353cf5a29605aaa70523464ca047fa temp->next = (struct car*)calloc(1, sizeof(struct car)); strcpy(temp->next->value, target); temp->next->next = NULL; @@ -36,6 +54,7 @@ void print_train(struct car* first){ void cancel_train(struct car* first){ if(!first) return; +<<<<<<< HEAD struct car* temp = first; struct car* next = temp->next; @@ -46,6 +65,18 @@ void cancel_train(struct car* first){ temp = next; } +======= + + struct car* temp = first; + struct car* next = temp->next; + + while(next != NULL){ + next = temp->next; + free(temp); + temp = next; + } + +>>>>>>> 2033291145353cf5a29605aaa70523464ca047fa first = NULL; } @@ -58,8 +89,19 @@ struct car* clear_train(struct car* first, const char* target){ while(temp != NULL){ next = temp->next; +<<<<<<< HEAD if(!strcmp(temp->value, target)) free(temp); +======= + if(!strcmp(temp->value, target)) { + if(temp == first) { + free(first); + first = NULL; + } + else + free(temp); + } +>>>>>>> 2033291145353cf5a29605aaa70523464ca047fa temp = next; if(!first) first = temp;