TA STRONA UŻYWA COOKIE. Dowiedz się więcej o celu ich używania i zmianie ustawień cookie w przeglądarce. Korzystając ze strony wyrażasz zgodę na używanie cookie, zgodnie z aktualnymi ustawieniami przeglądarki.
Od dnia 25.05.2018 r. na terenie Unii Europejskiej wchodzi w życie Rozporządzenie Parlamentu Europejskiego w sprawie ochrony danych osobowych. Prosimy o zapoznanie się z polityką prywatności oraz regulaminem serwisu  [X]

sprawdzenie poprawnosci postaci inzynieryjnej [c++]

Rozmowy na temat tworzenia stron www oraz programowania.

sprawdzenie poprawnosci postaci inzynieryjnej [c++]

Postprzez MarcinGreen » 30 Mar 2010, 14:14

PostUA: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2)


Witam.
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
MarcinGreen
Forumowicz
Forumowicz
 
Posty: 1
Dołączenie: 30 Mar 2010, 13:52

Powróć do Webmastering, programowanie

Kto jest na forum

Zarejestrowani użytkownicy: Bing [Bot], Google [Bot]

cron