Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- #include <conio.h>
- using namespace std;
- typedef struct
- {
- char name[81]; // Имя игрока
- char surname[81]; // Фамилия иргока
- char pos[4]; // Позиция игрока
- char league[5]; // Лига, в которой играет игрок
- } information;
- typedef struct player
- {
- information info;
- struct player *next;
- } list;
- void vvod(list *p)
- {
- int len, input1, input2, input3, input4,g=0;
- char ch;
- bool f, q1, q2, q3;
- q1=0;
- system("cls");
- fflush(stdin);
- do
- {
- f=0;
- fflush(stdin);
- do
- {
- g = 0;
- char str[27] = {NULL} ;// 30 - макс для ввода,чтоб была возможность стереть лишнее
- do
- {
- system("cls");
- puts("Введите имя игрока");
- puts("Вы можете использовать только буквы латинского алфавита и символы '.' , '-' , \n'space'");
- puts("Данное поле не может быть пустым");
- puts("Максимальное количество символов для данного поля - 25");
- if (g > 25)
- { // если превысили кол-во - будет сообщение по ходу написания
- printf("****************************************");
- printf("\nОШИБКА! Вы превысили лимит в 25 символов");
- printf("\n****************************************\n");
- }
- printf("-------------------------------------------");
- printf("\n%s", str);//видимость простого ввода строки-результат не пропадает
- ch = _getch();// на самом деле посимвольно
- if ((ch == 8) && (g>0))// если backspace - стирается из строки
- {
- g--;
- str[g] = '\0';
- }
- else
- {
- if (ch != 13)
- { // если не энтер
- str[g] = ch;
- g++;
- printf("%c", ch);
- }
- }
- } while ((ch != 13) && (g < 27));//пока не нажмем энтер или вообще не выйдем за рамки
- if (g > 25)
- {
- printf("\nВведите имя заново\n");
- system("pause");
- }
- else
- strcpy_s(p->info.name, (strlen(str)+1), str);
- } while (g > 25);
- len=strlen(p->info.name);
- for (int i = 0; i < len; i++)
- {
- if (((p->info.name[i] >= 'A' && p->info.name[i] <= 'z') || ((p->info.name[i] == '.' ) && (p->info.name[i+1] != '.' )) || ((p->info.name[i] == '-') && (p->info.name[i+1] != '-')) || ((p->info.name[i] == ' ') && (p->info.name[i+1] != ' '))) && ((p->info.name[0] != '.') && (p->info.name[0] != '-') && (p->info.name[0] != ' ')))
- {
- f=1;
- }
- else
- {
- f=0;
- break;
- }
- }
- if (f==0)
- {
- printf("\nОШИБКА! Вы нарушили правила ввода\nПожалуйста введите имя игрока заново\n");
- system("pause");
- }
- system("cls");
- } while (f==0);
- do
- {
- f=0;
- fflush(stdin);
- do
- {
- g = 0;
- char str[30] = {NULL} ;// 30 - макс для ввода,чтоб была возможность стереть лишнее
- do
- {
- system("cls");
- puts("Введите фамилию игрока");
- puts("Вы можете использовать только буквы латинского алфавита и символы '.' , '-' , \n'space'");
- puts("Данное поле не может быть пустым");
- puts("Максимальное количество символов для данного поля - 25");
- if (g > 25)
- { // если превысили кол-во - будет сообщение по ходу написания
- printf("****************************************");
- printf("\nОШИБКА! Вы превысили лимит в 25 символов");
- printf("\n****************************************");
- }
- printf("----------------------------------------------");
- printf("\n%s", str);//видимость простого ввода строки-результат не пропадает
- ch = _getch();// на самом деле посимвольно
- if ((ch == 8) && (g>0))// если backspace - стирается из строки
- {
- g--;
- str[g] = '\0';
- }
- else
- {
- if (ch != 13)
- { // если не энтер
- str[g] = ch;
- g++;
- printf("%c", ch);
- }
- }
- } while ((ch != 13) && (g < 30));//пока не нажмем энтер или вообще не выйдем за рамки
- if (g > 25)
- {
- printf("\nВведите фамилию заново\n");
- system("pause");
- }
- else
- strcpy_s(p->info.surname, (strlen(str)+1), str);
- } while (g > 25);
- len=strlen(p->info.surname);
- for (int i = 0; i < len; i++)
- {
- if (((p->info.surname[i] >= 'A' && p->info.surname[i] <= 'z') || ((p->info.surname[i] == '.' ) && (p->info.surname[i+1] != '.' )) || ((p->info.surname[i] == '-') && (p->info.surname[i+1] != '-')) || ((p->info.surname[i] == ' ') && (p->info.surname[i+1] != ' '))) && ((p->info.surname[0] != '.') && (p->info.surname[0] != '-') && (p->info.surname[0] != ' ')))
- {
- f=1;
- }
- else
- {
- f=0;
- break;
- }
- }
- if (f==0)
- {
- printf("\nОШИБКА! Вы нарушили правила ввода\nПожалуйста введите имя игрока заново\n");
- system("pause");
- }
- system("cls");
- } while (f==0);
- q1=0;
- do
- {
- system("cls");
- puts("Введите позицию игрока");
- puts("-----------------------");
- puts("1.Нападающий");
- puts("2.Полузащитник");
- puts("3.Защитник");
- scanf_s("%d", &input2);
- fflush(stdin);
- switch (input2)
- {
- case 1:
- fflush(stdin);
- strcpy_s(p->info.pos, 4 ,"ST");
- q1=1;
- system("cls");
- break;
- case 2:
- q2=0;
- do
- {
- input3=0;
- system("cls");
- fflush(stdin);
- puts("1.Левый полузащитник");
- puts("2.Центральный полузащитник");
- puts("3.Правый полузащитник");
- scanf_s("%d", &input3);
- fflush(stdin);
- switch (input3)
- {
- case 1:
- fflush(stdin);
- strcpy_s(p->info.pos, 4, "LM");
- q2=1;
- break;
- case 2:
- fflush(stdin);
- strcpy_s(p->info.pos, 4, "CM");
- q2=1;
- break;
- case 3:
- fflush(stdin);
- strcpy_s(p->info.pos, 4,"RM");
- q2=1;
- break;
- default:
- system("cls");
- puts("ОШИБКА! Введите номер 1-3");
- system("pause");
- break;
- }
- } while (q2==0);
- q1=1;
- system("cls");
- break;
- case 3:
- q2=0;
- do
- {
- input4=0;
- system("cls");
- fflush(stdin);
- puts("1.Левый защитник");
- puts("2.Центральный защитник");
- puts("3.Правый защитник");
- scanf_s("%d", &input4);
- fflush(stdin);
- switch (input4)
- {
- case 1:
- strcpy_s(p->info.pos, 4,"LB");
- q2=1;
- break;
- case 2:
- strcpy_s(p->info.pos, 4, "CB");
- q2=1;
- break;
- case 3:
- strcpy_s(p->info.pos, 4, "RB");
- q2=1;
- break;
- default:
- system("cls");
- puts("ОШИБКА! Введите номер 1-3");
- system("pause");
- break;
- }
- } while(q2==0);
- q1=1;
- system("cls");
- break;
- default:
- system("cls");
- puts("ОШИБКА! Введите номер 1-3");
- system("pause");
- break;
- }
- } while (q1 == 0);
- q3=0;
- do
- {
- input1=0;
- q3=0;
- system("cls");
- puts("Введите лигу в которой играет игрок");
- puts("-------------------------------------");
- puts("1.Barclays PL 'Английская премьер-лига'");
- puts("2.Liga BBVA 'Испанская премьер-лига'");
- scanf_s("%d", &input1);
- fflush(stdin);
- switch (input1)
- {
- case 1:
- strcpy_s(p->info.league, 5, "APL");
- q3=1;
- break;
- case 2:
- strcpy_s(p->info.league, 6, "BBVA");
- q3=1;
- break;
- default:
- system("cls");
- puts("ОШИБКА! Введите номер 1 или 2");
- system("pause");
- break;
- }
- } while(q3==0);
- }
- void add_start(list **h, list **last)
- {
- list *p = (list*)malloc(sizeof(list));
- vvod(p);
- if (!*h)
- *last = p;
- p->next = *h;
- *h = p;
- }
- void add_end(list **last)
- {
- list *p = (list*)malloc(sizeof(list));
- system("cls");
- vvod(p);
- (*last)->next = p;
- p->next = NULL;
- *last = p;
- }
- void show(list *h)
- {
- int i=0;
- list *p = h;
- while(p)
- {
- printf("Имя: %s\n", p->info.name);
- printf("Фамилия: %s\n", p->info.surname);
- printf("Позиция: %s\n", p->info.pos);
- printf("Лига: %s\n", p->info.league);
- puts("-------------------");
- i++;
- if (i % 4 == 0)
- {
- system("pause");
- system("cls");
- }
- p = p -> next;
- }
- }
- void InputSelect(list **h,list **last)
- {
- int z;
- do
- {
- system("cls");
- printf("1 - Ввод элемента в начало\n");
- printf("2 - Ввод элемента в конец\n");
- printf("3 - Вернуться в главное меню\n");
- scanf_s("%d",&z);
- switch(z)
- {
- case 1:
- add_start(h,last);
- break;
- case 2:
- add_end(last);
- break;
- case 3:
- break;
- default:
- printf("Ошибка в выборе пункта меню!\n");
- break;
- }
- } while(z != 3);
- }
- void searchz(list *h, list **h2, list **last2)
- {
- list *p = h;
- system("cls");
- while(p)
- {
- if (strcmp(p->info.pos,"RB")==0 || strcmp(p->info.pos,"CB")==0 || strcmp(p->info.pos,"LB")==0)
- if (h2==NULL)
- {
- }
- else
- {
- }
- p = p -> next;
- }
- system("pause");
- system("cls");
- }
- int main()
- {
- setlocale(LC_ALL, "Russian");
- list *last, *h = NULL;
- int input, q;
- do
- {
- q=0;
- input=0;
- system("cls");
- puts("*********Добро пожаловать в базу данных игроков Fifa 15 Ultimate Team***********");
- printf("В данной программе Вы можете ввести данные игроков вашей команды, а затем найти \nих по выбранным Вами параметрам");
- puts("\n\n********************************************************************************");
- puts("1.Ввод данных игрока");
- puts("2.Показать введенные данные об игроках");
- puts("3.Поиск игроков");
- puts("4.Выход");
- scanf_s("%d", &input);
- fflush(stdin);
- switch (input)
- {
- case 1:
- if (h == NULL)
- add_start(&h, &last);
- else
- InputSelect(&h, &last);
- break;
- case 2:
- system("cls");
- if(h != NULL)
- {
- show(h);
- system("pause");
- }
- else
- {
- puts("ОШИБКА! Введите данные игроков в пункте 1");
- system("pause");
- }
- break;
- case 3:
- if (h != NULL )
- searchz();
- show();
- system("pause");
- break;
- case 4:
- q=1;
- system("cls");
- default:
- printf("er");
- break;
- }
- } while (q==0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement