lucas costa da cruz Postado Janeiro 11, 2022 em 04:08 Compartilhar Postado Janeiro 11, 2022 em 04:08 boa noite fiz esse exercício e não tenho certeza se está de acordo com o enunciado pode me ajudar por favor 3- Ler uma frase e contar quantos caracteres são espaços em branco #include <stdio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> int main(void) { // variáveis char texto[12]; // vetor que recebe a entrada feita pelo usuário int i, j, contador=0; // variáveis para controlar o loop principal, secundário e a quantidade de caracteres encontrados, respectivamente char vogais[] = "aeiouAEIOU"; // vetor de vogais // captura do texto que será digitado pelo usuário printf("Digite sua frase: "); gets(texto); // contagem de vogais da entrada feita pelo usuário int ContadorEspacos=0; for (i=0; i<strlen(texto); i++) { if (texto[i] == ' ') { ContadorEspacos++; } for (j=0; j<strlen(vogais); j++){ if (texto[i] == vogais[j]) { contador++; } } } // exibição do número de vogais encontrados if (contador == 1) { printf("\n\no texto informado possui 1 vogal\n\n"); } else { printf("\n\no texto informado possui %d vogais\n\n", contador); } return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Fernando Mercês Postado Janeiro 11, 2022 em 10:25 Compartilhar Postado Janeiro 11, 2022 em 10:25 Bom dia, @lucas costa da cruz, tudo bem? Eu precisei editar seu post original pra formatar o código como código (é só clicar no botão <> aqui do editor na hora de postar). Pode fazer isso da próxima vez que postar código, por gentileza? ? Também fiz as seguintes edições no seu código, para melhorar a visualização: Indentação: aninhei os códigos dentro dos blocos {} Espaços: pus espaços entre coisas como include<arquivo> e for (i=0;i<...;i++), etc. Coloquei os comentários das declarações de variáveis alinhados. Adicionei também um espaço depois do caractere ":" (dois pontos) na linha "Digite sua frase: ". Tudo isso foi pra deixar o código melhor pra quem for te ajudar, inclusive pra você mesmo ler. Agora em relação à lógica do programa em si, me parece que você modificou um programa que já contava vogais para agora contar espaços, foi isso? Achei inteligente fazer isso, parabéns! ? A sua contagem está certa. Só faltou imprimir o valor da variável ContadorEspacos. E nem precisa usar um condicional (if) pra testar se é maior que zero. Basta imprimir o valor dela, mesmo que seja zero. Mais uma coisa: você aloca um vetor de apenas 12 posições com char texto[12]. Isso vai fazer com que sua frase não possa ter mais do que 11 caracteres. Eu usaria pelo menos uns 255. ? NOTA: O seu programa possui um bug de segurança ao combinar um buffer que pode ser facilmente estourado com o uso da função gets(), mas este assunto foge do tema da lógica de programação em si, e acredito que este exercício seja para treinar sua lógica, então abrir este assunto com seus professores pode desviar muito, mas se quiser saber mais sobre o assunto, é só googlar por "buffer overflow". Um abraço! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Lucca Rodrigues Postado Janeiro 11, 2022 em 12:23 Compartilhar Postado Janeiro 11, 2022 em 12:23 1 hora atrás, Fernando Mercês disse: A sua contagem está certa. Só faltou imprimir o valor da variável ContadorEspacos. E nem precisa usar um condicional (if) pra testar se é maior que zero. Basta imprimir o valor dela, mesmo que seja zero. A contagem não está certa: o que deveria ser contado é a quantidade de caracteres de espaço em branco: ' ' space (SPC) '\t' horizontal tab (TAB) '\n' newline (LF) '\v' vertical tab (VT) '\f' feed (FF) '\r' carriage return (CR) O autor poderia usar isspace() da ctype, que verifica se o caractere passado como argumento é um caractere de espaço em branco e retorna um valor diferente de 0 caso seja e 0 caso não seja. A verificação poderia ser manual também, com uma string constante de preferência com todos caracteres de espaço em branco e um loop, assim como fez pra contar as vogais. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Fernando Mercês Postado Janeiro 11, 2022 em 13:48 Compartilhar Postado Janeiro 11, 2022 em 13:48 Bem lembrado. Mas tem um ponto.. Eu acho que a gente deve considerar o que o aluno está estudando (admitindo que isso é um exercício de um curso de programação). Normalmente, em enunciados deste tipo, que miram a lógica, considerar tabulações verticais e outros caracteres é um pouco "demais". Usar a isspace() provavelmente vai na mesma linha. Mas concordo que sua consideração é mais completa. Se quem passou o exercício falou de outros caracteres, e/ou falou da isspace() - o que pode ter acontecido vide a inclusão do ctype.h pelo @lucas costa da cruz -, você está certíssimo. Do contrário, comparar com ' ' deve ser suficiente. ? Um abraço, Fernando Citar Link para o comentário Compartilhar em outros sites More sharing options...
lucas costa da cruz Postado Fevereiro 1, 2022 em 21:03 Autor Compartilhar Postado Fevereiro 1, 2022 em 21:03 obrigado por ter me ajudado e desculpe por não ter visto a notificação é que eu uso o pc e dificilmente eu entro no pc porque não sou o único que uso o pc Citar Link para o comentário Compartilhar em outros sites More sharing options...
samparker1122 Postado Setembro 3, 2022 em 20:14 Compartilhar Postado Setembro 3, 2022 em 20:14 Olá, Obrigado por esta informação valiosa. por favor verifique aqui Obrigado Bom fim de semana Citar Link para o comentário Compartilhar em outros sites More sharing options...
fredericopissarra Postado Setembro 3, 2022 em 23:57 Compartilhar Postado Setembro 3, 2022 em 23:57 gets() não deve ser usado... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.