Jump to content
Fórum Script Brasil
  • 0

Código com problema.


Csrdos

Question

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 to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 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

Edited by Prog_Junior
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

  • 0
Olá,

eu testei o código acima, mas não funcionou ou eu não utilizei corretamente.

Grato!

Este fórum 'esconde' o caractere "barra invertida-zero", por isso coloquei um espaço entre eles.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...