{"id":671,"date":"2017-04-24T09:51:29","date_gmt":"2017-04-24T12:51:29","guid":{"rendered":"http:\/\/www.galirows.com.br\/meublog\/programacao\/?p=671"},"modified":"2025-01-13T12:01:36","modified_gmt":"2025-01-13T15:01:36","slug":"confirmacao-de-resultado-com-matriz-transposta-c","status":"publish","type":"post","link":"http:\/\/www.galirows.com.br\/meublog\/programacao\/confirmacao-de-resultado-com-matriz-transposta-c\/","title":{"rendered":"Confirma\u00e7\u00e3o de resultado com matriz transposta &#8211; linguagem C"},"content":{"rendered":"\n<p>Elabore um algoritmo que receba uma matriz quadrada de ordem&nbsp;<em>n<\/em>. Primeiro ser\u00e1 fornecido o valor de&nbsp;<em>n<\/em>, depois os valores de uma matriz A. Por fim ser\u00e3o fornecidos valores para uma outra matriz B e o algoritmo deve comparar se a matriz B \u00e9 o resultado correto da multiplica\u00e7\u00e3o da matriz A por sua transposta (matrizA * matrizA&#8217;).<\/p>\n\n\n\n<p>Escreva &#8220;correto&#8221; se o resultado confere, e &#8220;incorreto&#8221;, caso contr\u00e1rio.<\/p>\n\n\n\n<p><strong>Exemplos:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Entrada<\/strong><\/td><td><strong>Sa\u00edda<\/strong><\/td><\/tr><tr><td>2<br>1 2<br>4 5<br>5 14<br>14 41<\/td><td>correto<\/td><\/tr><tr><td>2<br>1 2<br>4 5<br>5 14<br>14 14<\/td><td>incorreto<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><b><br><\/b><strong>Solu\u00e7\u00e3o em C, sem fun\u00e7\u00e3o<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code lang:c decode:true\"><code lang=\"c\" class=\"language-c\">#include &lt;stdio.h&gt;\n\nint main(void) {\n\tint tam, i, j, k, soma;\n\tscanf(\"%i\", &amp;tam);\n\tint mA[tam][tam], mB[tam][tam], mT[tam][tam], mR[tam][tam];\n\t\n\t\/\/ler matriz A e depois matriz B\n\tfor (i=0; i&lt;tam; i++) {\n\t\tfor (j=0; j&lt;tam; j++) {\n\t\t\tscanf(\"%i\", &amp;mA[i][j]);\n\t\t}\n\t}\n\t\n\tfor (i=0; i&lt;tam; i++) {\n\t\tfor (j=0; j&lt;tam; j++) {\n\t\t\tscanf(\"%i\", &amp;mB[i][j]);\n\t\t}\n\t}\n\t\n\t\/\/transposta\n\tfor (i=0; i&lt;tam; i++) {\n\t\tfor (j=0; j&lt;tam; j++) {\n\t\t\tmT[i][j] = mA[j][i];\n\t\t}\n\t}\n\t\n\t\/\/multiplica\n\tfor (i=0; i&lt;tam; i++) {\n\t\tfor (k=0; k&lt;tam; k++) {\n\t\t\tsoma = 0;\n\t\t\tfor (j=0; j&lt;tam; j++) {\n\t\t\t\tsoma = soma + mA[i][j] * mT[j][k];\n\t\t\t}\n\t\t\tmR[i][k] = soma;\n\t\t}\n\t}\n\n\t\/\/compara matrizes\n\tint iguais = 1;\n\tfor (i=0; i&lt;tam; i++) {\n\t\tfor (j=0; j&lt;tam; j++) {\n\t\t\tif (mR[i][j] != mB[i][j]) {\n\t\t\t\tiguais = 0;\n\t\t\t\tprintf(\"diferentes na posicao %i e %i\\n\", i, j);\n\t\t\t\tbreak; \/\/faz para os FOR quando achar\n\t\t\t}\n\t\t}\n\t}\n\tif (iguais) {\n\t\tprintf(\"correto\\n\");\n\t} else {\n\t\tprintf(\"incorreto\\n\");\n\t}\n\t\n\t\/\/apenas para mostrar os valores das matrizes\n\tprintf(\"Matriz A\\n\");\n\tfor (i=0; i&lt;tam; i++) {\n\t\tfor (j=0; j&lt;tam; j++) {\n\t\t\tprintf(\"%i \", mA[i][j]);\n\t\t}\n\t\tprintf(\"\\n\");\n\t}\n\tprintf(\"\\nMatriz A'\\n\");\n\tfor (i=0; i&lt;tam; i++) {\n\t\tfor (j=0; j&lt;tam; j++) {\n\t\t\tprintf(\"%i \", mT[i][j]);\n\t\t}\n\t\tprintf(\"\\n\");\n\t}\n\tprintf(\"\\nMatriz B\\n\");\n\tfor (i=0; i&lt;tam; i++) {\n\t\tfor (j=0; j&lt;tam; j++) {\n\t\t\tprintf(\"%i \", mB[i][j]);\n\t\t}\n\t\tprintf(\"\\n\");\n\t}\n\tprintf(\"\\nMatrizA * MatrizA'\\n\");\n\tfor (i=0; i&lt;tam; i++) {\n\t\tfor (j=0; j&lt;tam; j++) {\n\t\t\tprintf(\"%i \", mR[i][j]);\n\t\t}\n\t\tprintf(\"\\n\");\n\t}\n}<\/code><\/pre>\n\n\n\n<p><strong>Teste o c\u00f3digo: <\/strong><a href=\"http:\/\/ideone.com\/nfopWm\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/ideone.com\/nfopWm<\/a><\/p>\n\n\n\n<p><strong>Solu\u00e7\u00e3o em C, com fun\u00e7\u00e3o<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code lang:c decode:true\"><code lang=\"c\" class=\"language-c\">#include &lt;stdio.h&gt;\n\nvoid mostraMatriz(int tam, int mat[tam][tam]) {\n\tint i, j;\n\tfor (i=0; i&lt;tam; i++) {\n\t\tfor (j=0; j&lt;tam; j++) {\n\t\t\tprintf(\"%i \", mat[i][j]);\n\t\t}\n\t\tprintf(\"\\n\");\n\t}\n}\n\nvoid transposta(int tam, int mA[tam][tam], int mT[tam][tam]) {\n\tint i, j;\n\tfor (i=0; i&lt;tam; i++) {\n\t\tfor (j=0; j&lt;tam; j++) {\n\t\t\tmT[i][j] = mA[j][i];\n\t\t}\n\t}\n}\n\nvoid multiplica(int tam, int mA[tam][tam], int mB[tam][tam], int mR[tam][tam]) {\n\tint i, j, k, soma;\n\tfor (i=0; i&lt;tam; i++) {\n\t\tfor (k=0; k&lt;tam; k++) {\n\t\t\tsoma = 0;\n\t\t\tfor (j=0; j&lt;tam; j++) {\n\t\t\t\tsoma = soma + mA[i][j] * mB[j][k];\n\t\t\t}\n\t\t\tmR[i][k] = soma;\n\t\t}\n\t}\n}\n\nint main(void) {\n\tint tam, i, j;\n\tscanf(\"%i\", &amp;tam);\n\tint mA[tam][tam], mB[tam][tam], mR[tam][tam], mT[tam][tam];\n\t\n\t\/\/ler matriz A e depois matriz B\n\tfor (i=0; i&lt;tam; i++) {\n\t\tfor (j=0; j&lt;tam; j++) {\n\t\t\tscanf(\"%i\", &amp;mA[i][j]);\n\t\t}\n\t}\n\t\n\tfor (i=0; i&lt;tam; i++) {\n\t\tfor (j=0; j&lt;tam; j++) {\n\t\t\tscanf(\"%i\", &amp;mB[i][j]);\n\t\t}\n\t}\n\t\n\t\/\/transposta\n\ttransposta(tam, mA, mT);\n\t\/\/multiplica\n\tmultiplica(tam, mA, mT, mR);\n\n\t\/\/compara matrizes\n\tint iguais = 1;\n\tfor (i=0; i&lt;tam; i++) {\n\t\tfor (j=0; j&lt;tam; j++) {\n\t\t\tif (mR[i][j] != mB[i][j]) {\n\t\t\t\tiguais = 0;\n\t\t\t\tprintf(\"diferentes na posicao %i e %i\\n\", i, j);\n\t\t\t\tbreak; \/\/faz para os FOR quando achar\n\t\t\t}\n\t\t}\n\t}\n\tif (iguais) {\n\t\tprintf(\"correto\\n\");\n\t} else {\n\t\tprintf(\"incorreto\\n\");\n\t}\n\t\n\t\/\/apenas para mostrar os valores das matrizes\n\tprintf(\"Matriz A\\n\");\n\tmostraMatriz(tam, mA);\n\tprintf(\"\\nMatriz B\\n\");\n\tmostraMatriz(tam, mB);\n\tprintf(\"\\nMatrizA * MatrizA'\\n\");\n\tmostraMatriz(tam, mR);\n}<\/code><\/pre>\n\n\n\n<p><strong>Teste o c\u00f3digo: <\/strong><a href=\"http:\/\/ideone.com\/XfLNyv\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/ideone.com\/XfLNyv<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Elabore um algoritmo que receba uma matriz quadrada de ordem&nbsp;n. Primeiro ser\u00e1 fornecido o valor de&nbsp;n, depois os valores de uma matriz A. Por fim ser\u00e3o fornecidos valores para uma outra matriz B e o algoritmo deve comparar se a matriz B \u00e9 o resultado correto da multiplica\u00e7\u00e3o da matriz A por sua transposta (matrizA [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[3],"tags":[36,12,13],"class_list":["post-671","post","type-post","status-publish","format-standard","hentry","category-c","tag-for","tag-funcao","tag-matriz"],"aioseo_notices":[],"amp_enabled":true,"_links":{"self":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/671","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/comments?post=671"}],"version-history":[{"count":3,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/671\/revisions"}],"predecessor-version":[{"id":1437,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/671\/revisions\/1437"}],"wp:attachment":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/media?parent=671"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/categories?post=671"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/tags?post=671"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}