Ir ao conteúdo

Posts recomendados

Postado

Estou realizando um trabalho onde o código contara e separa as letras da frase que inserir.

Parte do trabalho é fazer com que o programa apenas encerre quando inserido algum caractere especifico, assim quando o usuário pressionar enter o programa não encerrara, ao invés ele deve pular uma linha para a digitação do texto.

 

 #include <stdio.h>  // Funções de I/O
#include <string.h> // Funções string

/* Função main () */
int main(){
  char f_a[200]; //Declara uma string
  int tam = 0, cont[26] ={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};



  printf("\n\nDigite seu texto de ate 200 char: ");
  gets(f_a); //Lê a string
  //Define o tamanho da string
  tam = strlen(f_a);
  for(int i=0; i<tam; i++){
      if (f_a[i]=='a'||f_a[i]=='A')
          cont[0]++;
      if (f_a[i]=='b'||f_a[i]=='B')
          cont[1]++;
      if (f_a[i]=='c'||f_a[i]=='C')
          cont[2]++;
      if (f_a[i]=='d'||f_a[i]=='D')
          cont[3]++;
      if (f_a[i]=='e'||f_a[i]=='E')
          cont[4]++;
      if (f_a[i]=='f'||f_a[i]=='F')
          cont[5]++;
      if (f_a[i]=='g'||f_a[i]=='G')
          cont[6]++;
      if (f_a[i]=='h'||f_a[i]=='H')
          cont[7]++;
      if (f_a[i]=='i'||f_a[i]=='I')
          cont[8]++;
      if (f_a[i]=='j'||f_a[i]=='J')
          cont[9]++;
      if (f_a[i]=='k'||f_a[i]=='K')
          cont[10]++;
      if (f_a[i]=='l'||f_a[i]=='L')
          cont[11]++;
      if (f_a[i]=='m'||f_a[i]=='M')
          cont[12]++;
      if (f_a[i]=='n'||f_a[i]=='N')
          cont[13]++;
      if (f_a[i]=='o'||f_a[i]=='O')
          cont[14]++;
      if (f_a[i]=='p'||f_a[i]=='P')
          cont[15]++;
      if (f_a[i]=='q'||f_a[i]=='Q')
          cont[16]++;
      if (f_a[i]=='r'||f_a[i]=='R')
          cont[17]++;
      if (f_a[i]=='s'||f_a[i]=='S')
          cont[18]++;
      if (f_a[i]=='t'||f_a[i]=='T')
          cont[19]++;
      if (f_a[i]=='u'||f_a[i]=='U')
          cont[20]++;
      if (f_a[i]=='v'||f_a[i]=='V')
          cont[21]++;
      if (f_a[i]=='w'||f_a[i]=='W')
          cont[22]++;
      if (f_a[i]=='x'||f_a[i]=='X')
          cont[23]++;
      if (f_a[i]=='y'||f_a[i]=='Y')
          cont[24]++;
      if (f_a[i]=='z'||f_a[i]=='Z')
          cont[25]++;


  }//Fim do for
  //Imprime resultado
  printf("\nQuantidade de vezes em que cada letra do alfabeto inglês se repete: \n");
  printf("Letras:        a     b     c     d     e     f     g     h     i     j     k     l     m     n     o     p     q     r     s     t     u     w     x     y    z \n");
  printf("Repeticoes:    %d     %d     %d     %d     %d     %d     %d     %d     %d     %d     %d     %d     %d     %d     %d     %d     %d     %d     %d     %d     %d     %d     %d     %d    %d \n\n",
        cont[0], cont[1], cont[2], cont[3], cont[4], cont[5], cont[6], cont[7], cont[8], cont[9], cont[10], cont[11],
        cont[12], cont[13], cont[14], cont[15], cont[16], cont[17], cont[18], cont[19], cont[20], cont[21], cont[22],
        cont[23], cont[24], cont[25]);

  return 0;
}//Fim da função main()

 

Postado

@Matheus Milani 

2 horas atrás, Matheus Milani disse:

o programa apenas encerre quando inserido algum caractere especifico, assim quando o usuário pressionar enter o programa não encerrara, ao invés ele deve pular uma linha para a digitação do texto.

Um jeito de fazer o que o exercício propõe é usar a função getch() da biblioteca conio.

Faça um loop que avalie o caractere digitado e, caso o mesmo corresponda ao caractere responsável por encerrar, simplesmente saia do loop.

Contudo, o código que você apresentou não parece avaliar este caractere, pelo visto ele só pede uma string e conta as letras até o fim da mesma...

Postado

@Matheus Milani  Para contar as letras não precisa criar um If para cada uma do alfabeto, você pode fazer a comparação entre 'a' e 'z (ou 'A' e 'Z'). Também não é preciso atribuir zero a todos os índices de cont, é só atribuir {0}, p.ex,

 

#include <stdio.h>
#include <string.h>

int main(void) {
    char f_a[200] = "Teste abcde ABCDE";
    char cont[26] = {0};
    int tam = strlen(f_a);   

    for(int i= 0;i<tam;i++){
        if (f_a[i]>='a' && f_a[i]<='z'){
            int letra = f_a[i] - 'a';
            cont[letra]++;
        }
        if (f_a[i]>='A' && f_a[i]<='Z'){
            int letra = f_a[i] - 'A';
            cont[letra]++;
        }
    }

    for(int i=0;i<26;i++){
        printf("%c = %d\n",i + 65,cont[i]);
    }
    return 0;
}

 

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!