Изменил(а) на 'cv2/program.c'

This commit is contained in:
Oleksandr Hryshchenko 2021-11-09 09:20:29 +00:00
parent 40192942a1
commit 2e11a7a179

View File

@ -6,47 +6,48 @@
struct dish{ struct dish{
char name[100]; char name[100];
float price; 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){ int comparator (const void * p1, const void * p2){
return (*(int*)p1 - *(int*)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){ //сортиовка по ценам void getOrder(struct dish dishesList[100], int dishesNumber, int* result){ //сортиовка по ценам
float allPrises[dishesNumber]; //все цены float allPrises[dishesNumber]; //все цены
float ascendingPrises[dishesNumber]; // для сортировки в будущем float ascendingPrises[dishesNumber]; // для сортировки в будущем
int* order = calloc(dishesNumber, sizeof(int)); //порядок возрастающих элементов в масиве int* order = calloc(dishesNumber, sizeof(int)); //порядок возрастающих элементов в масиве
int counter = 0; //счетчик int counter = 0; //счетчик
>>>>>>> 4c98f69b4ddc69a1a8afad98899d692228dc1269
for(int i = 0; i < dishesNumber; i++){ for(int i = 0; i < dishesNumber; i++){
allPrises[i] = dishesList[i].price; allPrises[i] = dishesList[i].price;
ascendingPrises[i] = allPrises[i]; ascendingPrises[i] = allPrises[i];
} }
<<<<<<< HEAD ascendingPrises = insertSort(ascendingPrices, dishesNumber); //процеес сортировки
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++){ //запись порядка элемента в основном массиве for(int i = 0; i < dishesNumber; i++){ //запись порядка элемента в основном массиве
>>>>>>> 4c98f69b4ddc69a1a8afad98899d692228dc1269
for(int j = 0; j < dishesNumber; j++){ for(int j = 0; j < dishesNumber; j++){
STEP: STEP:
if(ascendingPrises[i] == allPrises[j]){ 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)); //копирование одного в другой memcpy(result, order, dishesNumber * sizeof(int)); //копирование одного в другой
} }
void getAlphabetOrder(int* order, struct dish dishesList[100], int dishesNumber){ //сорторвка по алфавиту void getAlphabetOrder(int* order, struct dish dishesList[100], int dishesNumber){ //сорторвка по алфавиту
>>>>>>> 4c98f69b4ddc69a1a8afad98899d692228dc1269
int* result = calloc(dishesNumber, sizeof(int)); int* result = calloc(dishesNumber, sizeof(int));
int counter = 0; int counter = 0;
int temp; int temp;
for(int i = 0; i < dishesNumber; i++){ 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++){ //чтение масивов их сравнение for(int j = i; j < dishesNumber; j++){ //чтение масивов их сравнение
if(dishesList[order[i]].price == dishesList[order[j]].price){ //сравнение если цены совпадают if(dishesList[order[i]].price == dishesList[order[j]].price){ //сравнение если цены совпадают
if(dishesList[order[i]].name[0] < dishesList[order[j]].name[0]){ // если цены сопали но уже в порядке алфавита 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; break;
} }
else{ else{
>>>>>>> 4c98f69b4ddc69a1a8afad98899d692228dc1269
temp = order[i]; temp = order[i];
order[i] = order[j]; order[i] = order[j];
order[j] = temp; order[j] = temp;
} }
} }
<<<<<<< HEAD
else{
=======
else{ //цены совпали но не в порядке алфавита else{ //цены совпали но не в порядке алфавита
>>>>>>> 4c98f69b4ddc69a1a8afad98899d692228dc1269
temp = order[i]; temp = order[i];
order[i] = order[j]; order[i] = order[j];
order[j] = temp; 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]; //запись сортирвки result[counter] = order[i]; //запись сортирвки
counter++; counter++;
} }
@ -176,14 +123,9 @@ int main(){
getAlphabetOrder(printOrder, dishesList, finalCounter); getAlphabetOrder(printOrder, dishesList, finalCounter);
for(int j = 0; j < finalCounter; j++){ //вывод for(int j = 0; j < finalCounter; j++){ //вывод
>>>>>>> 4c98f69b4ddc69a1a8afad98899d692228dc1269
printf("%s", dishesList[printOrder[j]].name); printf("%s", dishesList[printOrder[j]].name);
printf("%f\n", dishesList[printOrder[j]].price); printf("%f\n", dishesList[printOrder[j]].price);
} }
return 0; return 0;
<<<<<<< HEAD }
}
=======
}
>>>>>>> 4c98f69b4ddc69a1a8afad98899d692228dc1269