Zwracam sie z prośbą o pomoc w napisaniu tego programu:
- Kod: Zaznacz wszystko
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.
- Kod: Zaznacz wszystko
#include <iostream>
#include <conio.h>
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