# Solution: Purchase table

The table contains a header (which you simply print with a single `say`) and a number of rows with a similar structure: item name, item price, quantity and the total cost of these items.

As you want to preserve the order of rows, an array is a good choice to keep the items. So, each line of the table corresponds to a single element of an array.

On the second level, a record can be saved in a hash structure with a few named fields: `name`, `price`, and `quantity`.

The rest of the program is to loop over the items, calculate the totals and print the table rows.

## Code

Here is one of the possible solutions to this task:

```my @items = [
{
name => 'Chairs',
price => 20.57,
quantity => 4,
},
{
name => 'Tables',
price => 50.18,
quantity => 1,
}
];

say "Item\tPrice\tN\tTotal";
for @items -> \$item {
my \$total = \$item<price> * \$item<quantity>;
say "\$item<name>\t\\$\$item<price>\t\$item<quantity>\t\\$\$total";
}
```

🦋 Find the program in the file purchase-table.raku.

## Output

``````\$ raku exercises/associatives/purchase-table.raku
Item	Price	N	Total
Chairs	\$20.57	4	\$82.28
Tables	\$50.18	1	\$50.18
``````