Hello,
my question is how can I read decimal from txt file? For Example expression "2.0 1.3 +" - postfix to calculate it.

The one that I have right now work for integers but when it starts reading it chops of the decimal part. I can figure out what i need to implement to get it to read decimal.

TemplateStack <double> doubleStack;
	ifstream infile ("oop06in.txt",ios::in);
	if (! infile)
		cout << "error opening data file!\n";
	else // file ok
	{
		bool stackError = false; // true if stack empties too soon
		while (! infile.eof())
		{
			char token [10];
			infile >> token;
			// BODY OF LOOP GOES HERE
			if (token[0] >= '0' && token[0] <= '9')
			{
				doubleStack.push(atoi(token));
				
			}
			else
			{
				double temp1, temp2;
				switch (token[0])
				{
					case '+':
					{
						stackError = doubleStack.pop(temp1);
						stackError = doubleStack.pop(temp2);
						doubleStack.push(temp1 + temp2);
						break;
					}
					case '-':
					{
						stackError = doubleStack.pop(temp1);
						stackError = doubleStack.pop(temp2);
						doubleStack.push(temp1 - temp2);
						break;
					}
					case '*':
					{
						stackError = doubleStack.pop(temp1);
						stackError = doubleStack.pop(temp2);
						doubleStack.push(temp1 * temp2);
						break;
					}
					case '/':
					{
						stackError = doubleStack.pop(temp1);
						stackError = doubleStack.pop(temp2);
						doubleStack.push(temp1 / temp2);
						break;
					}
					default:
						cout << "Wrong input of arithmetic" << endl;
				}
			}
			cout << "stack is now " << doubleStack << "\n\n";
		} // end while not eof
	if (!stackError)
		cout << "stack emptied during expression evaluation!!\n";
	else // no stack error
	{
		double doubleResult;
		if (doubleStack.pop (doubleResult))
			cout << "expression evaluates to " << doubleResult << endl;
		else
			cout << "final pop of IntStack failed\n";
		if (doubleStack.isEmpty())
			cout << "empty stack => well-formed double expression!\n";
		else // stack is not empty
			cout << "non-empty stack => illegal double expression!\n";
		} // end else no stack error
	} // end else file ok*/

Use atof instead of atoi.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.