int[] valors = { 8, 12, 5 };
char[] simbols = { '#', 'O', 'X' };
Console.WriteLine("Valors: {0}, {1} i {2}\n", valors[0], valors[1], valors[2]);
for (int i = 0; i < valors.Length; i++) {
for (int j = 0; j < valors[i]; j++) {
Console.Write(simbols[i]);
for (int j = 0; j < valors[i]; j++) {
Console.Write(simbols[i]);
Console.WriteLine("Grafic vertical invertit:\n");
int maxim = TrobarMaxim(valors);
for (int fila = 0; fila < maxim; fila++) {
for (int i = 0; i < valors.Length; i++) {
if (fila < maxim - valors[i]) {
for (int j = 0; j < 5; j++) {
Console.Write(simbols[i]);
Console.WriteLine("\nGrafic vertical normal:\n");
for (int fila = maxim - 1; fila >= 0; fila--) {
for (int i = 0; i < valors.Length; i++) {
if (fila < maxim - valors[i]) {
for (int j = 0; j < 5; j++) {
Console.Write(simbols[i]);
static int TrobarMaxim(int[] array) {
for (int i = 1; i < array.Length; i++) {
if (array[i] > max) max = array[i];