add
This commit is contained in:
commit
c0bf64e800
187
cv2/program.c
187
cv2/program.c
@ -3,156 +3,38 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#define SIZE 100 //колличество пицц
|
||||||
|
|
||||||
struct dish{
|
struct dish{
|
||||||
char name[100];
|
char name[100];
|
||||||
float price;
|
int 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){
|
void insertSort(struct pizza array[100], int finalCounter){
|
||||||
return (*(int*)p1 - *(int*)p2);
|
struct pizza temp;
|
||||||
} // сравнитель для сортировки
|
for(int i = 1; i < finalCounter; i++){
|
||||||
|
if(array[i].price < array[i-1].price){
|
||||||
void getOrder(struct dish dishesList[100], int dishesNumber, int* result){ //сортиовка по ценам
|
for(int j = i-1; j >= 0; j--){
|
||||||
float allPrises[dishesNumber]; //все цены
|
if(array[i].price > array[j].price){
|
||||||
float ascendingPrises[dishesNumber]; // для сортировки в будущем
|
break;
|
||||||
int* order = calloc(dishesNumber, sizeof(int)); //порядок возрастающих элементов в масиве
|
}
|
||||||
int counter = 0; //счетчик
|
else if(array[i].price == array[j].price){
|
||||||
>>>>>>> 4c98f69b4ddc69a1a8afad98899d692228dc1269
|
if(strcmp(array[i].name, array[j].name) < 0){
|
||||||
|
temp = array[j];
|
||||||
for(int i = 0; i < dishesNumber; i++){
|
array[j] = array[i];
|
||||||
allPrises[i] = dishesList[i].price;
|
array[i] = temp;
|
||||||
ascendingPrises[i] = allPrises[i];
|
i = j;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
<<<<<<< HEAD
|
else{
|
||||||
qsort(ascendingPrises, dishesNumber, sizeof(int), comparator);
|
temp = array[j];
|
||||||
|
array[j] = array[i];
|
||||||
for(int i = 0; i < dishesNumber; i++){
|
array[i] = temp;
|
||||||
=======
|
i = j;
|
||||||
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(){
|
int main(){
|
||||||
@ -171,19 +53,12 @@ int main(){
|
|||||||
getchar(); //убирает перенос строки с ввода
|
getchar(); //убирает перенос строки с ввода
|
||||||
}
|
}
|
||||||
|
|
||||||
int* printOrder = calloc(finalCounter, sizeof(int)); //полная запись всего результата
|
insertSort(dishesList, finalCounter);
|
||||||
getOrder(dishesList, finalCounter, printOrder);
|
|
||||||
getAlphabetOrder(printOrder, dishesList, finalCounter);
|
|
||||||
|
|
||||||
for(int j = 0; j < finalCounter; j++){ //вывод
|
for(int j = 0; j < finalCounter; j++){ //вывод
|
||||||
>>>>>>> 4c98f69b4ddc69a1a8afad98899d692228dc1269
|
printf("%s", dishesList[j].name);
|
||||||
printf("%s", dishesList[printOrder[j]].name);
|
printf("%f\n", dishesList[j].price);
|
||||||
printf("%f\n", dishesList[printOrder[j]].price);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
<<<<<<< HEAD
|
|
||||||
}
|
}
|
||||||
=======
|
|
||||||
}
|
|
||||||
>>>>>>> 4c98f69b4ddc69a1a8afad98899d692228dc1269
|
|
||||||
|
|||||||
@ -2,22 +2,40 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "a_train.h"
|
#include "a_train.h"
|
||||||
|
<<<<<<< HEAD
|
||||||
struct car* add_car(struct car* first, const char* target){
|
struct car* add_car(struct car* first, const char* target){
|
||||||
if(!strcmp(target, ""))
|
if(!strcmp(target, ""))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if(!first){
|
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));
|
first = (struct car*)calloc(1, sizeof(struct car));
|
||||||
strcpy(first->value, target);
|
strcpy(first->value, target);
|
||||||
first->next = NULL;
|
first->next = NULL;
|
||||||
return first;
|
return first;
|
||||||
}
|
}
|
||||||
|
<<<<<<< HEAD
|
||||||
|
|
||||||
struct car* temp = first;
|
struct car* temp = first;
|
||||||
|
|
||||||
while(temp->next != NULL)
|
while(temp->next != NULL)
|
||||||
temp = temp->next;
|
temp = temp->next;
|
||||||
|
|
||||||
|
=======
|
||||||
|
|
||||||
|
struct car* temp = first;
|
||||||
|
|
||||||
|
while(temp->next != NULL)
|
||||||
|
temp = temp->next;
|
||||||
|
|
||||||
|
>>>>>>> 2033291145353cf5a29605aaa70523464ca047fa
|
||||||
temp->next = (struct car*)calloc(1, sizeof(struct car));
|
temp->next = (struct car*)calloc(1, sizeof(struct car));
|
||||||
strcpy(temp->next->value, target);
|
strcpy(temp->next->value, target);
|
||||||
temp->next->next = NULL;
|
temp->next->next = NULL;
|
||||||
@ -36,6 +54,7 @@ void print_train(struct car* first){
|
|||||||
void cancel_train(struct car* first){
|
void cancel_train(struct car* first){
|
||||||
if(!first)
|
if(!first)
|
||||||
return;
|
return;
|
||||||
|
<<<<<<< HEAD
|
||||||
|
|
||||||
struct car* temp = first;
|
struct car* temp = first;
|
||||||
struct car* next = temp->next;
|
struct car* next = temp->next;
|
||||||
@ -46,6 +65,18 @@ void cancel_train(struct car* first){
|
|||||||
temp = next;
|
temp = next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=======
|
||||||
|
|
||||||
|
struct car* temp = first;
|
||||||
|
struct car* next = temp->next;
|
||||||
|
|
||||||
|
while(next != NULL){
|
||||||
|
next = temp->next;
|
||||||
|
free(temp);
|
||||||
|
temp = next;
|
||||||
|
}
|
||||||
|
|
||||||
|
>>>>>>> 2033291145353cf5a29605aaa70523464ca047fa
|
||||||
first = NULL;
|
first = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,8 +89,19 @@ struct car* clear_train(struct car* first, const char* target){
|
|||||||
|
|
||||||
while(temp != NULL){
|
while(temp != NULL){
|
||||||
next = temp->next;
|
next = temp->next;
|
||||||
|
<<<<<<< HEAD
|
||||||
if(!strcmp(temp->value, target))
|
if(!strcmp(temp->value, target))
|
||||||
free(temp);
|
free(temp);
|
||||||
|
=======
|
||||||
|
if(!strcmp(temp->value, target)) {
|
||||||
|
if(temp == first) {
|
||||||
|
free(first);
|
||||||
|
first = NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
free(temp);
|
||||||
|
}
|
||||||
|
>>>>>>> 2033291145353cf5a29605aaa70523464ca047fa
|
||||||
temp = next;
|
temp = next;
|
||||||
if(!first)
|
if(!first)
|
||||||
first = temp;
|
first = temp;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user