Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <assert.h>
- #include <stdlib.h>
- #include <string.h>
- struct Firm {
- char *taxRegisterNumber;
- char *firmName;
- int *profit;
- char *registerDate;
- };
- struct FirmList {
- struct Firm *data;
- struct FirmList *next;
- } *start = NULL;
- void PrintFirm(struct FirmList *firm);
- struct Firm *firmFactory(char *taxRegisterNumber, char *firmName, int * profit, char *registerDate);
- void createFirm();
- char * getTaxRegisterNumber();
- char * getFirmName();
- char * getRegisterData();
- int * getProfit();
- int main()
- {
- createFirm();
- // createFirm();
- printf("\n\n\n\n");
- // sort();
- PrintFirm(start);
- // printf("%s", start->data->firmName);
- // printf("%s", start->next->data->firmName);
- }
- void createFirm()
- {
- char ch;
- do
- {
- char *firmName = getFirmName(),
- *registerDate = getRegisterData(),
- *taxRigisterNumber = getTaxRegisterNumber();
- int *profit = getProfit();
- struct FirmList *newFirm, *temp;
- newFirm = (struct FirmList *)malloc(sizeof(struct FirmList));
- newFirm->data = firmFactory(taxRigisterNumber, firmName , profit, registerDate);
- if(start == NULL){
- start = newFirm;
- start->next = NULL;
- }else {
- newFirm->next = start;
- start = newFirm;
- }
- printf("\nDo you want to creat another: [ y/n ] \n");
- ch = getche();
- }while(ch != 'n');
- }
- int * getProfit(){
- int *profit = (int *)malloc(sizeof(int) * 5), i, number;
- printf("Enter profit for last 5 years:\n");
- for(i = 0; i < 1; i++){
- if (scanf("%d", &number) == 1 ) {
- profit[i] = number;
- } else {
- i--;
- printf("Input must be number\n");
- }
- fflush(stdin);
- }
- return profit;
- }
- char * getRegisterData(){
- char *registerDate = malloc(sizeof(char) * 13), buffer[13];
- printf("\nEnter the date of registration of the firm: ");
- while(1){
- fgets(buffer, 11, stdin);
- // if(strlen(buffer) != 3){
- // printf("Invalid date!, Enter date again: \n");
- // continue;
- // }
- // char strYear[5] = {buffer[0], buffer[1], buffer[2], buffer[3], '\0'};
- // char strDay[3] = {buffer[5], buffer[6], '\0'};
- // char strMonth[3] = {buffer[8], buffer[9], '\0'};
- // int year = atoi(strYear);
- // int day = atoi(strDay);
- // int month = atoi(strMonth);
- // if(year < 0 || year > 9999 || day < 1 || day > 31 || day > 31 || month < 1 || month > 12){
- // printf("Invalid date!, Enter date again: \n");
- // continue;
- // }
- break;
- }
- strcpy(registerDate, buffer);
- return registerDate;
- }
- char * getFirmName(){
- char *firmName = malloc(sizeof(char) * 40), buffer[40];
- printf("\nEnter the name of firm: ");
- while(strlen(fgets(buffer, 41, stdin)) - 1 > 5) printf("Name of firm can not be longer than 40 chars!\n");
- strcpy(firmName, buffer);
- return firmName;
- }
- char * getTaxRegisterNumber(){
- char *taxRigisterNumber = malloc(sizeof(char) * 13), buffer[13];
- printf("\nEnter the tax register number: ");
- while(strlen(fgets(buffer, 14, stdin)) - 1 != 3) printf("Tax register number length must be 13 chars!\n");
- strcpy(taxRigisterNumber, buffer);
- return taxRigisterNumber;
- }
- void PrintFirm(struct FirmList *firm)
- {
- int i;
- struct FirmList *temp;
- temp = start;
- while(temp != NULL){
- printf("\n");
- printf("Firm name: %s\nTax register number: %s\nRegister date: %s\nProfit: ",
- temp->data->firmName, temp->data->taxRegisterNumber, temp->data->registerDate);
- for(i = 0; i < 1; i++)
- if(i != 4) printf("%d,", *(temp->data->profit + i));
- else printf("%d", *(temp->data->profit + i));
- temp = temp->next;
- }
- }
- struct Firm *firmFactory(char *taxRegisterNumber, char *firmName, int * profit, char *registerDate)
- {
- struct Firm *newFirm = malloc(sizeof(struct Firm));
- assert(newFirm != NULL);
- newFirm->taxRegisterNumber = strdup(taxRegisterNumber);
- newFirm->profit = profit;
- newFirm->firmName = strdup(firmName);
- newFirm->registerDate = strdup(registerDate);
- printf("%d", *profit);
- return newFirm;
- }
Advertisement
Add Comment
Please, Sign In to add comment