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;
}
Pergunta
sidclaynt
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:
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
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.