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

Problemas com cout


Diogo Rupolo

Pergunta

Pessoal ainda estou enfrentando um grande problema com cout. Vou postar o código aqui embaixo. Comentem as linhas 147,151, 278 e 282. O melhor resultado desse programa é 466.13. Resultado apresentado sem comentar as linhas acima. No vetor perdas final é apresentado os 100 melhores resultados. Após o comentário dos cout, os valores começam a mudar. Já usei o comando cin.sync() para limpar o buffer que o Pedro Cunha me ensinou ontem, mas mesmo assim continua os problemas pra esse código. O código está no seguinte link:

http://www.4shared.com/rar/8pNv1XLR/Algori...4_barras_R.html?

Estou usando o Codeblocks para compilar.

Grato;

Diogo

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

Diogo, você conseguiu chegar ao valor 466.13 alguma vez? Porque o maior valor que eu cheguei usando o programa foi 511.438 (usando o cin.sync() antes de cada cout).

Att.,

Pedro

¹ Desculpe a demora em responder, não estava em casa.

² Só uma dúvida. Olhando o seu código, acho que ele foi feito em C++ certo? Se sim, qual é o motivo de você usar o modo antigo de abertura de arquivos ( C ) ao invés de usar o modo novo (C++)?

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

  • 0

1- Olá Pedro, faça o download no 4shared, e compile o programa sem mexer em nada que vai gerar esse resultado: 466.13. Quando vou mexendo nos "cout" o programa assume valores até menores que o esperado.

2- Em relação ao modo de ler arquivos está em C mesmo. Tem algumas partes que está em C, outras em C++. Na verdade é que não sabia fazer em C++. Quando testo o cin.sync() em vários locais não consegui chegar no valor esperado também Pedro.

3- Acho que pode ser algum dos vetores que está acumulando lixo, pois tem vetores meus que são declarados com dimensão de variáveis que mudam constantemente de tamanho. Não sei bem...

Att;

Diogo

Link para o comentário
Compartilhar em outros sites

  • 0

Diogo, quando eu rodo o programa aparecem vários resultados. Vou postar uma imagem aqui, por favor me diga se são os mesmos resultados que você obtem.

resultadosparte1.png

resultadosparte2.png

Att.,

Pedro

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

  • 0

1-Bom Pedro, a primeira imagem é o que obtenho quando não comento nenhum cout. Essa primeira imagem correspondem aos resultados corretos do programa nessa ordem mesmo. Estou buscando o mínimo. Então o menor valor correspondente é 469.13, do "vetor perdas final" . Agora após comentar os cout meus resultados mudam constantemente. Não segue nenhuma ordem mais. Então obtenho qualquer resultado. Resultados estranhos como 376.38, 339.109, 359.02.

2- Lembrando que meus resultados estão ordenado no vetor perdas final. Os 10 melhores resultado pode ser conferido no arquivo RefSet que está sendo criado.

Att;

Diogo

Link para o comentário
Compartilhar em outros sites

  • 0

Diogo, penso que seja algo relacionado ao mesmo erro da primeira vez. No entanto, como o erro só acontece quando você comenta os cout's, não me importaria muito. No entanto, caso você queira ir um pouco além, pode usar um debugger ou alguma ferramenta como o Valgrind, para procurar bugs no seu programa.

Att.,

Pedro

Link para o comentário
Compartilhar em outros sites

  • 0

Tente fazer o seguinte então. Troque o cout pelo printf que é mais rápido. Depois, tente comentar o printf e vê se funciona. Mesmo que não funcione, você ainda ganhara tempo pois o printf é mais rápido. Caso não seja o bastante, faça o seguinte:

Crie um arquivo qualquer e sempre que você tiver que usar o cout, em vez de usá-lo, passe as informações que você usaria nele para o arquivo. É bem mais rápido.

É claro que caso você realmente precise mostrar algo na tela, essa opção não servirá, no entanto, se você apenas estiver usando o cout para conferir os resultados, essa opção é perfeita.

Att.,

Pedro

Link para o comentário
Compartilhar em outros sites

  • 0

Ok. Se der certo me avise. Fiquei curioso. E caso esteja alocando memória dinamicamente, lembre-se de deletar a mesma depois usando o comando delete . Você chegou a testar a última opção?

Att.,

Pedro

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpa a demora Pedro. Bom para aquele problema até que dá certo fazer isso. Mas o problema só complica cada vez mais porque quando testo um sistema com mais dados, surgem mais problemas ainda. Mais variáveis com valores de lixo, mesmo inicializando todas as variáveis com zero. Neste caso nem o cout ou cin.sync() resolvem. Estou refazendo o código de uma outra maneira com alocação dinâmica e ponteiros para livrar desse problema pois está complicado resolvê-lo. Acredito que o problema esteja em posições de vetores não utilizadas.

Att;

Diogo

Editado por Diogo Rupolo
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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...