Ir ao conteúdo

Posts recomendados

Postado

Estou realizando uma atividade em C e gostaria de dar a opção de testar outra frase ou encerrar o programa ao usuario.

adicionado 2 minutos depois

Não poderei enviar meu código pois se o bot do meu professor encontrar o tópico provavelmente lera meu exercício como uma replica do meu que entregarei.

  • Curtir 1
Postado
#include <stdio.h>
#include <string.h>

int main(){
  char letra[101], ch = 's';//101 POR CONTA DO NULL /0
  int tam = 0, cont[27] ={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,0};//ADICIONEI 1 A MAIS PELO MESMO MOTIVO DO /0


  printf("Seja bem vindo!");//INTERAÇAO COM USUARIO
  printf("\nEste programa ira contar a quantidade de vezes em que cada letra do alfabeto aparece na frase que digitar.\n");
  printf("Lembre-se de que somente letras do nosso alfabeto serao contabilizadas!\n\n");
  printf("Agora digite ate 100 letras separadas ou em frases:\n- ");

  gets(letra);//GETS COMO APRENDIDO EM AULA


  tam = strlen(letra);

  for(int i=0; i<tam; i++){//TODAS AS LETRAS EM MINÚSCULO E MAIÚSCULO MESMO Q NÃO PRECISSASSE COMO DITO NA DICA
      if (letra[i]=='a'||letra[i]=='A')
          cont[0]++;
      if (letra[i]=='b'||letra[i]=='B')
          cont[1]++;
      if (letra[i]=='c'||letra[i]=='C')
          cont[2]++;
      if (letra[i]=='d'||letra[i]=='D')
          cont[3]++;
      if (letra[i]=='e'||letra[i]=='E')
          cont[4]++;
      if (letra[i]=='f'||letra[i]=='F')
          cont[5]++;
      if (letra[i]=='g'||letra[i]=='G')
          cont[6]++;
      if (letra[i]=='h'||letra[i]=='H')
          cont[7]++;
      if (letra[i]=='i'||letra[i]=='I')
          cont[8]++;
      if (letra[i]=='j'||letra[i]=='J')
          cont[9]++;
      if (letra[i]=='k'||letra[i]=='K')
          cont[10]++;
      if (letra[i]=='l'||letra[i]=='L')
          cont[11]++;
      if (letra[i]=='m'||letra[i]=='M')
          cont[12]++;
      if (letra[i]=='n'||letra[i]=='N')
          cont[13]++;
      if (letra[i]=='o'||letra[i]=='O')
          cont[14]++;
      if (letra[i]=='p'||letra[i]=='P')
          cont[15]++;
      if (letra[i]=='q'||letra[i]=='Q')
          cont[16]++;
      if (letra[i]=='r'||letra[i]=='R')
          cont[17]++;
      if (letra[i]=='s'||letra[i]=='S')
          cont[18]++;
      if (letra[i]=='t'||letra[i]=='T')
          cont[19]++;
      if (letra[i]=='u'||letra[i]=='U')
          cont[20]++;
      if (letra[i]=='v'||letra[i]=='V')
          cont[21]++;
      if (letra[i]=='w'||letra[i]=='W')
          cont[22]++;
      if (letra[i]=='x'||letra[i]=='X')
          cont[23]++;
      if (letra[i]=='y'||letra[i]=='Y')
          cont[24]++;
      if (letra[i]=='z'||letra[i]=='Z')
          cont[25]++;


  }

//O INTUITO É TER 2 FORMAS DE VISUALIZAÇÃO PARA PREFERÊNCIA DO USUARIO, NÃO DIFERENCIAR MAIÚSCULO DE MINÚSCULO!
  printf("\n    Letras: A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z\n");
  printf("Quantidade: %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  %d", 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]);


  printf("\n\n\nLetras 'a': %d\n", cont[0]);
  printf("Letras 'b': %d\n", cont[1]);
  printf("Letras 'c': %d\n", cont[2]);
  printf("Letras 'd': %d\n", cont[3]);
  printf("Letras 'e': %d\n", cont[4]);
  printf("Letras 'f': %d\n", cont[5]);
  printf("Letras 'g': %d\n", cont[6]);
  printf("Letras 'h': %d\n", cont[7]);
  printf("Letras 'i': %d\n", cont[8]);
  printf("Letras 'j': %d\n", cont[9]);
  printf("Letras 'k': %d\n", cont[10]);
  printf("Letras 'l': %d\n", cont[11]);
  printf("Letras 'm': %d\n", cont[12]);
  printf("Letras 'n': %d\n", cont[13]);
  printf("Letras 'o': %d\n", cont[14]);
  printf("Letras 'p': %d\n", cont[15]);
  printf("Letras 'q': %d\n", cont[16]);
  printf("Letras 'r': %d\n", cont[17]);
  printf("Letras 's': %d\n", cont[18]);
  printf("Letras 't': %d\n", cont[19]);
  printf("Letras 'u': %d\n", cont[20]);
  printf("Letras 'v': %d\n", cont[21]);
  printf("Letras 'w': %d\n", cont[22]);
  printf("Letras 'x': %d\n", cont[23]);
  printf("Letras 'y': %d\n", cont[24]);
  printf("Letras 'z': %d\n", cont[25]);

  do{
    printf("\n\nDeseja tentar com outra frase?  s ou n:");
    ch = getchar();
    fflush(stdin);

  }while(ch = 'n');
  return 0;
}

 

Postado

@Matheus Milani Está bem mal otimizado este seu código...

 

1 hora atrás, Matheus Milani disse:

gets(letra);//GETS COMO APRENDIDO EM AULA

Tente digitar mais que 100 caracteres pra ver o que acontece... Na verdade, nem tente.

Essa função gets() não tem segurança nenhuma, deveria ser evitada.

Use scanf() ou fgets().

 

Faça um teste para verificar se a letra digitada é maiúscula, e se for, converta para minúscula, assim você não perde tempo tendo que checar maiúsculas também em todas aquelas condições que você estabeleceu:

for(int i = 0; i < len; i++){ // len é o tamanho da string
    if(text[i]>='A' && text[i]<='Z'){
        /* A diferença das maiúsculas e minúsculas
           em decimal na tabela ASCII é 32 */
        text[i]=text[i]+32;
    }
}

 

Outra coisa, se forem mais que umas 5 condições, use a estrutura switch/case que é mais rápida, você deve usar ela quando quiser comparar a mesma variável ou expressão com várias opções, que se encaixa neste caso.

 

Outro problema é essa printf():

1 hora atrás, Matheus Milani disse:

printf("Quantidade: %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  %d", 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]);

Use um loop para imprimir um por um, é bem mais fácil de entender e não fica uma coisa repetitiva assim.

 

1 hora atrás, Matheus Milani disse:

Estou realizando uma atividade em C e gostaria de dar a opção de testar outra frase ou encerrar o programa ao usuario.

Faça um loop que englobe o que quer que repita, no caso, seu programa.

Você pode imprimir algo como: Quer continuar? (1) sim, (2) não.

E ler um int com scanf(), ou poderia ler um char, da no mesmo.

  • Curtir 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...