Постфиксную запись удобно воспринимать как манипуляции со стеком — аналогом длинной трубки с отверстием внизу. в которую можно класть шары, при этом каждый следующий шар проталкивает дальше предыдущие.
Идём по записи 1) 5 — кладём в стек 5 2) 13 — кладём в стек 13 3) 7 — кладём в стек 7 4) - — вытаскиваем из стека два последних шара (13 и 7) и кладём обратно их разность 13 - 7 = 6 5) * — вытаскиваем из стека два последних шара (5 и 6) и кладём обратно их произведение (5 * 6 = 30). 30 и будет ответом.
/*VS C++*/ #include <iostream> using namespace std; int main() { setlocale(LC_ALL, ""); float x, y, z, m; cout << "Введите 3 числа через пробел: "; cin >> x >> y >> z; float min = x - y; float max = y; if (y > max) max = y; if (z > max) max = z; if (y - z < min) min = y - z; if (x - z < min) min = x - z; m = max / min; printf("m = %.1f", m); cout << endl; system("pause"); return 0; }
//C // #include <stdio.h> int main() { float x, y, z, m; scanf("%f%f%f", &x,&y,&z); float min = x - y; float max = y; if (y > max) max = y; if (z > max) max = z; if (y - z < min) min = y - z; if (x - z < min) min = x - z; m = max / min; printf("m = %.1f", m); printf("\n"); return 0; }
Идём по записи
1) 5 — кладём в стек 5
2) 13 — кладём в стек 13
3) 7 — кладём в стек 7
4) - — вытаскиваем из стека два последних шара (13 и 7) и кладём обратно их разность 13 - 7 = 6
5) * — вытаскиваем из стека два последних шара (5 и 6) и кладём обратно их произведение (5 * 6 = 30). 30 и будет ответом.
Эта запись равносильна такой: 5 * (13 - 7)
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "");
float x, y, z, m;
cout << "Введите 3 числа через пробел: ";
cin >> x >> y >> z;
float min = x - y;
float max = y;
if (y > max) max = y;
if (z > max) max = z;
if (y - z < min) min = y - z;
if (x - z < min) min = x - z;
m = max / min;
printf("m = %.1f", m);
cout << endl;
system("pause");
return 0;
}
//C
//
#include <stdio.h>
int main()
{
float x, y, z, m;
scanf("%f%f%f", &x,&y,&z);
float min = x - y;
float max = y;
if (y > max) max = y;
if (z > max) max = z;
if (y - z < min) min = y - z;
if (x - z < min) min = x - z;
m = max / min;
printf("m = %.1f", m);
printf("\n");
return 0;
}