Hello, need to remove the flow functions and replace them with functions c i / o

Write your question here.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <stdio.h>
#include <iostream>
using namespace std;// чтобы не писать std::
float number(){ // считываем число
	int res = 0;
	for (;;)//бесконечный цикл
	{
		char c = getchar();//записываем
		if (c >= '0' && c <= '9')//условие, что используются только цифры
			res = res *10 + c - '0';//для корректной записи числа
		else {
			cin.putback(c);// возвращает символ назад в поток
			break;//прерываем
		}
		
	}
	return res;//возвращаем результат

}

float plmn();//чтобы компилятор увидел функцию в фактор

float skobki() {//скобки

	char c = getchar();
	if (c == '(') {
		float x = plmn();
		getchar();
		return x;
	}
	else {//если не число,то
		cin.putback(c);//возвращаем символ
		return number();
	}
}

float factor() { // функция деления и умножения
	float x =skobki();
	for (;;) {
		char c = getchar();
	
		switch (c) {
		case '*': // если умножение
			x *= skobki();
			break;
		case '/': // если деление 
			x /= skobki();
			break;
		default: //если неизвестный символ, то возвращаем в поток
			cin.putback(c);// возвращаем символ назад 
			return x;//возвращаем результат
		}
	}
}
float plmn() { // функция сложения и вычитания
	float x = factor();
	for (;;) {
		char c = getchar();

		switch (c) {
		case '+': // если сложение
			x += factor();
			break;
		case '-': // если вычитание
			x -= factor();
			break;
		default: //если неизвестный символ, то возвращаем в поток
			cin.putback(c);// возвращаем символ назад 
			return x; //возвращаем результат
		}
	}
}

int main()
{
	float r = plmn();//вызов функций по порядку
	printf("Result= %0.3f", r);//результат
}


this code performs arithmetic expressions.
I will be very grateful for the help)
Need replace functions as getchar and cin.putback
Last edited on
Duplicate of:

http://www.cplusplus.com/forum/beginner/271290/

Please don't spam the forum with multiple threads for the same question.

Ok i just reformulated the question
Topic archived. No new replies allowed.