Advertisement
COSCI539

Lab #6/7 [2]

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