Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include "TRobot.h"
- #include "TModulPlatformaRuchowa.h"
- #include "TModulManipulatora.h"
- #include <cstring>
- using namespace std;
- void wyswietlpomoc(); //wyswietla pomoc
- void SprawdzParametry(int argc, char *argv[], int *czyjestblad); //sprawdza jakie parametry zostaly podane
- int SprawdzCzySaBledy(short int, short int, short int,
- short int, string, char*); //sprawdza czy wystapily bledy w podawaniu parametrow
- int main(int argc, char *argv[])
- {
- int isError = 0;
- SprawdzParametry(argc, argv, &isError);
- if(isError==0)
- {
- }
- return 0;
- }
- void wyswietlpomoc()
- {
- cout << "POMOC:\n\nAby uruchomic program nalezy przejsc w konsoli do folderu w ktorym sie znajduje.\n"
- << "Aby stworzyc robota wymagane jest podanie odpowiednich czesci\n"
- << "z ktorych robot ma zostac zbudowany oraz nazwe robota. Kolejnosc ich podawania jest niewazna,\n"
- << "natomiast sa pewne ograniczenia. Robot moze skladac sie z maksymalnie jednej czesci modulu ruchowego,"
- << " maksymalnie jednej czesci modulu manipulatora i nie wiecejniz trzech czesci modulu zmyslow.\n"
- << "Natomiast musi skladac sie z minimum dwoch modulow.\n\n"
- << "Dostepne czesci dla modulu ruchowego:\n"
- << "nkolowy - naped kolowy\n" << "ngasiennicowy - naped gasiennicowy\n"
- << "nkroczacy - naped kroczacy\n\n"
- << "Dostepne czesci dla modulu manipulatora:\n"
- << "rdwuczlonowe - ramie dwuczlonowe\n" << "rtrojczlonowe - ramie trojczlonowe\n"
- << "rpodwojne - ramie podwojne\n\n"
- << "Dostepne czesci dla modulu zmyslow:\n"
- << "kamera - kamera\n" << "ktermowizyjna - kamera termowizyjna\n"
- << "mikrofon - mikrofon\n" << "czodleglosci - czujnik odleglosci\n" << "gps - gps\n\n"
- << "Przelaczniki dla modulow:\n" << "-ruch (dla modulu ruchowego)\n" << "-manipulacja (dla modulu manipulatora)\n"
- << "-zmysly (dla modulu zmyslow)\n\n"
- << "Przyklad uruchomienia programu:\nfabrykarobotow.exe -nazwa Robocik -ruch nkroczacy -manipulacja rpodwojne -zmysly mikrofon kamera\n";
- }
- void SprawdzParametry(int argc, char *argv[], int *czyjestblad)
- {
- short int licznik_ruch = 0;
- short int licznik_manip = 0;
- short int licznik_zmysl = 0;
- short int licznik_modulow = 0;
- string imierobota;
- char *czywyswietlonopomoc = new char[3]; //pomocnicza tablica znakow do przechowania przelacznika -h
- for(int i=1;i<argc;i++) //przechodzi w petli po wszystkich podanych argumentach
- { //sprawdzenie czy podano poprawne przelaczniki
- if (strcmp(argv[i], "-ruch") == 0)
- {
- for(int j=i+1;j<argc;j++) // sprawdzenie czy argumenty po przelacznikach sa poprawne
- {
- if (strcmp(argv[j], "nkolowy") == 0)
- {
- licznik_ruch++;
- if (licznik_ruch==1) licznik_modulow++;
- cout << "Czesc: " << argv[j] << endl;
- }
- else if (strcmp(argv[j], "ngasiennicowy") == 0)
- {
- licznik_ruch++;
- if (licznik_ruch==1) licznik_modulow++;
- cout << "Czesc: " << argv[j] << endl;
- }
- else if (strcmp(argv[j], "nkroczacy") == 0)
- {
- licznik_ruch++;
- if (licznik_ruch==1) licznik_modulow++;
- cout << "Czesc: " << argv[j] << endl;
- }
- }
- }
- else if (strcmp(argv[i], "-manipulacja") == 0) //sprawdzenie czy podano poprawne przelaczniki
- {
- for(int j=i+1;j<argc;j++) // sprawdzenie czy argumenty po przelacznikach sa poprawne
- {
- if (strcmp(argv[j], "rdwuczlonowe") == 0)
- {
- licznik_manip++;
- if (licznik_manip==1) licznik_modulow++;
- cout << "Czesc: " << argv[j] << endl;
- }
- else if (strcmp(argv[j], "rtrojczlonowe") == 0)
- {
- licznik_manip++;
- if (licznik_manip==1) licznik_modulow++;
- cout << "Czesc: " << argv[j] << endl;
- }
- else if (strcmp(argv[j], "rpodwojne") == 0)
- {
- licznik_manip++;
- if (licznik_manip==1) licznik_modulow++;
- cout << "Czesc: " << argv[j] << endl;
- }
- }
- }
- else if (strcmp(argv[i], "-zmysly") == 0) //sprawdzenie czy podano poprawne przelaczniki
- {
- for(int j=i+1;j<argc;j++) // sprawdzenie czy argumenty po przelacznikach sa poprawne
- {
- if (strcmp(argv[j], "kamera") == 0)
- {
- licznik_zmysl++;
- if (licznik_zmysl==1) licznik_modulow++;
- cout << "Czesc: " << argv[j] << endl;
- }
- else if (strcmp(argv[j], "ktermowizyjna") == 0)
- {
- licznik_zmysl++;
- if (licznik_zmysl==1) licznik_modulow++;
- cout << "Czesc: " << argv[j] << endl;
- }
- else if (strcmp(argv[j], "mikrofon") == 0)
- {
- licznik_zmysl++;
- if (licznik_zmysl==1) licznik_modulow++;
- cout << "Czesc: " << argv[j] << endl;
- }
- else if (strcmp(argv[j], "czodleglosci") == 0)
- {
- licznik_zmysl++;
- if (licznik_zmysl==1) licznik_modulow++;
- cout << "Czesc: " << argv[j] << endl;
- }
- else if (strcmp(argv[j], "gps") == 0)
- {
- licznik_zmysl++;
- if (licznik_zmysl==1) licznik_modulow++;
- cout << "Czesc: " << argv[j] << endl;
- }
- }
- }
- else if (strcmp(argv[i], "-nazwa") == 0) //sprawdzenie czy podano poprawne przelaczniki
- {
- //zabezpieczenie bez traktowaniem przez program przelacznika jako czesci nazwy robota
- if (((strcmp(argv[i+1], "-ruch") != 0) && (strcmp(argv[i+1], "-manipulacja") != 0) && (strcmp(argv[i+1], "-zmysly") != 0)))
- {
- imierobota=argv[i+1]; //przechowanie imienia robota
- cout << "Imie: " << argv[i+1] << endl;
- }
- }
- else if (strcmp(argv[i], "-h") == 0) //sprawdzenie czy podano poprawne przelaczniki
- {
- wyswietlpomoc();
- strcpy(czywyswietlonopomoc, argv[i]);
- }
- }
- *czyjestblad=SprawdzCzySaBledy(licznik_ruch,licznik_manip,licznik_zmysl,licznik_modulow,imierobota,czywyswietlonopomoc);
- delete [] czywyswietlonopomoc; //zwalnianie pamieci
- }
- int SprawdzCzySaBledy(short int licznik_ruch, short int licznik_manip, short int licznik_zmysl,
- short int licznik_modulow, string imierobota, char *czywyswietlonopomoc)
- {
- if (licznik_modulow == 1 || licznik_modulow == 0)
- {
- if (strcmp(czywyswietlonopomoc, "-h") != 0)
- {
- cout << "\t\t\tBLEDNE PARAMETRY\n";
- cout << "ROBOT MUSI SKLADAC SIE Z MINIMUM 2 MODULOW.\n";
- wyswietlpomoc();
- }
- return -1;
- }
- //maksymalnie 1 element modulu ruchowego
- else if (licznik_ruch > 1)
- {
- cout << "\t\t\tBLEDNE PARAMETRY\n";
- cout << "ROBOT MOZE SKLADAC SIE TYLKO Z JEDNEGO ELEMENTU MODULU RUCHOWEGO\n"
- << "I JEDNEGO ELEMENTU MODULU MANIPULATORA\n";
- wyswietlpomoc();
- return -1;
- }
- //maksymalnie 1 element modulu manipulatora
- else if (licznik_manip > 1)
- {
- cout << "\t\t\tBLEDNE PARAMETRY\n";
- cout << "ROBOT MOZE SKLADAC SIE TYLKO Z JEDNEGO ELEMENTU MODULU MANIPULATORA\n"
- << "I JEDNEGO ELEMENTU MODULU RUCHOWEGO\n";
- wyswietlpomoc();
- return -1;
- }
- //maksymalnie 3 elementy modulu ruchowego
- else if (licznik_zmysl > 3)
- {
- cout << "\t\t\tBLEDNE PARAMETRY\n";
- cout << "ROBOT NIE MOZE SKLADAC SIE Z WIECEJ NIZ TRZECH ELEMENTOW MODULU ZMYSLOW.\n\n";
- wyswietlpomoc();
- return -1;
- }
- else if (imierobota == "")
- {
- if (strcmp(czywyswietlonopomoc, "-h") != 0)
- {
- cout << "\t\t\tBLEDNE PARAMETRY\n";
- cout << "ROBOT MUSI MIEC JAKAS NAZWE.\n\n";
- wyswietlpomoc();
- return -1;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement