Jump to content
gaspar1423

[Resolvido] Print de matriz

Recommended Posts

gaspar1423

Boas.

Tenho uma matriz de inteiros que queria imprimir para a linha de comandos com o seguinte formato:

Matriz em memoria:

0|1|2|65|6|66|9|67|12...

Matriz como tem de aparecer na linha de comandos:

0|1|2|A|6|B|9|C|12...

como é que garanto que a partir da 3ª posição ele imprime o caracter?

Share this post


Link to post
Share on other sites
thoga31

A questão não me parece ser a de garantir que a partir da 3ª posição imprime o caracter.

65 é a ordem ASCII de 'A', 66 a de 'B', e etc.

Se eu te der a matriz 17|70|12|0|67|..., qual é o output esperado?


Knowledge is free!

Share this post


Link to post
Share on other sites
gaspar1423

Da maneira que tenho imprime esses numeros. O que quero mesmo é garantir que os 3 primeiros caracteres sejam inteiros e que a partir da 3ª coluna da matriz e de 2 em 2 converta o número no seu caracter correspondente na tabela ascii de modo a ficar 0|1|2|A|6|B|9|C|12...

Share this post


Link to post
Share on other sites
pmg
int values[] = {0, 1, 2, 65, 6, 66, 9, 67, 12, 90};
printf("%d %d", values[0], values[1]);
for (k = 2; k < sizeof values / sizeof *values; k += 2) printf(" %d %c", values[k], values[k + 1]);

Edited by pmg
esqueci-me do segundo valor no printf

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
gaspar1423

isso resuta para um array unidimensional, mas para uma matriz não tenho d fazer 3 ciclos for?

É que ká tentei fazer uma coisa destas mas n deu:

for(i=0;i<MAX;i++){
 for(j=0;j<3;j++){
   printf("%d ",mat[i][j]);
   for(k=3;k<MAX;k++){
     printf("%c %d", mat[i][k],mat[i][k+1];
   }
 }
}

Edited by Rui Carlos
geshi

Share this post


Link to post
Share on other sites
HappyHippyHippo

int values[][] = {{0, 1, 2, 65, 6, 66, 9, 67, 12, 90},
                 {0, 1, 2, 65, 6, 66, 9, 67, 12, 90},
                 {0, 1, 2, 65, 6, 66, 9, 67, 12, 90}};
for (i = 0; i < 3; i++)
 for (k = 0; k < 10; k++)
   (!(k % 2) && k > 2) ? printf("%c|", values[i][k]) : printf("%d|", values[i][k]);

uma segunda solução

Edited by HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
thoga31

isso resuta para um array unidimensional, mas para uma matriz não tenho d fazer 3 ciclos for?

Exactamente para que queres 3 ciclos para uma array unidimensional?


Knowledge is free!

Share this post


Link to post
Share on other sites
gaspar1423

O que quis dizer é que a solução do pmg estava para um array unidimensional e eu quero para uma array bidimensional. e pensei que tinha da fazer 3 ciclos, 1 para percorrer as linhas, outro para percorrer ate à 3ª coluna, e outro para as restantes.

Share this post


Link to post
Share on other sites
HappyHippyHippo

desculpa pelo código anterior, estava a ver uma cena na net e tens uns bugs

o seguinte foi testado

#include <stdio.h>

int main()
{
 int i, k;
/*
 int values[3][10] = {{0, 1, 2, 65, 6, 66, 9, 67, 12, 90},
                      {0, 1, 2, 65, 6, 66, 9, 67, 12, 90},
                      {0, 1, 2, 65, 6, 66, 9, 67, 12, 90}};
*/
/* ou assim == */
  int values[3][10] = {{0, 1, 2, 'A', 6, 'B', 9, 'C', 12, 'Z'},
                       {0, 1, 2, 'A', 6, 'B', 9, 'C', 12, 'Z'},
                       {0, 1, 2, 'A', 6, 'B', 9, 'C', 12, 'Z'}};
 for (i = 0; i < 3; i++) {
   for (k = 0; k < 10; k++)
     (k % 2 && k > 2) ? printf("%c|", values[i][k]) : printf("%d|", values[i][k]);
   printf("\n");
 }

 return 0;
}

Edited by HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
thoga31

O que quis dizer é que a solução do pmg estava para um array unidimensional e eu quero para uma array bidimensional. e pensei que tinha da fazer 3 ciclos, 1 para percorrer as linhas, outro para percorrer ate à 3ª coluna, e outro para as restantes.

Já tens aqui 2 soluções para imprimir os valores das colunas 1 e 2. Se são sempre estas 2 colunas, para que queres um ciclo? Não é necessário, torna-se menos eficiente do que um printf directo.

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other sites
pmg

Eu já vi as soluções e cheguei a uma mais simples depois de ver estas. Obrigado a todos :thumbsup: :thumbsup:

Nao queres publicar a tua solucao?


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
gaspar1423

Desculpem esqueci-me :P

Aqui está:

for (i=0;i<10;i++){
 for (int j=0; j<10; j++) {
   if (matriz_int[i][j]>65) {
     printf("%c|",matriz_int[i][j]);
   }else{
     printf("%d|",matriz_int[i][j]);
   }
 }
 printf("\n");
}

Share this post


Link to post
Share on other sites
HappyHippyHippo

Desculpem esqueci-me :P

Aqui está:

for (i=0;i<10;i++){
 for (int j=0; j<10; j++) {
   if (matriz_int[i][j]>65) {
     printf("%c|",matriz_int[i][j]);
   }else{
     printf("%d|",matriz_int[i][j]);
   }
 }
 printf("\n");
}

isso não faz o que especificaste :

O que quero mesmo é garantir que os 3 primeiros caracteres sejam inteiros e que a partir da 3ª coluna da matriz e de 2 em 2 converta o número no seu caracter correspondente na tabela ascii

contra exemplo:

 int values[3][10] = {{66, 67, 68, 69, 70, 71, 72, 73, 74, 75},
                      {66, 67, 68, 69, 70, 71, 72, 73, 74, 75},
                      {66, 67, 68, 69, 70, 71, 72, 73, 74, 75}};


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.