#include
#include
#include "stdafx.h"
int litc( char cur ) {
int lit_cl =8;
if (cur >= '0' && cur <= '6') lit_cl = 1;
if (cur == '.') lit_cl = 2;
switch(cur)
{
case '.': lit_cl=2; break;
case 'B': lit_cl=3; break;
case 'E': lit_cl=4; break;
case 'G': lit_cl=5; break;
case 'I': lit_cl=6; break;
case 'N': lit_cl=7; break;
}
return lit_cl;
}
int main()
{
FILE* out; // входной файл
FILE* in; //выходной файл
char ch;
char *list[5] = { "", "целое семиричное без знака", "вещественное семиричное без знака", "ошибка","слово BEGIN"};
int st,pip;
int tablets[10][8]={
{2,4,5,0,0,0,0,10},
{2,3,0,0,0,0,0,0},
{3,0,0,0,0,0,0,0},
{3,0,0,0,0,0,0,0},
{0,0,0,6,0,0,0,0},
{0,0,0,0,7,0,0,0},
{0,0,0,0,0,8,0,0},
{0,0,0,0,0,0,9,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0}
};
out = fopen( "output.txt", "wt" );
if ( out == NULL ) {printf( "Bad output\n" ); getchar(); return 1;}
in = fopen( "input.txt", "rt");
if ( in == NULL ) {printf( "Bad input\n" ); getchar(); return 1;}
fread(&ch,1,1,in);
st=1;
while (!feof(in))
{
if (st!=1)
{
if ( ch != '\n') {fprintf(out,"%c",ch);}
else { fprintf(out, "/n"); }
fread(&ch, 1, 1, in);}
int cl=litc(ch);
pip=tablets[st-1][cl-1];
if (pip == 0)
{
if (st<=8 && st>=5) st=4;
if(st==9)st=5;
if (st==10)st=4;
fprintf(out, " - %s\n", list[st-1]);
st = 1;
}
else st = pip;
}
if (pip != 0) {
fprintf(out, " - %s\n", list[st-1]);}
fclose(in);
fclose(out);
return 0;
}