Advertisement
Guest User

Untitled

a guest
Nov 8th, 2013
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.85 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define ITEMS_COUNT 16
  6.  
  7. typedef unsigned short int DBID;
  8.  
  9. typedef enum {
  10.     TYPE_PERSON,
  11.     TYPE_COMPANY
  12. } type;
  13.  
  14. typedef struct {
  15.     char name[64];
  16.     char surname[64];
  17. } Person;
  18.  
  19. typedef struct {
  20.     char name[128];
  21. } Company;
  22.  
  23. typedef struct {
  24.     type type;
  25.     DBID id;
  26.     union {
  27.         Person person;
  28.         Company item;
  29.     };
  30. } Item;
  31.  
  32. Item itemList[ITEMS_COUNT];
  33.  
  34. static void populateItems(void) {
  35.     for(size_t i = 0; i != ITEMS_COUNT; ++i) {
  36.         Item* it = &itemList[i];
  37.  
  38.         it->it =   i + 1;
  39.         it->type = randomType();
  40.  
  41.         if(TYPE_PERSON == it->type) {
  42.             randomPersonName(it->person.name, sizeof it->person.name);
  43.             randomPersonSurname(it->person.surname, sizeof it->person.surname);
  44.         } else {
  45.             randomPersonSurname(it->company.name, sizeof it->company.name);
  46.         }
  47.     }
  48. }
  49.  
  50. static type randomType(void) {
  51.     return (type) randr(0, 1);
  52. }
  53.  
  54. static char* randomCompanyName() {
  55.     static const char* nameList[] = {
  56.         "Microsoft",
  57.         "Valve",
  58.         "Vamonos pest",
  59.         "Hello folks!",
  60.         "Just a program inc"
  61.     };
  62.  
  63.     const int listSize = sizeof nameList / sizeof nameList[0];
  64.  
  65.     const char *name = nameList[randr(0, listSize - 1)];
  66.     strncpy(buf, name, size);
  67.     buf[size - 1] = '\0';
  68.     return buf;
  69. }
  70.  
  71. static char* randomPersonName(char* buf, size_t size) {
  72.     static const char* nameList[] = {
  73.         "John",
  74.         "Mike",
  75.         "Emily",
  76.         "Jessica",
  77.         "Steven"
  78.     };
  79.     const int listSize = sizeof nameList / sizeof nameList[0];
  80.  
  81.     const char *name = nameList[randr(0, listSize - 1)];
  82.     strncpy(buf, name, size);
  83.     buf[size - 1] = '\0';
  84.     return buf;
  85. }
  86.  
  87. static char* randomPersonSurname(char* buf, size_t size) {
  88.     static const char* nameList[]  = {
  89.         "Ross",
  90.         "Litt",
  91.         "Hellyeah"
  92.     };
  93.     const int listSize = sizeof nameList / sizeof nameList[0];
  94.  
  95.     const char *name = nameList[randr(0, listSize - 1)];
  96.     strncpy(buf, name, size);
  97.     buf[size - 1] = '\0';
  98.     return buf;
  99. }
  100.  
  101. static unsigned int randr(unsigned int min, unsigned int max)
  102. {
  103.     double scaled = (double) rand() / (RAND_MAX + 1.0);
  104.  
  105.     return (max - min + 1) * scaled + min;
  106. }
  107.  
  108. static void dumpItems(void) {
  109.     for(size_t i = 0; i != ITEMS_COUNT; ++i) {
  110.         Item *it = &itemList[i];
  111.  
  112.         printf("Row %d: { dbID: %d, ", i + 1, id->id);
  113.  
  114.         if(TYPE_PERSON == id->type) {
  115.             printf("name: %s, surname: %s", id->person.name, id->person.surname);
  116.         } else {
  117.             printf("company name: %s", id->company.name);
  118.         }
  119.  
  120.         print("}\n");
  121.     }
  122. }
  123.  
  124. int main(int argc, char* argv[]) {
  125.     srand(time(NULL));
  126.  
  127.     populateItems();
  128.     dumpItems();
  129.     return 0;
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement