Advertisement
Patrickmeme

Gcl 100p

Mar 28th, 2023
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.55 KB | None | 0 0
  1. #include <fstream>
  2. using namespace std;
  3. ifstream cin("gcl.in");
  4. ofstream cout("gcl.out");
  5. int cnt=0,cer;
  6. string s;
  7. string comenzi[10];
  8. int v[26];
  9. int urm_char(int i){
  10.     while(s[i]==' ' && i<s.size())
  11.         i++;
  12.     return i;
  13. }
  14. int urm_spatiu(int i){
  15.     while(s[i]!=' ')
  16.         i++;
  17.     return i;
  18. }
  19. void op(int i){
  20.     int sum,nrc,adun, semn,nr,car;
  21.     if(s[i]=='S' && s!="STOP"){
  22.         cnt++;
  23.         i=urm_spatiu(i);
  24.         i=urm_char(i);
  25.         if(cer==2)
  26.             cout<<s[i]<<" = "<<v[s[i]-'a']<<"\n";
  27.     }else if(s[i]>='a' && s[i]<='z'){
  28.         ///initializari
  29.         adun=s[i]-'a';
  30.         sum=0;
  31.         ///citim =
  32.         i++;
  33.         i=urm_char(i);
  34.         i++;
  35.         i=urm_char(i);
  36.         semn=1;
  37.         ///incepem sa caitam
  38.         while(i<s.size()){
  39.             nr=0;
  40.             car=-1;
  41.             while(i<s.size() && s[i]!='+' && s[i]!='-'){
  42.                 if(s[i]<='9' && s[i]>='0'){
  43.                     nr=nr*10+s[i]-'0';
  44.                 }else if(s[i]<='z' && s[i]>='a'){
  45.                     car=s[i]-'a';
  46.                 }
  47.                 i++;
  48.             }
  49.             if(car>=0 && nr>0){
  50.                 sum+=semn*(v[car]*nr);
  51.             }else if(car==-1){
  52.                 sum+=semn*nr;
  53.             }else{
  54.                 sum+=semn*v[car];
  55.             }
  56.  
  57.             if(s[i]=='+')
  58.                 semn=1;
  59.             else{
  60.                 semn=-1;
  61.             }
  62.  
  63.             i++;
  64.         }
  65.         v[adun]=sum;
  66.     }
  67. }
  68. int main()
  69. {
  70.     int sum,nrc,i,adun, semn,nr,car,j,k;
  71.     cin>>cer;
  72.     getline(cin,s);
  73.  
  74.     while(getline(cin,s)){
  75.         i=urm_char(0);
  76.         if((s[i]>='a' && s[i]<='z')||s[i]=='S' )
  77.             op(i);
  78.         else if(s[i]=='R'){
  79.             if(s[i+6]==' '){
  80.                 i=urm_spatiu(i);
  81.                 i=urm_char(i);
  82.             }else{
  83.                 i+=6;
  84.             }
  85.             nr=0;
  86.             while(i<s.size()){
  87.                 nr=nr*10+s[i]-'0';
  88.                 i++;
  89.             }
  90.             getline(cin,s);
  91.             nrc=0;
  92.             while(true){
  93.                 i=urm_char(0);
  94.                 if(s[i]=='S' && s[i+1]=='T')
  95.                     break;
  96.                 comenzi[nrc]=s;
  97.                 nrc++;
  98.                 getline(cin,s);
  99.             }
  100.             for(k=0;k<nr;k++){
  101.                 for(j=0;j<nrc;j++){
  102.                     s=comenzi[j];
  103.                     i=urm_char(0);
  104.                     op(i);
  105.                 }
  106.             }
  107.  
  108.         }
  109.     }
  110.     if(cer==1)
  111.         cout<<cnt;
  112.     return 0;
  113. }
  114.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement