Print Matrix (C)

Asked

Viewed 214 times

0

I’m trying to print a matrix over the months, but I’m not getting it. It’s a test for another code I’m doing. The goal is to stay:

Janeiro Fevereiro
Março Abril
Maio Junho
Julho Agosto
Setembro Outubro
Novembro Dezembro

What I did was this:

#include <stdio.h>

int main()
{
    char mes[12][15] = 
    {
      "Janeiro", "Fevereiro",
      "Março", "Abril",
      "Maio", "Junho",
      "Julho", "Agosto",
      "Setembro", "Outubro",
      "Novembro", "Dezembro"
    };
    
    int j = 0;
    int i = 0;
    int x = 0;
    int col = 2;
    
    int lin = 12; // meses
  while(x < 12)
  {
    for (j; lin > j; lin--)  //6 meses em cada coluna
    {
        for (i; col > i; col--) 
        {
            printf("%s", mes[i]); //imprime mes impar
          
        }
        
        printf("%s\n", mes[j]); //imprime mes par e pula de linha
      
    }
  }
    return 0;
}
  • But you are using i and j as indexes of your array but is not varying any of them. Maybe it is easier to do: for (i=0;i<12; i++) { printf("%s", mes[i]); if (i%2 == 0) printf("\t"); else printf("\n");}

1 answer

1


You’re complicating the algorithm for nothing.

Just make a for from 0 to 11 (because the indexes of an array start at zero).

If the index is even, it means that it is the first of the line, then you print a space later. If it is odd, it means it is the second of the line, then you print the line break after. So:

char mes[12][15] = {
  "Janeiro", "Fevereiro",
  "Março", "Abril",
  "Maio", "Junho",
  "Julho", "Agosto",
  "Setembro", "Outubro",
  "Novembro", "Dezembro"
};

for (int i = 0; i < 12; i++) {
    printf("%s", mes[i]);
    if (i % 2 == 0) printf(" ");
    else printf("\n");
}

The operator % returns the rest of the division, so I know if the number is even or odd. The output is:

Janeiro Fevereiro
Março Abril
Maio Junho
Julho Agosto
Setembro Outubro
Novembro Dezembro

Browser other questions tagged

You are not signed in. Login or sign up in order to post.