Advertisement
Guest User

Untitled

a guest
Mar 20th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.86 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #include <stdlib.h>
  4. #include <math.h>
  5.  
  6.  
  7.  
  8. sfr at 0x98 SCON;
  9. sfr at 0x89 TMOD;
  10. sfr at 0x88 TCON;
  11. sfr at 0x87 PCON;
  12. sbit at 0x98 RI;
  13. sbit at 0x99 TI;
  14. sfr at 0x8D TH1;
  15. sfr at 0x8B TL1;
  16. sfr at 0x99 SBUF;
  17.  
  18.  
  19. #define BUFFOR_SIZE 3
  20. #define BUFFOR_EXIT_SIZE 4
  21. #define MAX_SIZE_INT 4
  22.  
  23.  
  24. char getchar(void)
  25. {
  26.     while (RI == 0) { };
  27.     RI = 0;
  28.     return (char) SBUF;
  29. }
  30.  
  31. void putchar(char c)
  32. {
  33.     SBUF = c;
  34.     while (TI == 0) { };
  35.     TI = 0;
  36. }
  37.  
  38. int isInt(char c)
  39. {
  40.    
  41.     if (isdigit(c))
  42.     {
  43.         putchar('I');
  44.         return 1;
  45.     }
  46.     else
  47.     {
  48.         putchar('A');
  49.         return 0;
  50.     }
  51. }
  52. float tofloat(char* s) {
  53.     unsigned long long int m = 1;
  54.     float ret = 0;
  55.     int a = (int)(sizeof(s)/sizeof(char));
  56.     putchar('F');
  57.     for(a; a >= 0; a--)
  58.     {
  59.         ret += (s[a] - '0') * m;
  60.         m *= 10;
  61.     }
  62.     return ret;
  63. }
  64. char* ToOCT(float quotient)
  65. {
  66.     int i = 0;
  67.     char tmp[MAX_SIZE_INT];
  68.     putchar('O');
  69.     while (quotient != 0)
  70.     {
  71.         tmp[i] = (char)quotient % 8;
  72.         i = i +1;
  73.         quotient = quotient / 8;
  74.     }
  75.     putchar('P');
  76.     return &tmp[0];
  77. }
  78. void Wyslij(char* tabl)
  79. {
  80.     int i = 0;
  81.     putchar('W');
  82.    
  83.     for(i; i < sizeof(tabl)/sizeof(tabl[0]);i++)
  84.     {
  85.         putchar('Q');
  86.         //Nic tu nie wypisuje
  87.         putchar(tabl[i]);
  88.     }
  89. }
  90. float Operation(float a1,float a2,float a3)
  91. {
  92.     return a1 - a2 * a3;
  93. }
  94.  
  95. void main()
  96. {
  97.  
  98.     char BUFFOR[BUFFOR_SIZE][MAX_SIZE_INT];
  99.  
  100.     int PosA = 0;
  101.     int PosC = 0;
  102.    
  103.    
  104.     SCON=0x50;
  105.     TMOD &= 0x0f;
  106.     TMOD |= 0x20;
  107.     TCON=0x40;
  108.     PCON=0x80;
  109.     TH1 = TL1 = 0xfd;
  110.     TI = 0;
  111.    
  112.     for(;;)
  113.     {
  114.         char c = getchar();
  115.         if(isInt(c) == 1){ BUFFOR[PosA][PosC] = c;++PosC;}
  116.         else ++PosA;
  117.        
  118.         if(PosA == 3)
  119.         {
  120.             putchar('S');
  121.             Wyslij
  122.                 (
  123.                 ToOCT
  124.                     (
  125.                     Operation
  126.                             (
  127.                                 tofloat(BUFFOR[0]),tofloat(BUFFOR[1]),tofloat(BUFFOR[2])
  128.                             )
  129.                     )
  130.                 );
  131.             PosA = 0;
  132.             PosC = 0;
  133.         }
  134.     }
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement