Advertisement
COSCI539

Lab #6/7 [1]

Nov 21st, 2019
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.80 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define ADDRESS_ELLEMENT_SIZE 30
  5. #define POINTER_ARRAY_SIZE 50
  6.  
  7. struct addressInfo
  8. {
  9.     char name[ADDRESS_ELLEMENT_SIZE];
  10.     char street[ADDRESS_ELLEMENT_SIZE];
  11.     char cityAndState[ADDRESS_ELLEMENT_SIZE];
  12.     int zipcode;
  13. };
  14.  
  15. typedef struct addressInfo address;
  16.  
  17. int InputData(address *dataArray[]);
  18. void OutputData(address *dataArray[], int structCount);
  19. int CompareAddressZipcode(const void *struct1, const void *struct2);
  20.  
  21. int main()
  22. {
  23.     address *pAddressArray[POINTER_ARRAY_SIZE];
  24.     int addressCount;
  25.    
  26.     addressCount = InputData(pAddressArray);
  27.    
  28.     qsort(pAddressArray, addressCount, sizeof(address), CompareAddressZipcode);
  29.    
  30.     OutputData(pAddressArray, addressCount);
  31.  
  32.     return 0;
  33. }
  34.  
  35. int InputData(address *dataArray[])
  36. {
  37.     int i;
  38.    
  39.     for (i = 0; getchar() != EOF && i < POINTER_ARRAY_SIZE; i++)
  40.     {
  41.         dataArray[i] = (address *)malloc(sizeof(address));
  42.        
  43.         fgets(dataArray[i]->name, ADDRESS_ELLEMENT_SIZE, stdin);
  44.         fgets(dataArray[i]->street, ADDRESS_ELLEMENT_SIZE, stdin);
  45.         fgets(dataArray[i]->cityAndState, ADDRESS_ELLEMENT_SIZE, stdin);
  46.         scanf("%d", &dataArray[i]->zipcode);
  47.     }
  48.    
  49.     return --i;
  50. }
  51.  
  52. void OutputData(address *dataArray[], int structCount)
  53. {
  54.     for (int i = 0; i < structCount; i++)
  55.     {
  56.         puts(dataArray[i]->name);
  57.         puts(dataArray[i]->street);
  58.         puts(dataArray[i]->cityAndState);
  59.         printf("%d", dataArray[i]->zipcode);
  60.        
  61.         free((void *)dataArray[i]);
  62.     }
  63. }
  64.  
  65. int CompareAddressZipcode(const void *struct1, const void *struct2)
  66. {
  67.     const address *pStruct1 = (address *)struct1;
  68.     const address *pStruct2 = (address *)struct2;
  69.    
  70.     return pStruct1->zipcode - pStruct2->zipcode;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement