Advertisement
Motocelium

PB 13.3

Jan 15th, 2024
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.64 KB | None | 0 0
  1. //13.3
  2. //main.cpp
  3.  
  4. #include <stdio.h>
  5. #include <cstdlib>
  6. #include <string.h>
  7.  
  8. int comp(char *s)
  9. {
  10.     if(strcmp(s, "lconst")==0)
  11.         return 1;
  12.     if(strcmp(s, "add")==0)
  13.         return 2;
  14.     if(strcmp(s, "mul")==0)
  15.         return 3;
  16.     if(strcmp(s, "div")==0)
  17.         return 4;
  18.     if(strcmp(s, "print")==0)
  19.         return 5;
  20.     return 0;
  21. }
  22.  
  23. int main()
  24. {
  25.     int i, n, dim=16;
  26.     int *v;
  27.    
  28.     v=(int*) malloc(dim * sizeof(int));
  29.    
  30.     scanf("%d", &n);
  31.  
  32.     for(int i=1; i<=n; i++)
  33.     {
  34.         char *s;
  35.         int dst, src0, src, val, reg;
  36.         s=(char*) malloc (7 * sizeof(char));
  37.        
  38.         scanf("%s%[ ]", s);
  39.         switch (comp(s))
  40.         {
  41.             case 1:
  42.                 scanf("%d%d", &dst, &val);
  43.                 v[dst]=val;
  44.                 break;
  45.        
  46.             case 2:
  47.                 scanf("%d%d%d", &dst, &src0, &src);
  48.                 v[dst]=v[src]+v[src0];
  49.                 break;
  50.            
  51.             case 3:
  52.                 scanf("%d%d%d", &dst, &src0, &src);
  53.                 v[dst]=v[src0]*v[src];
  54.                 break;
  55.                
  56.             case 4:
  57.                 scanf("%d%d%d", &dst, &src0, &src);
  58.                 if(v[src]==0)
  59.                 {
  60.                     printf("Exception: line %d\n", i);
  61.                     i=n;
  62.                 }
  63.                 else
  64.                     v[dst]=v[src0]/v[src];
  65.                 break;
  66.            
  67.             case 5:
  68.                 scanf("%d", &reg);
  69.                 printf("%d\n", v[reg]);
  70.                 break;
  71.                
  72.             default:
  73.             break;
  74.         }
  75.     }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement