Ir ao conteúdo
  • Cadastre-se

C Como criar uma opção de "Continuar ou sair" de forma correta?


Matheus Milani

Posts recomendados

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
Link para o comentário
Compartilhar em outros sites

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

 

Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

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