Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alasca

Ponteiros em C (letras Maiúsculas e minúsculas)

Recommended Posts

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
#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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.