Alasca 0 Denunciar post Postado Maio 19, 2015 Olá! Tenho a seguinte questão: Elabore um programa que: a) Leia uma frase de 80 caracteres, incluindo os espaços em branco (criar uma função para fazer esta leitura); b - Conte quantos espaços em branco existem na frase (criar uma função que faça esta contagem); c) Conte quantas vezes a letra E aparece (criar uma função que faça esta contagem); d) Imprima o que foi calculado nos itens b e c (criar uma função que faça esta impressão). Observação: Este programa deve conter as funções que atendam aos itens a, b, c e d. Além destas funções, naturalmente, o programa deve ter a função main(), cuja missão será a de somente chamar as demais funções. Além disso, o uso de ponteiro é obrigatório. Consegui elaborar o seguinte código: #include <stdio.h> void ler(char *string); void imprimir(char *string); int main() { char frase[80]; printf("Digite a frase:\n"); ler(frase); imprimir(frase); return 0; } void ler(char *string) { fgets(string, 80, stdin); } int espacos(char *string) { int i, count = 0; for(i=0; string[i]!='\0'; i++) if(string[i] == ' ') count++; return count; } int qtdE(char *string) { int i, count = 0; for(i=0; string[i]!='\0'; i++) if(string[i] == 'E') count++; return count; } void imprimir(char *string) { printf("\nQuantidade de espacos na frase: %d\n", espacos(string)); printf("Quantidade de vezes que a letra E aparece: %d\n", qtdE(string)); } Mas ele só conta a letra E quando é maiúscula, e eu gostaria que contasse também as minúsculas. Tentei substituir essa linha if(string[i] == 'E') por essa outra: if(string[i] == 'E' || 'e') aí ele conta as letras e, maiúscula ou minúscula, só que conta duas vezes cada uma. Se alguém puder ajudar, como eu faço para contar todas as letras 'e', independente de serem maiúsculas ou minúsculas? Grata Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 19, 2015 #include <stdio.h> #include <ctype.h> #include <string.h> #define MAX 80; void ler(char *str); void imprimir(char *str); int main(void) { char frase[MAX]; printf("Digite a frase:\n"); ler(frase); imprimir(frase); return 0; } void ler(char *str) { fgets(str, 80, stdin); } int espacos(char *str) { int i, count = 0; for(i=0; i < strlen(str); i++) { if(str[i] == ' ') count++; } return count; } int qtdE(char *str) { int i, count = 0; for(i=0; i<strlen(str); i++) { if(tolower(str[i]) == 'e') count++; } return count; } void imprimir(char *str) { printf("\nQuantidade de espacos na frase: %d\n", espacos(str)); printf("Quantidade de vezes que a letra E aparece: %d\n", qtdE(str)); } Se quiser ser mais genérico na função de contagem: int contagem_caractere(char *str, char c) { int i, count = 0; for(i=0; i<strlen(str); i++) { if(tolower(str[i]) == c) count++; } return count; } Compartilhar este post Link para o post Compartilhar em outros sites
Alasca 0 Denunciar post Postado Maio 19, 2015 Funcionou certinho Obrigada! Compartilhar este post Link para o post Compartilhar em outros sites