Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <cstring>
- using namespace std;
- ifstream cin("egalitati.in");
- ofstream cout("egalitati.out");
- struct ecuatie{char var1[30], op, var2[30]; }v[27];
- int sol[27];
- char s[150];
- int getNum(char s[])
- {
- int sol = 0;
- for(int i = 0;s[i]!=0;i++)
- sol = sol * 10 + (s[i]-'0');
- return sol;
- }
- void solve(int poz)
- {
- int nr1 = 0, nr2 = 0;
- if('a' <= v[poz].var1[0] && v[poz].var1[0] <= 'z')
- {
- solve(v[poz].var1[0] - 'a');
- nr1 = sol[v[poz].var1[0] - 'a'];
- }
- else nr1 = getNum(v[poz].var1);
- if(v[poz].op != 0)
- {
- if('a' <= v[poz].var2[0] && v[poz].var2[0] <= 'z')
- {
- solve(v[poz].var2[0] - 'a');
- nr2 = sol[v[poz].var2[0] - 'a'];
- }
- else nr2 = getNum(v[poz].var2);
- if(v[poz].op == '+')
- {
- sol[poz] = nr1 + nr2;
- return;
- }
- if(v[poz].op == '*')
- {
- sol[poz] = nr1 * nr2;
- return;
- }
- }
- else
- {
- sol[poz] = nr1;
- return;
- }
- }
- int main()
- {
- for(int i = 0;i<26;i++)
- sol[i] = -1;
- int n;
- cin >> n ;
- cin.get();
- for(int i = 1;i <= n;i++)
- {
- cin.getline(s,100);
- int poz = s[0] - 'a', cnt = 1;
- for(int it = 1;s[it]!=0;it++)
- {
- if(s[it] == ' ' || s[it] == '=')
- continue;
- if(cnt == 1)
- {
- while(s[it] != ' ' && s[it] != '+' && s[it] != '*' && s[it]!=0)
- v[poz].var1[strlen(v[poz].var1)] = s[it], it++;
- it--;
- cnt++;
- }
- else if(cnt == 2)
- {
- if((s[it] == '+' || s[it] == '*') && s[it]!=0)
- v[poz].op = s[it], it++;
- it--;
- cnt++;
- }
- else if(cnt == 3)
- {
- while(s[it] != ' ' && s[it]!=0)
- v[poz].var2[strlen(v[poz].var2)] = s[it], it++;
- it--;
- cnt++;
- }
- }
- for(int it = 0;it<100;it++)
- s[it] = 0;
- }
- for(int i = 0;i<26;i++)
- if(sol[i] == -1 && strlen(v[i].var1) != 0)
- solve(i);
- for(int i = 0;i<26;i++)
- if(sol[i] != -1)
- cout <<(char)(i+'a') << " = " << sol[i] << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement