Suppose you have 12 passengers on a ship. Each of them is different.
These 12 passengers are divided into the categories of:

* class
* age
* gender

Each of these categories can have 2 different options:

* class is either "first" or "second"
* age is either "adult" or "child"
* gender is either "male" or "female"

I decided to create a new datatype of type struct called "Passenger". As you will see in the code below, it has three members: class, age, gender.

And then I create a variable (allPassengers) of this newly created datatype (Passenger).

But now, how do I fill out the array of type Passenger called "allPassengers" with the all 12 different combinations of info about Passengers?

E.g. I created manually the first three combinations:

```
#include < stdio.h > #include < string.h >

    typedef struct {
        char class[7];
        char age[6];
        char gender[7];
    }
Passenger;

/* This is where all the information about passengers will be stored, global variable,
there are 9 combinations of passengers (allocated array elements for the variable), last one is reserved for the null character \0 */
Passenger allPassengers[10];

int main() {

    // First combination
    strcpy(allPassengers[0].class, "first");
    strcpy(allPassengers[0].age, "adult");
    strcpy(allPassengers[0].gender, "male");

    // Second combination
    strcpy(allPassengers[1].class, "second");
    strcpy(allPassengers[1].age, "adult");
    strcpy(allPassengers[1].gender, "male");

    // Third combination
    strcpy(allPassengers[2].class, "first");
    strcpy(allPassengers[2].age, "child");
    strcpy(allPassengers[2].gender, "male");

    // ... etc

    return 0;
}

```

[Here's](http://ideone.com/A5Mc0k) the same code (copy-paste friendly).

I know it'd have been easy to fill out an array with just numbers (for loops). But I have no idea how to fill out, for example, the first two `allPassengers[0]`, and `allPassengers[1]` with necessary information. I guess I'd write a complex "if statements" inside for loops e.g. check the class of the previous allPassengers e.g. if there are more than 2 matches, assign class "second".

Or switch case... dunno. What if I had to fill out a harder combination.

How do I only allow a limited strings for the variable to take? e.g. class can take either "first" or "second"?

Any clues?