Sprawdzenie poprawnosci postaci inzynieryjnej [c++]

Witam.

Zwracam sie z prośbą o pomoc w napisaniu tego programu:

Napisz program, który na wejsciu bedzie miał ciag znaków a

na wyjsciu odpowie czy podany ciag znaków jest poprawna liczba w postaci

inzynieryjnej czy nie.

#include 

#include 

using namespace std;


const int klasa_znak= 0;

const int klasa_cyfra= 1;

const int klasa_kropka= 2;

const int klasa_e= 3;

const int klasa_inne= 4;


int ASCII[256];


int AUT[5][8]=

{

    { 1, -1, -1, -1, -1, 6, -1, -1}, // klasa_znak

    { 2, 2, 2, 4, 4, 7, 7, 7}, // klasa_cyfra

    {-1, -1, 3, -1, -1, -1, -1, -1}, // klasa_kropka

    {-1, -1, -1, -1, 5, -1, -1, -1}, // klasa_e

    {-1, -1, -1, -1, -1, -1, -1, -1} // klasa_inne

};


bool err(int stan)

{

    return stan<0;

}


int main()

{

    int stan;

    unsigned char ch;


    for (ch=0; ch<255; ch++) ASCII[ch]=klasa_inne;

    for (ch='0'; ch<='9'; ch++) ASCII[ch]=klasa_cyfra;

    ASCII['+']=ASCII['-']=klasa_znak;

    ASCII['e']=ASCII['E']=klasa_e;

    ASCII['.']=klasa_kropka;


    for (stan=0; !err(stan);)

    {

        ch = getch();

        if (ch == 13) break; // ASCII[13] == enter

        stan = AUT[ASCII[ch]][stan];

        cout << ch;

    }


    cout << "\n\n";


    switch (stan)

    {

    case 0:

        cout << "Nie wprowadzono liczby";

        break;

    case -1:

    case 1:

    case 3:

    case 5:

    case 6:

        cout << "Liczba nieprawidlowa";

        break;

    case 2:

    case 4:

    case 7:

        cout << "Liczba prawidlowa";

        break;

    default :

        cout << "Nieznany błąd";

    }

getch();

    return stan;



}

ale tu są błędy ponieważ program powinien sparwdzic czy ta liczba jst poprawna i wypsiac np. cos takiego:

+5.54e-7 +[znak] 5[liczba] .[kropka] 54[liczba] e[e] -[znak] 7[liczba]

Wstawiajcie jakies komentarze do kodu.

Z góry dziekuje za pomoc

Na pierwszy rzut oka program spełnia zadanie, ponieważ w zadaniu nie napisano nic o takim wyświetleniu jakie podałeś poniżej kodu.

Jeżeli chcesz dodać takie wyświetlenie to dodaj tablice:

char *nazwy[]={“znak”,“cyfra”,“kropka”,“E”,"???"};

oraz zamiast:

cout << ch;

napisz:

cout<