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

Duvida Com A Instruçao For


rickroeger

Pergunta

alo galera

Estou iniciando na programação e resolvi começar pelo C.

Estou seguindo um turorial que achei na internet . E tem um exercicío que eu não consigo resolver.

O exercicío é esse :

Escreva um programa que leia uma string, conte quantos caracteres desta string são iguais a 'a' e substitua os que forem iguais a 'a' por 'b'. O programa deve imprimir o número de caracteres modificados e a string modificada.

O contador eu consigo fazer , só não consigo trocar o 'a' pelo b. Voces poediriam fazer o que eu estou fazendo de errado?

main()
{
      int i,cont;
      char string[10];
      printf("Digite uma string: ");
      gets(string);
      for(i=0;string[i] !='\0';i++)
      cont=0;
      {
                        if (string[i] == 'a')
                        cont = cont+1;
                        if (string[i] == 'a')
                        string[i] = 'b';
                        }
      printf("O numero de letras modificadas foi: %d",cont);
      printf("\nA string se modificou %s",string[i]);
      getch();
      return(0);
}

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

3 respostass a esta questão

Posts Recomendados

  • 0

Primeiro, for não é função e sim uma instrução. E, o seu código está com um probleminha:

for(i=0;string[i] !='\0';i++)
      cont=0;
      {
                        if (string[i] == 'a')
                        cont = cont+1;
                        if (string[i] == 'a')
                        string[i] = 'b';
                        }
Qual é o "bloco" de execução da instrução for no caso acima? É só a linha "cont=0;". Ele vai repetir esta linha para cada caracter da string até terminar. O que está entre chaves *não* está fazendo parte do for e só vai ser executado apenas uma vez. A sintaxe do for é a mesma do if (e das demais instruções), ou seja, se o bloco seguinte for composto por apenas uma linha você não precisa das chaves. E é justamente isso que está acontecendo. O correto deveria ser:
cont=0;
for(i=0;string[i] !='\0';i++)
{
    if (string[i] == 'a')
        cont = cont+1;
    if (string[i] == 'a')
        string[i] = 'b';
}
Além disso, você não precisa de dois ifs ali dentro do loop, basta um:
cont=0;
for(i=0;string[i] !='\0';i++)
{
    if (string[i] == 'a')
    {
        cont = cont+1;
        string[i] = 'b';
    }
}

Certo? ;)

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

:P

#include<stdio.h>

int
main()
{
      int i,
          cont=0;
      
      char *s = (char*)malloc(sizeof(char)*30);
      
      printf("Digite uma string: ");
      scanf("%[^\t\n]",s);

      for(i=0; i < strlen(s); i++)
      {
           if (s[i] == 'a')
               cont++;
           if (s[i] == 'a')
               s[i] = 'b';
      }
      printf("O numero de letras modificadas foi >>> %d\n",cont);
      
      printf("\nA string modificada >>> %s\n",s);

      return(0);
}

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...