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

problema com "while"


sidclaynt

Pergunta

Olá a todos do forum. Preciso inserir dados até que eu digite a string: "FIM". mas com ele dá erro sempre e quando tiro o while funciona normalmente, acho q estou errando alguma coisa. alguém me ajuda???

abaixo segue os códigos:

#include <cstdlib>
#include <iostream>
#include <sstream>


using namespace std;

double StrToF(string str)
{
    istringstream iss(str);
    float retorno;
    iss >> retorno;
    retorno = retorno/100;
    return retorno;
} 


int main(int argc, char *argv[])
{
    //variaveis
    struct tipo_despesa
    {
       string codigo;
       string descricao;
    };

    struct valor_conta
    {
       string codigo;
       float valor_jan;
       float valor_fev;
       float valor_mar;
       float valor_abr;
       float valor_mai;
       float valor_jun;
    };
    
    int x;
    int tam;
    int tab[5];
    string campo[6];
    string entrada;
    struct valor_conta despesas[6];
    
    //entrada de valores

******************************************//trecho problemático.

    while (1)
    {
    cout<<"Digite os Valores:"<<endl;
    getline(cin,entrada);
    if (entrada == "FIM")
                break;
    }

******************************************//trecho problemático.
    x=0;
    tam=entrada.size();
    
    //encontrando indices do separador ";"
    for (int i=0; i<=tam;i++)
    {
        if (entrada.substr(i,1)==";")
        {
           tab[x]=i;
           x=x+1;
        }
    }
    
  
    //capturar campos
    campo[0]=entrada.substr(tab[0]+1,(tab[1]-1)-tab[0]);
    campo[1]=entrada.substr(tab[1]+1,(tab[2]-1)-tab[1]);
    campo[2]=entrada.substr(tab[2]+1,(tab[3]-1)-tab[2]);
    campo[3]=entrada.substr(tab[3]+1,(tab[4]-1)-tab[3]);
    campo[4]=entrada.substr(tab[4]+1,(tab[5]-1)-tab[4]);
    campo[5]=entrada.substr(tab[5]+1,tam-tab[5]);
    
    //preencher registro com valores apropriados  
    despesas[0].codigo=entrada.substr(0,2);
    despesas[0].valor_jan=StrToF(campo[0]);
    despesas[0].valor_fev=StrToF(campo[1]);
    despesas[0].valor_mar=StrToF(campo[2]);
    despesas[0].valor_abr=StrToF(campo[3]);
    despesas[0].valor_mai=StrToF(campo[4]);
    despesas[0].valor_jun=StrToF(campo[5]);
    
    //testar saida dos valores do registro
    cout << despesas[0].codigo << endl;
    cout << despesas[0].valor_jan << endl;
    cout << despesas[0].valor_fev << endl;
    cout << despesas[0].valor_mar << endl;
    cout << despesas[0].valor_abr << endl;
    cout << despesas[0].valor_mai << endl;
    cout << despesas[0].valor_jun << endl;  

    cout << endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
Ocorre algum erro na compilação ou o erro de lógica?

Obs.:

Não cheguei a analisar completamente seu código, mas aparentemente está bem repetitivo. Isso poderia ser melhorado organizando-o em arrays e utilizando loops.

Erro de compilação! não exibe os dados esperados e fecha sem "pause", quando tiro o while fica normal.

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