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

(Resolvido) Duvida C++ (Iniciante) exercicio simples.


Zakay

Pergunta

Bem gostaria de falar antes de mais nada que eu procurei bastante e não o concegui fazer, e como preciso enviar amanha pro professor vim postar aqui com intuito de obter um ajuda..

o exercicio é esse (Construa um programa em C++ que:

a) leia uma frase de 80 caracteres, incluindo brancos;

B)) conte quantos brancos existem na frase;

c) conte quantas vezes a letra "a" ou "A" aparece;

d) conte quantas vezes ocorre um mesmo par de letras na frase e quais são elas;

e) imprima o que foi calculado nos itens b, c e d.)

eu fiz esse codigo que faz quas etudo , mais eu não concegui fazer ele dizer os pares certos.. aparece uns simbolos estranhos .

por exemplo se eu boto a frase ( Eu corro de Carro.) ele vai dizer que tem 3 espaços em branco , uma letra A na frase e que tem 2 pares , mais ele não diz quais os pares . essa e minah duvida.

OBs: estou usando o Visual Studio da Microsoft.

já agradeço de antemao a todos que ajudarem.

#include <stdafx.h>
#include <iostream>
using namespace std;
int main()
{
char frase[80], par[40];
int x, z, contB, contA, contPar;

contB=0;
contA=0;
contPar=0;

cout<<"Digite uma frase de ate 80 caracteres: , termino com ponto final\n";
gets(frase);

for (int i = 0; i <40; i++)
  par[i] = ' ';

for(int x=0; x<80; x++)
{
    z=x+1;

    if (frase[x]==' ')
    contB+=1;

    if (frase[x]=='A' || frase[x]=='a')
     contA += 1;

    if (frase[x]==frase[z] )
    {
        par[contPar]=frase[x]+frase[z];
    
        contPar+=1;
    }

    if (frase[x]=='.')
        break;

}

cout<<"Existe(m) "<<contB<<" branco(s) na frase.\n";
cout<<"Existe(m) "<<contA<<" letra(s) A na frase.\n";
cout<<"Existe(m) "<<contPar<<" pares na frase.\n";
for (int i = 0; i <40; i++)
cout<<"Os pares são: "<<par[i]<<"\n";



system("pause");
return 0;

}
uma imagem do codigo rodando. imagemtga.png Espero ter postado certo minha primeira vez. Meu deus minha cabeça vai explodir :blink: eu aqui tentando milhares de coisas e a soluçao era tão simples. realmento o erro era nessa parte
par[contPar]=frase[x]+frase[z];

. Eu usei a soluçao do Luiz Rodrigo e funcionou perfeitamente e de uma forma bem simples , exatamente o que eu queria. :rolleyes:

a soluçao do waldyrpe eu não me aprofundei mais parecia ser mais complicado e como eu já consegui solucionar o problema com a dica do luiz rodrigo não sei dizer se funciona ou não, mais obrigado mesmo assim.

agradeço aos menbros Luiz Rodrigo e waldyrpe, pela atençao e soluçao.

Problema Resolvido.

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

3 respostass a esta questão

Posts Recomendados

  • 0

Parece que o erro está nesse trecho de código:

par[contPar]=frase[x]+frase[z];
Quando você soma dois caracteres (ex: 'A' + 'A') , você não está concatenando (se estivesse, o resultado seria "AA"), você está somando os valores ASCII dos caracteres. No exemplo, o código ASCII de 'A' é 65, a soma retorna o caractere com código ASCII 130, que provavelmente não é uma letra. Para resolver esse problema, acho que seria bom reescrever a linha, ficando assim:
par[contPar] = frase[x]
Afinal, se os dois caracteres são iguais, não há necessidade de armazenar duas vezes o mesmo caractere. Na hora de escrevê-los, faria algo assim:
for (register int i = 0; i < contPar; i++)
     cout << par[i] << par[i] << '\n';

/* Parece que todos o professores de programação são iguais, quando o assunto na escola técnica era array, passaram o mesmo exercício, com a diferença de que era em... pascal */

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

  • 0

Oi, seu código está "aparentemente" correto só que tem um probleminha.

if (frase[x]==frase[z] )

{

par[contPar]=frase[x]+frase[z];

contPar+=1;

}

Este trecho em negrito está incorreto, em C/C++ caracteres somados retornam seu código ASCII com isso se você tem um caracter y e o código dele for 12 quando você faz a soma y+y o que retorna não é "yy" e sim 24!!!

Para o que você quer fazer é necessário usar uma função chamada strcat da biblioteca <cstring> segue o link http://www.cplusplus.com/reference/clibrary/cstring/strcat/

[]s

Link para o comentário
Compartilhar em outros sites

  • 0

Meu deus minha cabeça vai explodir :blink: eu aqui tentando milhares de coisas e a soluçao era tão simples.

realmento o erro era nessa parte

par[contPar]=frase[x]+frase[z];

. Eu usei a soluçao do Luiz Rodrigo e funcionou perfeitamente e de uma forma bem simples , exatamente o que eu queria. :rolleyes:

a soluçao do waldyrpe eu não me aprofundei mais parecia ser mais complicado e como eu já consegui solucionar o problema com a dica do luiz rodrigo não sei dizer se funciona ou não, mais obrigado mesmo assim.

agradeço aos menbros Luiz Rodrigo e waldyrpe, pela atençao e soluçao.

Problema Resolvido.

Editado por Zakay
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,3k
×
×
  • Criar Novo...