{"id":724,"date":"2018-06-28T18:45:01","date_gmt":"2018-06-28T21:45:01","guid":{"rendered":"http:\/\/www.galirows.com.br\/meublog\/programacao\/?p=724"},"modified":"2021-06-18T15:01:55","modified_gmt":"2021-06-18T18:01:55","slug":"exercicios-resolvidos","status":"publish","type":"post","link":"http:\/\/www.galirows.com.br\/meublog\/programacao\/exercicios-resolvidos\/","title":{"rendered":"Exerc\u00edcios resolvidos"},"content":{"rendered":"\n<p>Segue um conjunto de exerc\u00edcios resolvidos em linguagem de programa\u00e7\u00e3o C. S\u00e3o disponibilizados o c\u00f3digo de solu\u00e7\u00e3o e v\u00eddeo explicativo.<\/p>\n\n\n\n<p><strong>1)<\/strong> Um funcion\u00e1rio de uma empresa recebe, anualmente, aumento salarial. Sabe-se que: 1) esse funcion\u00e1rio foi contratado em 2005 com sal\u00e1rio inicial de R$ 1.000,00; 2) em 2006 ele recebeu aumento de 1,5% sobre seu sal\u00e1rio inicial; e 3) a partir de 2007, os aumentos salariais sempre corresponderam ao dobro do percentual do ano anterior. Fa\u00e7a um algoritmo que determine o sal\u00e1rio atual desse funcion\u00e1rio.<\/p>\n\n\n\n<p><strong>C\u00f3digo em linguagem C:<\/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\tfloat salario = 1000, aumento = 1.5\/100;\n\tint i, anoIni = 2005, anoFim = 2010;\n\t\n\tfor (i = anoIni + 1; i &lt; anoFim; i++) {\n\t\tsalario = salario + (salario * aumento);\n\t\tprintf(\"Salario em %i: %.2f - aumento de %.1f\\% \\n\", i, salario, aumento*100);\n\t\taumento = 2 * aumento;\n\t}\n\t\n\tprintf(\"Salario final: %.2f\", salario);\n\t\n\treturn 0;\n}<\/code><\/pre>\n\n\n\n<p>Teste o c\u00f3digo:&nbsp;<a href=\"https:\/\/ideone.com\/cl2npC\" target=\"_blank\" rel=\"noopener\">https:\/\/ideone.com\/cl2npC<\/a><\/p>\n\n\n\n<p><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/kKuY_e1Les4\" allowfullscreen=\"allowfullscreen\" width=\"580\" height=\"315\" frameborder=\"0\"><\/iframe><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><strong>2)<\/strong> Elabore um algoritmo que solicite ao usu\u00e1rio dois valores inteiros que representam o tamanho de uma matriz que armazena valores inteiros. O algoritmo tamb\u00e9m deve solicitar um intervalo de valores e preencher a matriz gerada com os valores no intervalo especificado. Valide se os valores do intervalo fornecidos s\u00e3o v\u00e1lidos, onde o primeiro valor deve ser menor do que o segundo. Se os valores n\u00e3o forem v\u00e1lidos, solicite outros at\u00e9 valores v\u00e1lidos serem fornecidos (1,2 ponto). Em seguida, o algoritmo deve determinar qual o <strong>segundo maior valor<\/strong> da matriz e uma posi\u00e7\u00e3o (\u00edndices da matriz) esse valor pode ser encontrado (o valor pode ter se repetido na matriz, mas apenas uma das posi\u00e7\u00f5es deve ser mostrada) (1,8 pontos).<\/p>\n\n\n\n<p><strong>C\u00f3digo em linguagem C [primeira parte]:<\/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#include &lt;stdlib.h&gt;\n \nint main(void) {\n\tint k, l, i, j, min, max,intervalo;\n\t\n\t\/\/cria matriz do tamanho informado pelo usuario\n\tprintf(\"Informe o tamanho da matriz: \");\n\tscanf(\"%i%i\", &amp;k, &amp;l);\n\tfloat mat[k][l];\n \n\t\/\/preenche a matriz em um intervalo informado pelo usuario\n\tprintf(\"Defina o intervalo: \");\n\tscanf(\"%i%i\", &amp;min, &amp;max);\n\twhile (max &lt; min) {\n\t\tprintf(\"Intervalo invalido. Digite novos valores: \");\n\t\tscanf(\"%i%i\", &amp;min, &amp;max);\n\t}\n\t\n\tintervalo = max - min;\n\tprintf(\"Intervalo: %i \\n\", intervalo);\n \n\tfor (i = 0; i &lt; k; i++) {\n\t\tfor (j = 0; j &lt; l; j++) {\n\t\t\tmat[i][j] = rand()%intervalo + min; \n\t\t}\n\t}\n \n\t\/\/mostra a matriz\n\tfor (i = 0; i &lt; k; i++) {\n\t\tfor (j = 0; j &lt; l; j++) {\n\t\t\tprintf(\"%.1f \", mat[i][j]);\n\t\t}\n\t\tprintf(\"\\n\");\n\t}\n \n\treturn 0;\n}<\/code><\/pre>\n\n\n\n<p>Teste o c\u00f3digo:&nbsp;<a href=\"https:\/\/ideone.com\/8xmR6Z\" target=\"_blank\" rel=\"noopener\">https:\/\/ideone.com\/8xmR6Z<\/a><\/p>\n\n\n\n<p><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/7xdS6x1glB8\" allowfullscreen=\"allowfullscreen\" width=\"580\" height=\"315\" frameborder=\"0\"><\/iframe><\/p>\n\n\n\n<p><strong>C\u00f3digo em linguagem C [segunda parte]:<\/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 mat[3][3] = {1,3,5,3,7,2,0,5,1}, i, j, maior, smaior;\n \n\tmaior = mat[0][0];\n\tsmaior = maior;\n\tfor (i = 0; i &lt; 3; i++) {\n\t\tfor (j=0; j &lt; 3; j++) {\n\t\t\tif (mat[i][j] &gt; maior) {\n\t\t\t\tsmaior = maior;\n\t\t\t\tmaior = mat[i][j];\n\t\t\t}\t\n\t\t}\n\t}\n \n\tfor (i = 0; i &lt; 3; i++) {\n\t\tfor (j=0; j &lt; 3; j++) {\n\t\t\tif (mat[i][j] == smaior) {\n\t\t\t\tprintf(\"Posicao: %i %i\\n\", i, j);\n\t\t\t\ti = 5;\n\t\t\t\tj = 5;\n\t\t\t}\t\n\t\t}\n\t}\n \n\tprintf(\"Maior: %i \\n\", maior);\n\tprintf(\"Segundo Maior: %i\", smaior);\n\treturn 0;\n}<\/code><\/pre>\n\n\n\n<p>Teste o c\u00f3digo:&nbsp;<a href=\"https:\/\/ideone.com\/pgmkz8\" target=\"_blank\" rel=\"noopener\">https:\/\/ideone.com\/pgmkz8<\/a><\/p>\n\n\n\n<p><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/xzDCkI3hYJ0\" allowfullscreen=\"allowfullscreen\" width=\"580\" height=\"315\" frameborder=\"0\"><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\">\ufeff<\/span><\/iframe><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><strong>3) <\/strong>Elabore uma fun\u00e7\u00e3o que recebe uma matriz e mostre a diagonal secund\u00e1ria da matriz (a fun\u00e7\u00e3o pode receber mais argumentos do que somente a matriz). Se a fun\u00e7\u00e3o pode mostrar a diagonal ela retorna 1, sen\u00e3o ela retorna zero.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright\"><a href=\"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-content\/uploads\/sites\/2\/2018\/06\/diagSecundaria.gif\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"158\" src=\"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-content\/uploads\/sites\/2\/2018\/06\/diagSecundaria-300x158.gif\" alt=\"\" class=\"wp-image-730\"\/><\/a><\/figure><\/div>\n\n\n\n<p>Dica: em uma matriz quadrada, a diagonal principal \u00e9 formada pelos elementos a<sub>ij<\/sub> tais que i = j. Na diagonal secund\u00e1ria, temos i + j = n + 1.<\/p>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/www.somatematica.com.br\/emedio\/matrizes\/matrizes2.php\" target=\"_blank\" rel=\"noopener\">Fonte da figura<\/a><\/p>\n\n\n\n<p>Vale uma considera\u00e7\u00e3o importante aqui: \u00e9 preciso lembrar que na programa\u00e7\u00e3o em linguagem C, a matriz inicia nas linha e coluna com \u00edndice zero. Com isso \u00e9 preciso adaptar o teste para determinar as posi\u00e7\u00f5es da diagonal secund\u00e1ria.<\/p>\n\n\n\n<p><strong>C\u00f3digo em linguagem C:<\/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#include &lt;stdlib.h&gt;\n\nint diagSecundaria(int lin, int col, float matriz[lin][col]) {\n\tint i, j;\n\t\n\tif (lin != col) {\n\t\treturn 0;\n\t}\n\t\n\tprintf(\"Mostrando pelo primeiro m\u00e9todo: \\n\");\n\tfor (i = 0; i &lt; lin; i++) {\n\t\tfor (j = 0; j &lt; col; j++) {\n\t\t\tif (i + j == lin - 1) {\n\t\t\t\tprintf(\"%i %i: %.2f \\n\", i, j, matriz[i][j]);\n\t\t\t}\n\t\t}\n\t}\n\t\n\tprintf(\"Mostrando pelo segundo m\u00e9todo: \\n\");\n\tfor (i = 0; i &lt; lin; i++) {\n\t\tprintf(\":: %i %i: %.2f \\n\", i, col-1-i, matriz[i][col-1-i]);\n\t}\n\t\n\treturn 1;\n}\n\nint main(void) {\n\tint k, l, i, j, min, max,intervalo;\n\tprintf(\"Informe o tamanho da matriz: \\n\");\n\tscanf(\"%i%i\", &amp;k, &amp;l);\n\tfloat mat[k][l];\n\t\n\t\/\/preenche a matriz\n\tfor (i = 0; i &lt; k; i++) {\n\t\tfor (j = 0; j &lt; l; j++) {\n\t\t\tmat[i][j] = rand()%10;\n\t\t}\n\t}\n\t\n\t\/\/mostra a matriz\n\tfor (i = 0; i &lt; k; i++) {\n\t\tfor (j = 0; j &lt; l; j++) {\n\t\t\tprintf(\"%.1f \", mat[i][j]);\n\t\t}\n\t\tprintf(\"\\n\");\n\t}\n\t\n\tif (diagSecundaria(k, l, mat) == 0) {\n\t\tprintf(\"Nao pode ser mostrada\");\n\t}\n\t\t\n\treturn 0;\n}<\/code><\/pre>\n\n\n\n<p>Teste o c\u00f3digo:&nbsp;<a href=\"https:\/\/ideone.com\/9JVAtW\" target=\"_blank\" rel=\"noopener\">https:\/\/ideone.com\/9JVAtW<\/a><\/p>\n\n\n\n<p><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/oiCpbTbX68I\" allowfullscreen=\"allowfullscreen\" width=\"580\" height=\"315\" frameborder=\"0\"><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\">\ufeff<\/span><\/iframe><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><strong>4) <\/strong>Elabore um algoritmo que leia uma <em>string<\/em> (um texto) e determine um valor correspondente a quantas letras \u2018a\u2019 (mai\u00fasculas ou min\u00fasculas) existem na <em>string<\/em>. Calcule a fatorial do valor determinado e mostre quantos n\u00fameros m\u00faltiplos de 3 existem no intervalo entre 1 e o fatorial calculado.<\/p>\n\n\n\n<p><strong>C\u00f3digo em linguagem C:<\/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 fatorial(int x) {\n\tint i, res = 1;\n\tfor (i = x; i &gt; 1; i--) {\n\t\tres = res * i;\n\t}\n\treturn res;\n}\n\nint main(void) {\n\tint num, fat, cont=0, contA=0, i;\n\tchar texto[100];\n\t\/\/scanf(\"%s\", &amp;texto);\n\tgets(texto);\n\t\n\t\/\/conta ocorrencias da letra \"a\"\n\tfor (i = 0; i &lt; strlen(texto); i++) {\n\t\tif (texto[i] == 'a' || texto[i] == 'A') {\n\t\t\tcontA++;\n\t\t}\n\t}\n\t\n\tfat = fatorial(contA);\n\t\n\tfor (i = 1; i &lt;= fat; i++) {\n\t\tif (i % 3 == 0) {\n\t\t\tcont++;\n\t\t\tprintf(\"%i \\n\", i);\n\t\t}\n\t}\n\t\n\tprintf (\"Fatorial: %i \\nQtd a: %i \\nMultiplos de 3: %i\", fat, contA, cont);\n\tprintf (\"\\nMultiplos de 3: %i\", fat\/3);\n\t\n\treturn 0;\n}<\/code><\/pre>\n\n\n\n<p>Teste o c\u00f3digo:&nbsp;&nbsp;<a href=\"https:\/\/ideone.com\/unHpQw\" target=\"_blank\" rel=\"noopener\">https:\/\/ideone.com\/unHpQw<\/a><\/p>\n\n\n\n<p><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/Jt5_aG-no7M\" allowfullscreen=\"allowfullscreen\" width=\"580\" height=\"315\" frameborder=\"0\"><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\">\ufeff<\/span><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Segue um conjunto de exerc\u00edcios resolvidos em linguagem de programa\u00e7\u00e3o C. S\u00e3o disponibilizados o c\u00f3digo de solu\u00e7\u00e3o e v\u00eddeo explicativo. 1) Um funcion\u00e1rio de uma empresa recebe, anualmente, aumento salarial. Sabe-se que: 1) esse funcion\u00e1rio foi contratado em 2005 com sal\u00e1rio inicial de R$ 1.000,00; 2) em 2006 ele recebeu aumento de 1,5% sobre seu [&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,4],"tags":[60],"class_list":["post-724","post","type-post","status-publish","format-standard","hentry","category-c","category-videos","tag-exercicio-resolvido"],"aioseo_notices":[],"amp_enabled":true,"_links":{"self":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/724","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=724"}],"version-history":[{"count":9,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/724\/revisions"}],"predecessor-version":[{"id":1046,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/724\/revisions\/1046"}],"wp:attachment":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/media?parent=724"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/categories?post=724"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/tags?post=724"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}