Algebraic expression calculator (with reverse polish notation) in C ++

So, I have this code that works correctly, but I have to customize it depending on the task.
I tried & # 39; string & # 39; in & # 39; char array & # 39; to change (so that an expression was stored in the array), but encountered problems very quickly. I would like advice on how to fix the problem. And please also give some contributions to areas where I can improve myself.

#include 
#include 
#include 
#include 
#include 

using namespace std;

int end() 
{
cout << "nENDn";
_getch();
return 0;
}

queue to_revpol(const string& in)
{
stack stk;                                                                                     //создаем стак для хранения временных операция
queue gen;                                                                                     //создаем очередь, куда все будем пихать
for (auto i : in)                                                                                    //идем по строке
{
    if (i == '.')                                                                                    //если это просто точка, т.е. пользователь ввел число по типу 0.2,
        gen.push(i);                                                                                 //то тупо пихаем её внутрь
    else if ((i >= '0' && i <= '9') ||                                                               //если это число или переменная, то тоже просто запихиваем
        (i >= 'a' && i <= 'z') ||
        (i >= 'A' && i <= 'Z'))
    {
        if (gen.empty() != true &&
            (gen.back() >= '0' && gen.back() <= '9') &&
            !(i >= '0' && i <= '9'))
        {
            stk.push('*'); gen.push(';');
        }                                                                                           //эта хрень нужна чтобы можно было не ставить знак умножения перед переменной при вводе 5x, например
        gen.push(i);
    }
    else if
        (i == '+' || i == '-' ||                                                                    //если же это операция
            i == '*' || i == '/')                                               
    {
        if (stk.empty() != true && (stk.top() == '*' || stk.top() == '/'))                          //если у нас что-то есть и последняя оперцаия была * или /, то...
        {
            if (i == '*' || i == '/')                                                               //если сейчас умножаем или делим
            {
                gen.push(stk.top());                                                                //то можно выгрузить предыдущую операцию
                stk.top() = i;                                                                      //и заменить её
            }
            else if (i == '+' || i == '-')                                                         //если же это была оперция меньшего приоритета, т.е. + или -
            {
                while (stk.empty() != true && stk.top() != '(')                                    //следует выгрузить все до открывающейся скобки, либо пока стек не опустеет
                {                                                                                  //зачем? А переведите на ОПН такое: a * b + c. Тут роль скобочки играет главное тело.
                    gen.push(stk.top());
                    stk.pop();
                }
                stk.push(i);
            }
        }
        else                                                                                       //если же стек пуст или последняя операция была не * или /, то...
        {
            if (gen.empty() != true && ((gen.back() >= '0' && gen.back() <= '9') || (gen.back() >= 'a' && gen.back() <= 'z') || (gen.back() >= 'A' && gen.back() <= 'Z')))//если последнее, что было в gen - переменная или цифра, 
                gen.push(';');                                                                      //то следует поставить ограничивающий знак
            else if (((stk.empty() != true && stk.top() == '(') || gen.empty() == true) && i == '-')//иначе,
                gen.push('_');                                                                      //если стек не пуст и последнее, что в него запили была открывающая скобка, либо у нас вообще пока ничего нет, а i == -, то я вставляю знак _
                                                                                                    //зачем? Ну, для того чтобы все не ломалось при таком вводе: -5 + 3 или 4 * (-2 + 1)
            if (gen.back() != '_')                                                                  //если последнее в gen не _, которые мы могли только что записать => это какая-то операция
                stk.push(i);
        }
    }
    else if (i == '(')                                                                              //если же у нас не цифра, не переменная и не операция, а откр. скобка, то...
    {
        if (gen.empty() != true && ((gen.back() >= '0' && gen.back() <= '9') || (gen.back() >= 'a' && gen.back() <= 'z') || (gen.back() >= 'A' && gen.back() <= 'Z')))//если последнее что было в gen - переменная или цифра, 
        {
            gen.push(';');                                                                          //ставим ограничивающий знак, а в стек записываем *
            stk.push('*');                                                                          //Опять же, зачем? А затем, чтобы не ставить его самим при записи типа: 23(13 + 1), например
        }
        stk.push(i);                                                                                //запихиваем ( в стэк
    }
    else if (i == ')')                                                                              //если же у нас закрылась скобка, следует выгрущить все операции из stk в gen
    {
        while (stk.empty() != true && stk.top() != '(')                                             //пока стек не пустой (если он опустел значит пользователь ввел неправильное выражение) и до, конечно, открывающийся скобки 
        {
            gen.push(stk.top());
            stk.pop();
        }
        if (stk.empty() != true)
            stk.pop();
        else
            cout << "WRONG INPUT! Missing (" << endl;                                               //кидаем исключение, если пользователь был не очень внимателен
    }
}

while (stk.empty() != true)                                                                         //по окончанию работы со строкой в стеке может что-то остаться, потому
{                                                                                                   //выносим все что осталось.
    gen.push(stk.top());
    stk.pop();
}
return gen;                                                                                         //и возвращаем результат
}

double calc(queue in)
{
stack res;                                                                                  //временное хранилище значений
bool minus = false, op = false;                                                                     //флаги на минус, либо на оперцию
size_t fl = 0;                                                                                      //переменная для правильного ввода значений с плавающей точкой
double temp;                                                                                        //и просто временная переменная

res.push(0.0);                                                                                      //добавляем одно значение
while (in.empty() != true)                                                                          //пока очередь не опустеет
{
    if (in.front() == '_')                                                                          //если встретился знак _, значит был ввод типа: -3 + 2 или 5 * (-4 + 3) и т.д.
    {
        minus = true;                                                                               //поднимаем флаг минуса 
        in.pop();                                                                                   //убираем эл.
    }
    else if (in.front() >= '0' && in.front() <= '9')                                                //если получили цифру
    {
        if (op == true) { res.push(0.0); op = false; }                                              //если была какая-то операция и сейчас нам нужно записать новое значение, то добавляем память и опускаем флаг
        while (in.empty() != true && in.front() >= '0' && in.front() <= '9')                        //пока в очереди что-то есть и пока это цифры
        {
            if ((in.front() == '0' && res.top() == 0.0) == false)                                   //чтобы не умножать 0 на 10 и не прибавлять (48 - 48)
            {
                if (fl == 0)                                                                        //если не встречалось ., т.е. пока у нас обычное, целое число
                {
                    res.top() = res.top() * 10 + in.front() - 48;
                }
                else                                                                                //иначе
                {
                    temp = in.front() - 48;                                                         //переводим символьное число в обычное
                    for (size_t i = 0; i < fl; i++)                                                 //и по счетчику разряда делим на 10
                        temp /= 10;
                    res.top() += temp;                                                              //и просто добавляем к текущему
                    fl++;                                                                           //увеличиваем разряд
                }
            }
            in.pop();                                                                               //убираем эл.
            if (in.empty() != true && in.front() == '.')                                            //если встретилась точка и очередь не пуста, то
            {
                fl = 1;//счетчик разряда ставим в 1
                in.pop();//и удаляем .
            }
        }
        fl = 0;                                                                                     //после считывания числа, обнуляем счетчик разрядов
    }
    else if ((in.front() >= 'a' && in.front() <= 'z') || (in.front() >= 'A' && in.front() <= 'Z'))  //если же нам встретилась переменная
    {
        cout << "Please enter the variable '";                                                     //просим пользователя её ввести
        do
        {                                                                                           //выводим название переменной. А выводим в цикле за тем, чтобы можно было писать переменные не в одну букву
            cout << in.front();
            in.pop();
        } while (in.empty() != true && (in.front() >= 'a' && in.front() <= 'z') || (in.front() >= 'A' && in.front() <= 'Z'));
        cout << "': ";
        if (op == true) { res.push(0.0); op = false; }                                              //если до этого была операция, а теперь нам нужно ввести новое значение, то выделяем память
        cin >> res.top();                                                                           //вводим значение переменной с клавиатуры
    }
    else if (in.front() == ';' ||
        in.front() == '+' || in.front() == '-' ||
        in.front() == '*' || in.front() == '/')                                                     //если же нам наконец попалась операция
    {
        if (minus == true)                                                                          //если флаг минуса поднят
        {
            minus = false;                                                                          //опускаем флаг
            res.top() = -res.top();                                                                 //умножаем текущее значение на -1
        }
        if (in.front() == ';')                                                                      //если это знак разделитель, значит надо добавить памяти
        {
            res.push(0.0);                                                                          //добавляем 
            in.pop();                                                                               //убираем знак
        }
        else if (res.size() > 1)                                                                    //иначе, если у нас уже что-то есть в стеке
        {
            temp = res.top();                                                                       //пихаем в temp последнее значение
            res.pop();                                                                              //убираем его из стека
            switch (in.front())                                                                     //смотрим что это и делаем необходимые операции
            {
            case '+':
                res.top() += temp;
                break;
            case '-':
                res.top() -= temp;
                break;
            case '*':
                res.top() *= temp;
                break;
            case '/':
                res.top() /= temp;
                break;
            }
            op = true;                                                 //ставим флаг операции
            in.pop();                                                  //убираем символ операции из очереди
        }
    }
}
if (res.size() > 1)                                                    //если вдруг в стеке осталось что-то кроме результата, выводим сообщение об ошибке и все, что осталось в стеке
{
    cout << "something went wrong!" << endl;
    while (res.empty() != true)
    {
        cout << res.top() << ' ';
        res.pop();
    }
    return 0.0;
}
return res.top();                                                      //если же все хорошо, возвращаем результат
}

template                                    //чем отличается от  ????
ostream& operator<<(ostream& out, queue cs)                             //сохранение в оператор
{
while (cs.empty() != true)
{
    out << cs.front();
    cs.pop();
}
return out;
}

int main()
{
string in;
queue gen;
cout << "Enter an expression:n";
getline(cin, in);

gen = to_revpol(in);
cout << "Result of the function to_revpol: " << gen << endl;
cout << "Final result: " << calc(gen);
return end();
}

Can someone find or create this word with the value calculator?

Hi,

I'm currently using this "Word Value" and "Word from Value" calculator on this page:
https://www.dcode.fr/word-value
SEMrush

What it does is:
1. Converts words into numbers based on "A = 1, B = 2, C = 3, etc …" and adds the sum of them.
Therefore, the word "CAT" = 3 + 1 + 20 = 24
3. Converts numbers into words in reverse order.
Hence the numbers 24 = CAT

Can anyone find out where else such a tool is offered?

Or can someone duplicate such a web tool?

Applications – Simple Android calculator that gives wrong results

I just started learning Android app development. As a beginner project, I build a simple calculator app, but every time I execute it, all the other functions besides the addition function will give false results.
Here is the Java code I wrote. (MainActivity.java)

package com.example.calc;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    TextView result; 
    EditText number1, number2;  
    Button add;
    Button sub;
    Button mul;
    Button div;

    public float result_num = 0;
    public int num1;
    public int num2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        result = (TextView) findViewById(R.id.result);

        number1 = (EditText) findViewById(R.id.number1);
        number2 = (EditText) findViewById(R.id.number2);
        //numbers
        add = (Button) findViewById(R.id.add);
        sub = (Button) findViewById(R.id.sub);
        mul = (Button) findViewById(R.id.mul);
        div = (Button) findViewById(R.id.div);

        ///////////Calculation part///////////

        add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                num1 = Integer.parseInt(number1.getText().toString());
                num2 = Integer.parseInt(number2.getText().toString());
                result_num = (num1 + num2);
                result.setText(String.valueOf(result_num));

            }
        });
        sub.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                num1 = Integer.parseInt(number1.getText().toString());
                num2 = Integer.parseInt(number1.getText().toString());
                result_num = (num1 - num2);
                result.setText(String.valueOf(result_num));
            }
        });
        mul.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                num1 = Integer.parseInt(number1.getText().toString());
                num2 = Integer.parseInt(number1.getText().toString());
                result_num = (num1 * num2);
                result.setText(String.valueOf(result_num));
            }
        });
        div.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                num1 = Integer.parseInt(number1.getText().toString());
                num2 = Integer.parseInt(number1.getText().toString());
                result_num = (num1 / num2);
                result.setText(String.valueOf(result_num));
            }
        });
    }
}

The XML code for the app. (Activity_main.xml)

I use a linear layout




    

    

    

    

Please help me.
Thanks.

Shopify Price Calculator – Advertising, Offers

If you feel worried about managing your store's pricing and pricing, I recommend this app. Use this app and run a successful business without worrying about measurement issues Shopify price calculator app allow you to sell a variety of different types of products. Support for multiple units of measurement depending on the type of product. Activate the discount rules for products purchased in larger quantities. Support fracture and integer values. Support of multiple price units after adding a unit price; The app will do the rest. Buy this app only in 29.99 USD / month – 5-day free trial.

spacer.png "class =" ipsImage "data-ratio =" 56.25 "height =" 562 "style =" height: auto; "width =" 1000 "data-src =" https://apps.shopifycdn.com/listing_images/6b3b71b3fb2341f8a88ea7483efbecb1/desktop_screenshot/a5b98fac1741b63b457e8715a5da23c9.png "src =" https://topgoldforum.com/applications/core/interface/js/ spacer.png "/></p>
</p></div>
	</div><!-- .entry-content -->

	<footer class= Posted on Categories ArticlesTags , , , ,

App Windows – TriSun Advanced Date / Time Calculator 9.1 Build 083 Multilingual | NulledTeam UnderGround

File size: 0.8 MB

A date and time calculator that can also display the difference between two values ​​or convert years, months, weeks, and days into other parameters.

A fully equipped date and time calculator!
+ Determine the result time by adding / subtracting
+ Get differences between two times
+ Count weekdays, weekdays and weekends
+ Convert between different time elements
+ See times for all time zones in the world
+ Unix / Linux date calculator
+ Show results immediately
Important (I): Fully supports the native Español.
I: You can copy any result directly by clicking on a copy icon.
I: can display the up / down arrows in the sorted column heading (time zones).
Added Update History feature to the Help menu.
Optimized internal efficiency.

DOWNLOAD
Nitroflare

The iOS Swift Calculator does not work

I'm trying to get a calculator app up and running fast (just started learning) but I'm running into problems. I'm not looking for someone to answer, but hopefully provide an overview of how I should put that code together or how I could do it differently.

I can not figure out how to clear the number on the screen after a function has been pressed AND the previously entered number is displayed. At the moment, it just keeps chaining with the number on the screen, even if I want it to be a separate number.

Thanks.

func numberPressed is connected to all numbers and the decimal place

func functionPressed is connected to all 4 operators. Then each operator has its own function.

func calculateNumbers is connected to the equality button

class ViewController: UIViewController {

    var previousNumber: Double = 0
    var currentNumber: Double = 0
    var result: Double = 0
    var currentOperator: String = ""

    @IBOutlet var output: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    @IBAction func numberPressed(_ sender: UIButton) {
        output.text! += sender.titleLabel!.text!

        currentNumber = Double(output.text!)!

        print("Number Pressed: ", currentNumber)
    }

    @IBAction func clearOutput(_ sender: UIButton) {
        currentNumber = 0
        previousNumber = 0
        output.text = "0"

        print("Output cleared, current number: ", currentNumber)
    }

    @IBAction func functionPressed(_ sender: UIButton) {
        previousNumber = currentNumber
        output.text = String(previousNumber)
    }

    @IBAction func divideNumbers(_ sender: UIButton) {
        currentOperator = "/"
    }

    @IBAction func multiplyNumbers(_ sender: UIButton) {
        currentOperator = "*"
    }

    @IBAction func subtractNumbers(_ sender: UIButton) {
        currentOperator = "-"
    }

    @IBAction func addNumbers(_ sender: UIButton) {
        currentOperator = "+"
    }

    @IBAction func calculateNumbers(_ sender: UIButton) {
        if currentOperator == "+" {
            result = previousNumber + currentNumber
        } else if currentOperator == "-" {
            result = previousNumber - currentNumber
        } else if currentOperator == "*" {
            result = previousNumber * currentNumber
        } else if currentOperator == "/" {
            result = previousNumber / currentNumber
        }

        output.text = String(result)

        currentNumber = result

        print(previousNumber, currentOperator, currentNumber, " = ", result)
    }
}

iOS Swift Calculator layout

Calculator in C # – Code Review Stack Exchange

using System;

namespace Console_Calculator
{
    class Program
    {
        static void Main(string() args)
        {
            double Num1;                    //A Number
            double Num2;                    //A Second Number
            string RL;                      //Console.ReadLine

            Console.ForegroundColor = ConsoleColor.Cyan;        //Console Cyan Color        
            Console.WriteLine("tttttCalculator Console By Georgyandr");
            Console.WriteLine("ttttt===============================");
            Console.WriteLine();
            Console.WriteLine();
            Console.ResetColor();

            Console.ForegroundColor = ConsoleColor.Blue;        //Console Blue Color
            Console.Write("Please Enter A Number: ");
            Num1 = double.Parse(Console.ReadLine());
            Console.WriteLine();
            Console.ResetColor();                               

            Console.ForegroundColor = ConsoleColor.Yellow;      //Constole Yellow Color
            Console.Write("Please Enter A Operator: (+ ,- ,* ,/ ): ");
            RL = Console.ReadLine();                           
            Console.WriteLine();                                
            Console.ResetColor();                               

            Console.ForegroundColor = ConsoleColor.Green;       //Console Green Color 
            Console.Write("Please Enter A Second Number: ");
            Num2 = double.Parse(Console.ReadLine());
            Console.WriteLine();
            Console.ResetColor(); 

            Console.ForegroundColor = ConsoleColor.Red;        //Console Red Color 

            if (RL == "+" )
            { Console.WriteLine("The Sum Of {0} And {1} Is: {2}",Num1, Num2, Num1 + Num2); }

            if (RL == "-")
            { Console.WriteLine("The Subtraction Of {0} And {1} Is: {2}", Num1, Num2, Num1 - Num2); }

            if (RL == "*")
            { Console.WriteLine("The Multiplication Of {0} And {1} Is: {2}", Num1, Num2, Num1 * Num2); }

            if (RL == "/")
            { Console.WriteLine("The Division Of {0} And {1} Is: {2}", Num1, Num2, Num1 / Num2); }








        }
    }
}

Best Loan Calculator and EMI Calculator – Instructions Needed – More ways to earn money

Hello,

We create a credit and EMI calculator like this https://emi-calculators.com/on for our website.


Can someone guide me on the UX page?

and also from investor / user perspective please add suggestions, what more can be included in the website?

Many thanks
Ondrej


Processed from Ondrej

The hyperlink did not work