fbpx

Problema #1359 – ecuatie2 – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Fie a și b două numere naturale nenule. Cu ajutorul lor se pot forma ecuațiile matematice de tipul:

1) a+x=b

Cerința

Fie a și b două numere naturale nenule. Cu ajutorul lor se pot forma ecuațiile matematice de tipul:

1) a+x=b
2) x+a=b
3) a-x=b
4) x-a=b
5) a*x=b  (unde a divide b)
6) x*a=b  (unde a divide b)
7) a:x=b  (unde b divide a)
8) x:a=b

Scrieți un program care să citească din fișierul ecuatie.in o ecuaţie de tipul precizat în enunț şi care să determine:

a) tipul ecuației citite;
b) soluția ecuației obținută prin rezolvarea acestei ecuații.

Date de intrare

Fişierul ecuatie2.in conţine pe prima linie ecuația, ca în exemplu.

Date de ieșire

Fişierul de ieşire ecuatie2.out va conține pe prima linie un număr natural reprezentând tipul ecuaţiei, iar pe a doua linie, un număr natural reprezentând soluția ecuației.

Restricții și precizări

  • 1 ≤ a ≤ 30 000
  • 1 ≤ b ≤ 30 000
  • Fișierul de intrare conține o singură ecuație; soluția ecuației este un număr natural.

Exemplul 1:

ecuatie2.in

23+x=100

ecuatie2.out

1
77

Exemplul 2:

ecuatie2.in

x*20=1400

ecuatie2.out

6
70

Exemplul 3:

ecuatie2.in

15:x=3

ecuatie2.out

7
5

Explicații

Pentru primul exemplu, ecuația este de tipul 1. Soluția ecuaţiei 23+x=100 este x=77.

Pentru al doilea exemplu, ecuația este de tipul 6. Soluția ecuaţiei x*20=1400 este x=70.

Pentru al treilea exemplu, ecuația este de tipul 7. Soluția ecuaţiei 15:x=3 este x=5.

#include <bits/stdc++.h>
using namespace std;
ifstream cin("ecuatie2.in");
ofstream cout("ecuatie2.out");
int main()
{
    char s;
    cin >> s;
    if(s == 'x')
    {
        int a = 0 , b = 0;
        cin >> s;
        if(s == '+')
        {
            cout << 2 << '\n';
            cin >> s;
            while(s != '=')
            {
                a = a * 10 + (int)s - 48;
                cin >> s;
            }
            cin >> b;
            cout << b - a;
        }
        if(s == '-')
        {
            cout << 4 << '\n';
            cin >> s;
            while(s != '=')
            {
                a = a * 10 + (int)s - 48;
                cin >> s;
            }
            cin >> b;
            cout << a + b;
        }
        if(s == '*')
        {
            cout << 6 << '\n';
            cin >> s;
            while(s != '=')
            {
                a = a * 10 + (int)s - 48;
                cin >> s;
            }
            cin >> b;
            cout << b / a;
        }
        if(s == ':')
        {
            cout << 8 << '\n';
            cin >> s;
            while(s != '=')
            {
                a = a * 10 + (int)s - 48;
                cin >> s;
            }
            cin >> b;
            cout << a * b;
        }

    }
    else
    {
        int a = 0 , b = 0;
        while(s >= '0' && s  <= '9')
        {
            a = a * 10 + (int)s - 48;
            cin >> s;
        }
        if(s == '+')
        {
            cin >> s;
            cout << 1 << '\n';
            cin >> s >> b;
            cout << b - a;
        }
        if(s == '-')
        {
            cin >> s;
            cout << 3 << '\n';
            cin >> s >> b;
            cout << a - b;
        }
        if(s == '*')
        {
            cin >> s;
            cout << 5 << '\n';
            cin >> s >> b;
            cout << b / a;
        }
        if(s == ':')
        {
            cin >> s;
            cout << 7 << '\n';
            cin >> s >> b;
            cout << a / b;
        }

    }

}
Comentarii

S-ar putea sa iti placa