corot7b2

calcula_expressao

Sep 2nd, 2020
1,112
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <math.h>
  4. #include <stdlib.h>
  5.  
  6.  
  7. int main(int argc,char * argv[])
  8. {
  9.     if(argc < 3) fprintf(stderr,"modo de usar: ./calc_express 2 + 2 - 2 * 3\n"), exit(0);
  10.     fprintf(stderr,"Total de argumentos -> %d\n",argc);
  11.     int contador = 0;
  12.  
  13.     int resultado = 0;
  14.  
  15.         for(int i = 1;i < argc; i++)
  16.         {
  17.             if(*argv[i] == '/' && contador == 0)
  18.             {
  19.                 if(argv[i+1] != 0) resultado = atoi(argv[i-1]) / atoi(argv[i+1]), contador++,*argv[i] = '!';
  20.             }
  21.             if(*argv[i] == '/' && contador > 0)
  22.             {
  23.                 if(argv[i+1] != 0) resultado  = resultado / atoi(argv[i+1]), *argv[i] = '!';
  24.             }
  25.         }//fim divisao
  26.  
  27.         for(int i =1; i < argc;i++)
  28.         {
  29.             if(*argv[i] == 'x' && contador == 0)
  30.             {
  31.  
  32.                 resultado = atoi(argv[i-1]) * atoi(argv[i+1]), *argv[i] = '!';
  33.                 contador ++;
  34.             }
  35.             if(*argv[i] == 'x' && contador > 0)
  36.             {
  37.                 resultado =  resultado * atoi(argv[i+1]);
  38.                 *argv[i] = '!';
  39.             }
  40.         }//fim mult
  41.         for(int i = 1; i < argc; i++)
  42.         {
  43.             if(*argv[i] == '+' && contador == 0)
  44.             {
  45.                 resultado = atoi(argv[i-1]) + atoi(argv[i+1]);
  46.                 contador++;
  47.                 *argv[i] = '!';
  48.  
  49.             }
  50.             if(*argv[i] == '+' && contador > 0)
  51.             {
  52.  
  53.                 resultado = resultado + atoi(argv[i+1]);
  54.                 *argv[i] = '!';
  55.             }
  56.         }//fim soma
  57.         for(int i = 1; i < argc; i++)
  58.         {
  59.             if(*argv[i] == '-' && contador == 0)
  60.             {
  61.                 resultado = atoi(argv[i-1]) - atoi(argv[i+1]);
  62.                 contador++;
  63.                 *argv[i] = '!';
  64.             }
  65.             if(*argv[i] == '-' && contador > 0)
  66.             {
  67.                 resultado = resultado - atoi(argv[i+1]);
  68.                 *argv[i]= '!';
  69.             }
  70.  
  71.         }//fim subtrai
  72.  
  73.     fprintf(stderr,"resultado -> %d\n", resultado);
  74.  
  75. return 0;
  76. }
  77.  
RAW Paste Data