{"id":1282,"date":"2022-02-17T14:53:56","date_gmt":"2022-02-17T17:53:56","guid":{"rendered":"http:\/\/www.galirows.com.br\/meublog\/programacao\/?p=1282"},"modified":"2022-02-17T14:56:56","modified_gmt":"2022-02-17T17:56:56","slug":"corrigir-letras-maiusculas-no-nome","status":"publish","type":"post","link":"http:\/\/www.galirows.com.br\/meublog\/programacao\/corrigir-letras-maiusculas-no-nome\/","title":{"rendered":"Corrigir letras mai\u00fasculas no nome"},"content":{"rendered":"\n<p>Todos os dados do usu\u00e1rio deveriam ser verificados e ajustados conforme a natureza daquele dado. Por exemplo, a escrita correta de um nome envolve ter a primeira letra dos nomes e sobrenomes em mai\u00fasculo. O exerc\u00edcio proposta envolve ajustar o nome informado pelo usu\u00e1rio de forma a obter a escrita padronizada.<\/p>\n\n\n\n<p><strong>Enunciado: <\/strong>elabore um algoritmo que leia o nome completo de uma pessoa e ajuste a escrita de forma que apenas a primeira letra dos nomes e sobrenomes estejam em letra mai\u00fascula.<\/p>\n\n\n\n<p>Para exemplificar, considere o nome escrito da seguinte forma: anA MAriA Souza. A forma padronizada deve ser: Ana Maria Souza.<\/p>\n\n\n\n<p>Para fazer o algoritmo \u00e9 importante conhecer 3 fun\u00e7\u00f5es da biblioteca <em>string.h<\/em>, sendo elas:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>strlen(): fun\u00e7\u00e3o que retorna a quantidade de letras de uma string passada por refer\u00eancia.<\/li><li>tolower(): fun\u00e7\u00e3o que recebe uma letra e retorna o correspondente dessa letra em min\u00fasculo (se ela era uma letra mai\u00fascula).<\/li><li>toupper(): fun\u00e7\u00e3o que recebe uma letra e retorna o correspondente mai\u00fasculo dessa letra (se ela era uma letra em min\u00fasculo).<\/li><\/ul>\n\n\n\n<p>A resolu\u00e7\u00e3o para o enunciado \u00e9 mostrada no c\u00f3digo abaixo.<\/p>\n\n\n\n<p>Na linha 5 \u00e9 declarada e inicializada a string com um nome fict\u00edcio. Observe que, na escrita do nome foram utilizadas letras mai\u00fasculas e min\u00fasculas de forma n\u00e3o convencional para um nome. <\/p>\n\n\n\n<p>Na linha 6 \u00e9 importante mencionar que declara\u00e7\u00e3o <em>len = strlen(nome)<\/em> \u00e9 respons\u00e1vel por determinar quantas letras a vari\u00e1vel possui. Calculo o tamanho da string com a <em>strlen()<\/em> para n\u00e3o precisar alterar o valor da vari\u00e1vel toda vez que alterar o nome na declara\u00e7\u00e3o na linha 5.<\/p>\n\n\n\n<p>O c\u00f3digo das linhas 8-12 \u00e9 respons\u00e1vel por inicialmente alterar todo o nome  para deixar toda a escrita em letras min\u00fasculas. Para isso s\u00e3o alteradas todas a letras da string para seu correspondente em min\u00fasculo. O que j\u00e1 escrito em min\u00fasculo continua em min\u00fasculo e o que estava em mai\u00fasculo \u00e9 alterado para a letra em min\u00fasculo.<\/p>\n\n\n\n<p>A linha 15 \u00e9 utilizada para alterar a primeira letra do nome para mai\u00fasculo. Como o primeira letra j\u00e1 foi padronizada, observe que o la\u00e7o <em>for<\/em> da linha 17 inicia com o valor de i=1, pulando essa primeira letra na an\u00e1lise (ela j\u00e1 est\u00e1 correta). <\/p>\n\n\n\n<p>O c\u00f3digo das linhas 17-22 \u00e9 que faz a padroniza\u00e7\u00e3o final. \u00c9 considerado que, entre os nomes e sobrenomes existe um espa\u00e7o em branco. Com isso, esse trecho de c\u00f3digo busca por um caractere de espa\u00e7o em branco e, cada vez que localiza esse espa\u00e7o, faz com que a pr\u00f3xima letra ap\u00f3s o espa\u00e7o seja transformada para mai\u00fasculo. O incremento realizado na linha 20 faz com que, uma vez que a letra ap\u00f3s o espa\u00e7o j\u00e1 foi padronizada, n\u00e3o \u00e9 necess\u00e1rio avaliar mais uma vez essa letra verificando se \u00e9 um espa\u00e7o em branco. Sendo assim, esse incremento \u00e9 para diminuir a quantidade de letras que precisam ser avaliadas.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c line-numbers\">#include &lt;stdio.h&gt;\n#include &lt;string.h&gt;\n\nint main() {\n    char nome[] = \"ben gRa moR\";\n    int i, len = strlen(nome);\n\n    \/\/retira as letras mai\u00fasculas\n    for (i=0; i&lt;len; i++) {\n        nome[i] = tolower(nome[i]);\n    }\n    printf(\"Nome todo em min\u00fasculo: %s\\n\", nome);\n\n    \/\/adiciona as letras mai\u00fasculas\n    nome[0] = toupper(nome[0]);\n\n    for (i=1; i&lt;len; i++) {\n        if (nome[i] == ' ') {\n            nome[i+1] = toupper(nome[i+1]);\n            i++;\n        }\n    }\n\n    printf(\"Nome padronizado: %s\", nome);\n}<\/code><\/pre>\n\n\n\n<p>O incremento feito na linha 20 faz com que o la\u00e7o de repeti\u00e7\u00e3o n\u00e3o avalie a pr\u00f3xima letra j\u00e1 que ela n\u00e3o ser\u00e1 um caractere em branco. Isso porque foi considerado que o nome est\u00e1 escrito com o espa\u00e7amento correto (um espa\u00e7o em branco separando nomes e sobrenomes). Se n\u00e3o existe essa certeza, o melhor \u00e9 dispensar o uso de incremento.<\/p>\n\n\n\n<p>Teste o c\u00f3digo em: <a href=\"https:\/\/ideone.com\/FF96TO\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/ideone.com\/FF96TO<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Todos os dados do usu\u00e1rio deveriam ser verificados e ajustados conforme a natureza daquele dado. Por exemplo, a escrita correta de um nome envolve ter a primeira letra dos nomes e sobrenomes em mai\u00fasculo. O exerc\u00edcio proposta envolve ajustar o nome informado pelo usu\u00e1rio de forma a obter a escrita padronizada. Enunciado: elabore um algoritmo [&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":[23],"class_list":["post-1282","post","type-post","status-publish","format-standard","hentry","category-c","tag-string"],"aioseo_notices":[],"amp_enabled":true,"_links":{"self":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/1282","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=1282"}],"version-history":[{"count":5,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/1282\/revisions"}],"predecessor-version":[{"id":1294,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/1282\/revisions\/1294"}],"wp:attachment":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/media?parent=1282"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/categories?post=1282"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/tags?post=1282"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}