Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct _TBIRTHDAY{
- int year;
- int month;
- int day;
- } TBIRTHDAY;
- typedef struct _TADDR{
- int postcode;
- char *country;
- char *region;
- char *district;
- char *city;
- char *street;
- char *house;
- int flat;
- } TADDR;
- typedef struct _TSOL{
- char *surname;
- char *name;
- char *patronymic;
- TADDR address;
- char *nationality;
- TBIRTHDAY birthday;
- char *position;
- char *title;
- } TSOL, *PSOL;
- char *GetString(){
- char *str = (char *)malloc(1);
- str[0] = 0;
- char tmp;
- fflush(stdin);
- scanf("%c", &tmp);
- int i = 0;
- while (tmp != '\n'){
- *(str + i++) = tmp;
- realloc(str, sizeof(*str) + sizeof(char));
- scanf("%c", &tmp);
- }
- return str;
- }
- void PrintMenu(){
- printf("1. Ввод структуры\n");
- printf("2. Ввод структуры на основе другой структуры\n");
- printf("3. Просмотр\n");
- printf("4. Поиск\n");
- printf("5. Сортировка\n");
- printf("0. Меню\n");
- }
- void AddStruct(PSOL *arr,TSOL sol, int *length){
- realloc(*arr, sizeof(**arr) + sizeof(TSOL));
- (*arr)[(*length)++] = sol;
- }
- void PrintStruct(TSOL sol){
- printf("\tФИО: %s %s %s\n", sol.surname, sol.name, sol.patronymic);
- printf("\tАдрес: %i, %s, %s область, %s район, ул. %s, дом №%s, кв №%i\n", sol.address.postcode, sol.address.country, sol.address.region, sol.address.district,sol.address.street, sol.address.house, sol.address.flat);
- printf("\tНациональность: %s\n", sol.nationality);
- printf("\tДата рождения: %i.%i.%i\n", sol.birthday.day, sol.birthday.month, sol.birthday.year);
- printf("\tДолжность: %s\n", sol.position);
- printf("\tЗвание: %s\n", sol.title);
- }
- void PrintAll(PSOL arr, int count){
- for (int i = 0; i < count; i++){
- printf("%i.\n", i + 1);
- PrintStruct(arr[i]);
- }
- };
- char *GetSurname(){
- printf("Введите фамилию: ");
- return GetString();
- }
- char *GetName(){
- printf("Введите имя: ");
- return GetString();
- }
- char *GetPatronymic(){
- printf("Введите отчество: ");
- return GetString();
- };
- int GetPostcode(){
- int result;
- printf("Введите почтовый индекс: ");
- scanf("%i\n", &result);
- return result;
- };
- char *GetCountry(){
- printf("Введите страну: ");
- return GetString();
- };
- char *GetRegion(){
- printf("Введите область: ");
- return GetString();
- };
- char *GetDistrict(){
- printf("Введите район: ");
- return GetString();
- };
- char *GetCity(){
- printf("Введите город: ");
- return GetString();
- };
- char *GetStreet(){
- printf("Введите улицу: ");
- return GetString();
- };
- char *GetHouse(){
- printf("Введите номер дома: ");
- return GetString();
- };
- int GetFlat(){
- int result;
- printf("Введите номер квартиры: ");
- scanf("%i", &result);
- return result;
- };
- TADDR GetAddr(){
- TADDR result;
- result.postcode = GetPostcode();
- result.country = GetCountry();
- result.region = GetRegion();
- result.district = GetDistrict();
- result.city = GetCity();
- result.street = GetStreet();
- result.house = GetHouse();
- result.flat = GetFlat();
- return result;
- }
- char *GetNationality(){
- printf("Введите национальность: ");
- return GetString();
- }
- int GetDay(){
- int result;
- printf("Введите день рождения: ");
- scanf("%i", &result);
- return result;
- };
- int GetMonth(){
- int result;
- printf("Введите месяц рождения: ");
- scanf("%i", &result);
- return result;
- };
- int GetYear(){
- int result;
- printf("Введите год рождения: ");
- scanf("%i", &result);
- return result;
- };
- TBIRTHDAY GetBirthDay(){
- TBIRTHDAY result;
- result.day = GetDay();
- result.month = GetMonth();
- result.year = GetYear();
- return result;
- }
- char *GetPosition(){
- printf("Введите должность: ");
- return GetString();
- };
- char *GetTitle(){
- printf("Введите звание: ");
- return GetString();
- };
- TSOL GetStruct(){
- TSOL result;
- result.surname = GetSurname();
- result.name = GetName();
- result.patronymic = GetPatronymic();
- result.address = GetAddr();
- result.nationality = GetNationality();
- result.birthday = GetBirthDay();
- result.position = GetPosition();
- result.title = GetTitle();
- return result;
- }
- int main()
- {
- const TSOL sol= {"Иванова",
- "Ирина",
- "Анатольевна",
- {
- 222120,
- "Беларусь",
- "Минская",
- "Борисовский",
- "Борисов",
- "Трусова",
- "99",
- 1},
- "Украинка",
- {
- 1,
- 1,
- 2013},
- "Бухгалтер",
- "Майор"};
- PSOL bd = (PSOL)malloc(sizeof(TSOL));
- int count = 0;
- int state = 0;
- PrintMenu();
- while (state != 100){
- printf("Введите команду:\n");
- scanf("%i\n", &state);
- char tmp;
- scanf("%c", &tmp);
- scanf("%c", &tmp);
- scanf("%c", &tmp);
- scanf("%c", &tmp);
- switch (state){
- case 0:{
- PrintMenu();
- break;
- }
- case 1:{
- AddStruct(&bd, GetStruct(), &count);
- break;
- }
- case 2:{
- break;
- }
- case 3:{
- PrintAll(bd, count);
- break;
- }
- case 4:{
- break;
- }
- case 5:{
- break;
- }
- default:
- break;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement