Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <ctype.h>
- #include <stdlib.h>
- #include <math.h>
- sfr at 0x98 SCON;
- sfr at 0x89 TMOD;
- sfr at 0x88 TCON;
- sfr at 0x87 PCON;
- sbit at 0x98 RI;
- sbit at 0x99 TI;
- sfr at 0x8D TH1;
- sfr at 0x8B TL1;
- sfr at 0x99 SBUF;
- #define BUFFOR_SIZE 3
- #define BUFFOR_EXIT_SIZE 4
- #define MAX_SIZE_INT 4
- char getchar(void)
- {
- while (RI == 0) { };
- RI = 0;
- return (char) SBUF;
- }
- void putchar(char c)
- {
- SBUF = c;
- while (TI == 0) { };
- TI = 0;
- }
- int isInt(char c)
- {
- if (isdigit(c))
- {
- putchar('I');
- return 1;
- }
- else
- {
- putchar('A');
- return 0;
- }
- }
- float tofloat(char* s) {
- unsigned long long int m = 1;
- float ret = 0;
- int a = (int)(sizeof(s)/sizeof(char));
- putchar('F');
- for(a; a >= 0; a--)
- {
- ret += (s[a] - '0') * m;
- m *= 10;
- }
- return ret;
- }
- char* ToOCT(float quotient)
- {
- int i = 0;
- char tmp[MAX_SIZE_INT];
- putchar('O');
- while (quotient != 0)
- {
- tmp[i] = (char)quotient % 8;
- i = i +1;
- quotient = quotient / 8;
- }
- putchar('P');
- return &tmp[0];
- }
- void Wyslij(char* tabl)
- {
- int i = 0;
- putchar('W');
- for(i; i < sizeof(tabl)/sizeof(tabl[0]);i++)
- {
- putchar('Q');
- //Nic tu nie wypisuje
- putchar(tabl[i]);
- }
- }
- float Operation(float a1,float a2,float a3)
- {
- return a1 - a2 * a3;
- }
- void main()
- {
- char BUFFOR[BUFFOR_SIZE][MAX_SIZE_INT];
- int PosA = 0;
- int PosC = 0;
- SCON=0x50;
- TMOD &= 0x0f;
- TMOD |= 0x20;
- TCON=0x40;
- PCON=0x80;
- TH1 = TL1 = 0xfd;
- TI = 0;
- for(;;)
- {
- char c = getchar();
- if(isInt(c) == 1){ BUFFOR[PosA][PosC] = c;++PosC;}
- else ++PosA;
- if(PosA == 3)
- {
- putchar('S');
- Wyslij
- (
- ToOCT
- (
- Operation
- (
- tofloat(BUFFOR[0]),tofloat(BUFFOR[1]),tofloat(BUFFOR[2])
- )
- )
- );
- PosA = 0;
- PosC = 0;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement