Ir para conteúdo
Fórum Script Brasil
  • 0

Código com problema.


Csrdos

Pergunta

Olá pessoal,

Sou novo no fórum e em linguagem C e preciso da ajuda de vocês.

No código que é apresentado abaixo a proposta e ler a frase e informar a quantidade de letras C, mas ele trava após exibir a frase que foi digitada. Desculpe se esse tópico não esta no lugar correto.

Obrigado e segue o código:

#include <stdio.h>

int main ()

{

char string [100]; /* String, até 99 caracteres */

int i, cont;

printf ("\n\nDigite uma frase: ");

gets(string); /*Le a string*/

printf ("\n\nA frase digitada: \n%s", string);

cont = 0;

for (i = 0; string[1] != ''; i = i + 1)

{

if (string == 'c') /*Se for a letra 'c'*/

cont = cont + 1; /*Incrementa o contador de caracteres*/

}

printf ("\nNumero de caracteres c = %d", cont);

getch();

}

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Eaw fera beleza, fiz novamente o seu programinha com algumas modificações, espero que possa ter te ajudado. Qualquer dúvida, poste ai no fórum, que agente tenta resolver.

Obs:

1) Para ler um vetor de char você deve utilizar fflush(stdin) antes e depois de ler a string, para ter a certeza de não pegar sujeira antes da memória.

2) Eu declarei o vetor de char como v[100], ao invés de string[100], não saberia te dizer se a palavra "string" declarada como variavel, pode dar problema em C, por ser uma palavra reservada da linguagem, para não ocorrer o risco utilizei outro nome.

3) Declarei a bibilioteca #include <stdlib.h>, para poder utilizar a função system("pause"), que não encerra o programa enquanto o usuário não digitar uma tecla,

é bem legal !.

4) Dentro do laço for apenas fiz uma pequena alteração para testar a letra "C", pois o usuário pode digitar tanto em maíusculo como minúsculo.

#include <stdio.h>
#include <stdlib.h>


   int main () {

   char v[100],frase[100];
   int i,cont;

   printf ("\n\nDigite uma frase :");
   fflush(stdin);
   fgets(v,100,stdin);
   fflush(stdin);
   printf("\n");

  // ler a frase digitada
  printf ("Frase digitada foi :%s\n",v);

  // verifica se letra digitada é igual a "C"
   cont = 0;

   for(i=0;i<100;i++)
   {
      if((v[i] == 'c') || (v[i] == 'C'))
      {
        cont = cont + 1;        
      }      
   }               
   
  // imprime total de letras iguais a "C"
  printf ("Numero de caracteres iguais a letra c : %d\n\n", cont);

  system("pause");

      
 }//main

Editado por Prog_Junior
Link para o comentário
Compartilhar em outros sites

  • 0

Caro Prog_Junior,

Muito obrigado por ter me ajudado, você resolveu 100% das minhas dúvidas, e agradeço pelas explicações. Mas o programa esta contando uma letra a mais e eu alterei a seguinte linha e passou a contar certo:

for(i=0;i<100;i++)

for(i=1;i<100;i++)

Lhe pergunto: é essa a solução?

Grato!

Link para o comentário
Compartilhar em outros sites

  • 0

Opa, seguinte em linguagem C, o vetor sempre começa na posição 0 (zero), ou seja se você tem um vetor de 100 posições ele vai contar de 0 até 99, pois começa armazenar sempre na posição 0.

Se alterar o for como dissestes para (i=1;i<100;i++), ele vai contar da posição 1 até a 99 correto? porém se tu digitar por exemplo a seguinte palavra "ca", ele vai começar a contar da posição 1 em diante, que seria a letra "a", mas a tua letra "c" está na posição 0 (zero), entendeu ?

Link para o comentário
Compartilhar em outros sites

  • 0

Sobre o problema de o programa acusar erro após a leitura da string, o seu laço for estava errado:

for (i = 0; string[1] != '\ 0'; i = i + 1)
Para percorrer a string até seu final, você deve usar a variável de controle para verificar se a string já chegou ao seu caractere nulo.
for (i=0;string[i] != '\ 0'; i++)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...