2017-09-30 5 views
1

방정식으로 과제를 진행하고 있습니다. 방정식의 다른 부분을 입력하는 방법을 알 수 없습니다.3 변수 방정식을 C++의 double과 characters로 나눕니다.

방정식은 항상 다음 형식으로 구성됩니다. [double] [x/y/z] [sign] [double] ].

예 : + 4.7 + 2.5y 7Z = 46

이를 위해 I 네 번 변수 여섯 개 글자 변수를 사용하려.

double a, d, g, j;

char b, c, e, f, h, i;

이렇게 방정식은 다음 조작 할 수있는 변수로 나누어집니다.

방정식에 공백이있는 경우 istringstream을 사용하여 분할 할 수는 있지만 그럴 수는 없습니다. 입력 파일을 변경할 수 없습니다.

숫자를 두 배로, 문자/기호를 문자로 표시하려면 어떻게합니까?

+0

코드는 어디에 있습니까? 네가 가진 오류가 뭐니? 너 시도 했니? –

+0

제 문제는 어디서부터 시작해야할지 몰라요. 나는 istringstream을 사용하여 공간에서 분할된다는 것을 알아 내기 위해서만 시도했다. –

답변

1

istringstream 및 out of stream 연산자를 사용할 수 있습니다. 예 : 식

std::istringstream iss("2.5y+4.7x+7z=46"); 
double a,b,c,s; 
char v1,v2,v3; 
iss >> a; // read 1st koef 
iss >> v1; // read 1st var's name 
iss >> b; // read 2nd koef 
iss >> v2; // read 2nd var's name 
iss >> c; // read 3rd koef 
iss >> v3; // read 3rd var's name 
iss.ignore(); // skip '=' symbol 
iss >> s; // read sum 

징후 관련 koefs의 표시이다.

+0

'ignore'는'= '앞에 입력에 공백이 있으면 제대로 작동하지 않을 것입니다 (공백이 없거나 공백이 없는지 여부가 OP에 명확하지 않습니다). 그것을'char'로 읽은 다음 그것을 무시하는 것이 좋습니다. –

+0

이것은 내가 시도한 것과 비슷하지만 잘못된 것이 아니라면 istringstream에 대한 구분 기호가 공백이고 입력에 아무 것도없는 것처럼 보입니다. 비슷한 것을하는 대안이 있습니까? –

+1

@EmilyEvelan : 공백은'std :: string' 또는'char *'변수로 읽어 들이기위한 단락 문자입니다 -'double'과'char'을 위해서, 선행 공백은 무시되지만 아무 것도 구분하지 않습니다. 이 접근법의 유일한 진짜 문제는 변수가'e' 또는'E'이면 실수로 이중의 지수로 취급된다는 것입니다. –