gaspar1423 Posted December 12, 2012 at 10:40 PM Report #486888 Posted December 12, 2012 at 10:40 PM 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?
thoga31 Posted December 12, 2012 at 10:44 PM Report #486889 Posted December 12, 2012 at 10:44 PM 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!
gaspar1423 Posted December 12, 2012 at 10:49 PM Author Report #486892 Posted December 12, 2012 at 10:49 PM 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...
pmg Posted December 12, 2012 at 10:54 PM Report #486895 Posted December 12, 2012 at 10:54 PM (edited) 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 December 12, 2012 at 11:23 PM 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!
gaspar1423 Posted December 12, 2012 at 11:05 PM Author Report #486900 Posted December 12, 2012 at 11:05 PM 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]; } } }
HappyHippyHippo Posted December 12, 2012 at 11:05 PM Report #486901 Posted December 12, 2012 at 11:05 PM (edited) 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 December 12, 2012 at 11:08 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
thoga31 Posted December 12, 2012 at 11:07 PM Report #486903 Posted December 12, 2012 at 11:07 PM 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!
gaspar1423 Posted December 12, 2012 at 11:14 PM Author Report #486905 Posted December 12, 2012 at 11:14 PM 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.
HappyHippyHippo Posted December 12, 2012 at 11:19 PM Report #486907 Posted December 12, 2012 at 11:19 PM (edited) 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 December 12, 2012 at 11:21 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
thoga31 Posted December 12, 2012 at 11:21 PM Report #486908 Posted December 12, 2012 at 11:21 PM (edited) 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 December 12, 2012 at 11:21 PM by thoga31 Knowledge is free!
gaspar1423 Posted December 12, 2012 at 11:23 PM Author Report #486909 Posted December 12, 2012 at 11:23 PM Eu já vi as soluções e cheguei a uma mais simples depois de ver estas. Obrigado a todos 👍 :thumbsup:
pmg Posted December 12, 2012 at 11:24 PM Report #486910 Posted December 12, 2012 at 11:24 PM Eu já vi as soluções e cheguei a uma mais simples depois de ver estas. Obrigado a todos 👍 :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!
gaspar1423 Posted December 12, 2012 at 11:27 PM Author Report #486911 Posted December 12, 2012 at 11:27 PM Desculpem esqueci-me 😛 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"); }
HappyHippyHippo Posted December 12, 2012 at 11:31 PM Report #486912 Posted December 12, 2012 at 11:31 PM Desculpem esqueci-me 😛 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 Portugol Plus
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now