Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <ctype.h>
- #include <locale.h>
- typedef struct Flat
- {
- int floor, countRoom, Square;
- struct {
- char district[20];
- char street[20];
- }Adress;
- struct Flat* next;
- } Flat;
- int compare(Flat *el1, Flat *el2){
- if(strcmp(el1->Adress.district,el2->Adress.district)>0)
- return 1;
- return 0;
- }
- //int proverka(Flat *First, Flat *Last){
- // Flat *el = NULL;
- // for (el = First; el->next != NULL; el = el->next)
- // if(compare(el, el->next) == 1)
- // return 1;
- // return 0;
- //
- //}
- void swap(Flat *el){ //смена соседних элементов
- Flat *tmp = NULL;
- tmp = el;
- el=el->next;
- el->next = tmp;
- return;
- }
- int sort(Flat *First, Flat *Last){ //сортировка
- Flat *el1 = NULL, *el2 = NULL, *el = NULL;
- int size = 0, j = 0, i = 0;
- for (el = First; el->next != NULL;)
- if (compare(el,el->next) == 1)
- swap(el);
- else
- el=el->next;
- return 0;
- int push(struct Flat *First,struct Flat *Last)
- {
- int tmp = 0;
- while(1)
- {
- struct Flat* el = NULL;
- el = (struct Flat*)malloc(sizeof(struct Flat));
- if (el == NULL)
- {
- printf("Не удалось выделить память под элемент списка.\n");
- return 0;
- }
- el->next = NULL;
- if (First == NULL)
- First = Last = el;
- else
- {
- Last->next = el;
- Last = Last->next;
- }
- printf("\nВведите данные квартиры! \n\n");
- printf("Введите количество комнат: ");
- scanf("%d", &el->countRoom);
- printf("Введите площадь комнаты: ");
- scanf("%d", &el->Square);
- printf("Введите этаж: ");
- scanf("%d", &el->floor);
- printf("Введите район: ");
- scanf("%s", el->Adress.district);
- printf("Введите улицу: ");
- scanf("%s", el->Adress.street);
- printf("%s \n",el->Adress.street);
- printf("Хотите ввести еще квартиру? (1 - да, 0 - нет): ");
- scanf("%d",&tmp);
- if(tmp == 0)
- {
- printf("Ну как хотите.\n\n");
- sort(First, Last);
- return 0;
- }
- if(tmp == 0)
- return 0;
- }
- return 0;
- }
- int printFlat(Flat *First, Flat *Last){
- Flat *el = NULL;
- int i = 0;
- for (el = First; el != NULL; el = el->next, i++)
- {
- printf("Информация о %d квартире:\n",i);
- printf("Количество комнат: %d\n", el->countRoom);
- printf("Площадь комнаты: %d\n", el->Square);
- printf("Этаж: %d\n", el->floor);
- printf("Район: %s", el->Adress.district);
- printf("Улица: %s", el->Adress.street);
- }
- return 0;
- }
- int findFlat(Flat *First, Flat *Last){
- int k = 0, i = 0;
- Flat *el = NULL;
- printf("Введите количество комнат:");
- scanf("%d", &k);
- printf("Квартиры, подходящие под параметры:\n");
- for (el = First; el!= Last; el = el->next)
- if(el->countRoom == k){
- printf("Количество комнат: %d\n", el->countRoom);
- printf("Площадь комнаты: %d\n", el->Square);
- printf("Этаж: %d\n", el->floor);
- printf("Район: %s", el->Adress.district);
- printf("Улица: %s", el->Adress.street);
- i++;
- }
- if(i==0)
- printf("их нет(\n\n");
- return 0;
- }
- int callFunction(int k, Flat *First, Flat *Last){
- switch(k){
- case 1:
- push(First, Last);
- break;
- case 2:
- printFlat(First, Last);
- break;
- case 3:
- findFlat(First, Last);
- break;
- case 4:
- push(First, Last);
- break;
- case 5:
- return 0;
- default:
- printf("Вы ввели не хорошую циферку, попробуйте еще!\n\n");
- break;
- }
- return 0;
- }
- int main(void)
- {
- setlocale(LC_ALL, "Russian");
- struct Flat *First = NULL, *Last = NULL;
- int k;
- printf("Гамарджома дорогой друг! Что хотите?\n1)Создать список квартир\n2)Вывести список квартир на экран\n3)Найти квартиру с заданным количеством комнат\n4)Добавить квартиру в список\n5)Выйти и закончить работу\n\nВведите циферку: ");
- while(1){
- if(!scanf("%d",&k)){
- printf("Вы вводите не цифру!\n");
- break;
- }
- callFunction(k, First, Last);
- printf("1)Создать список квартир\n2)Вывести список квартир на экран\n3)Найти квартиру с заданным количеством комнат\n4)Добавить квартиру в список\n5)Выйти и закончить работу\n\nВведите циферку:");
- }
- printFlat(First, Last);
- struct Flat *el = NULL, *tmp = NULL;
- for (el = First; el != NULL;)
- {
- tmp = el;
- el = el->next;
- free(tmp);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement