veselinsavov

Untitled

May 14th, 2015
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.95 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <assert.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. struct Firm {
  7.     char *taxRegisterNumber;
  8.     char *firmName;
  9.     int *profit;
  10.     char *registerDate;
  11. };
  12.  
  13. struct FirmList {
  14.     struct Firm *data;
  15.     struct FirmList *next;
  16. } *start = NULL;
  17.  
  18. void PrintFirm(struct FirmList *firm);
  19. struct Firm *firmFactory(char *taxRegisterNumber, char *firmName, int * profit, char *registerDate);
  20. void createFirm();
  21. char * getTaxRegisterNumber();
  22. char * getFirmName();
  23. char * getRegisterData();
  24. int  * getProfit();
  25.  
  26.  
  27.  
  28. int main()
  29. {
  30.     createFirm();
  31. //  createFirm();
  32.     printf("\n\n\n\n");
  33. //  sort();
  34.     PrintFirm(start);
  35. //  printf("%s", start->data->firmName);
  36. //  printf("%s", start->next->data->firmName);
  37. }
  38.  
  39.  
  40.  
  41.  
  42. void createFirm()
  43. {  
  44.     char ch;
  45.     do
  46.     {
  47.         char *firmName = getFirmName(),
  48.         *registerDate = getRegisterData(),
  49.         *taxRigisterNumber = getTaxRegisterNumber();
  50.         int *profit = getProfit();
  51.         struct FirmList *newFirm, *temp;
  52.         newFirm = (struct FirmList *)malloc(sizeof(struct FirmList));
  53.         newFirm->data = firmFactory(taxRigisterNumber, firmName , profit, registerDate);
  54.        
  55.         if(start == NULL){
  56.             start = newFirm;
  57.             start->next = NULL;
  58.         }else {
  59.             newFirm->next = start;
  60.             start = newFirm;
  61.         }
  62.        
  63.         printf("\nDo you want to creat another: [ y/n ] \n");
  64.         ch = getche();
  65.     }while(ch != 'n');
  66. }
  67.  
  68. int  * getProfit(){
  69.     int *profit = (int *)malloc(sizeof(int) * 5), i, number;
  70.     printf("Enter profit for last 5 years:\n");
  71.     for(i = 0; i < 1; i++){
  72.         if (scanf("%d", &number) == 1 ) {
  73.             profit[i] = number;
  74.         } else {
  75.             i--;
  76.             printf("Input must be number\n");
  77.         }
  78.         fflush(stdin);
  79.     }
  80.     return profit;
  81. }
  82.  
  83. char * getRegisterData(){
  84.     char *registerDate = malloc(sizeof(char) * 13), buffer[13];
  85.    
  86.     printf("\nEnter the date of registration of the firm: ");
  87.     while(1){
  88.         fgets(buffer, 11, stdin);
  89. //      if(strlen(buffer)  != 3){
  90. //          printf("Invalid date!, Enter date again: \n");
  91. //          continue;
  92. //      }
  93.        
  94. //      char strYear[5] = {buffer[0], buffer[1], buffer[2], buffer[3], '\0'};
  95. //      char strDay[3] = {buffer[5], buffer[6], '\0'};
  96. //      char strMonth[3] = {buffer[8], buffer[9], '\0'};
  97.  
  98. //      int year = atoi(strYear);
  99. //      int day = atoi(strDay);
  100. //      int month = atoi(strMonth);
  101. //          if(year < 0 || year > 9999 || day < 1 || day > 31 || day > 31 || month < 1 || month > 12){
  102. //              printf("Invalid date!, Enter date again: \n");
  103. //              continue;
  104. //          }
  105.  
  106.         break;
  107.     }
  108.    
  109.     strcpy(registerDate, buffer);
  110.     return registerDate;
  111. }
  112.  
  113. char * getFirmName(){
  114.     char *firmName = malloc(sizeof(char) * 40), buffer[40];
  115.     printf("\nEnter the name of firm: ");
  116.     while(strlen(fgets(buffer, 41, stdin)) - 1 > 5) printf("Name of firm can not be longer than 40 chars!\n");
  117.     strcpy(firmName, buffer);
  118.     return firmName;
  119. }
  120.  
  121. char * getTaxRegisterNumber(){
  122.     char *taxRigisterNumber = malloc(sizeof(char) * 13), buffer[13];
  123.     printf("\nEnter the tax register number: ");
  124.     while(strlen(fgets(buffer, 14, stdin)) - 1 != 3) printf("Tax register number length must be 13 chars!\n");
  125.     strcpy(taxRigisterNumber, buffer);
  126.    
  127.     return taxRigisterNumber;
  128. }
  129.  
  130. void PrintFirm(struct FirmList *firm)
  131. {
  132.     int i;
  133.     struct FirmList *temp;
  134.     temp = start;
  135.     while(temp != NULL){
  136.         printf("\n");
  137.         printf("Firm name: %s\nTax register number: %s\nRegister date: %s\nProfit: ",
  138.            temp->data->firmName, temp->data->taxRegisterNumber, temp->data->registerDate);  
  139.         for(i = 0; i < 1; i++)
  140.             if(i != 4) printf("%d,", *(temp->data->profit + i));
  141.             else printf("%d", *(temp->data->profit + i));
  142.        
  143.         temp = temp->next;     
  144.     }
  145. }
  146.  
  147. struct Firm *firmFactory(char *taxRegisterNumber, char *firmName, int * profit, char *registerDate)
  148. {
  149.     struct Firm *newFirm = malloc(sizeof(struct Firm));
  150.     assert(newFirm != NULL);
  151.  
  152.     newFirm->taxRegisterNumber = strdup(taxRegisterNumber);
  153.     newFirm->profit = profit;
  154.     newFirm->firmName = strdup(firmName);
  155.     newFirm->registerDate = strdup(registerDate);
  156.     printf("%d", *profit);
  157.     return newFirm;
  158. }
Advertisement
Add Comment
Please, Sign In to add comment