Advertisement
Guest User

Untitled

a guest
Jan 4th, 2017
18
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.35 KB | None | 0 0
  1. #include <iostream>
  2. #include "TRobot.h"
  3. #include "TModulPlatformaRuchowa.h"
  4. #include "TModulManipulatora.h"
  5. #include <cstring>
  6. using namespace std;
  7.  
  8. void wyswietlpomoc(); //wyswietla pomoc
  9. void SprawdzParametry(int argc, char *argv[], int *czyjestblad); //sprawdza jakie parametry zostaly podane
  10. int SprawdzCzySaBledy(short int, short int, short int,
  11.                        short int, string, char*); //sprawdza czy wystapily bledy w podawaniu parametrow
  12.  
  13.  
  14.  
  15. int main(int argc, char *argv[])
  16. {
  17.     int isError = 0;
  18.     SprawdzParametry(argc, argv, &isError);
  19.  
  20.     if(isError==0)
  21.     {
  22.        
  23.     }
  24.    
  25.    
  26.    
  27.     return 0;
  28. }
  29.  
  30. void wyswietlpomoc()
  31. {
  32.     cout    << "POMOC:\n\nAby uruchomic program nalezy przejsc w konsoli do folderu w ktorym sie znajduje.\n"
  33.             << "Aby stworzyc robota wymagane jest podanie odpowiednich czesci\n"
  34.             << "z ktorych robot ma zostac zbudowany oraz nazwe robota. Kolejnosc ich podawania jest niewazna,\n"
  35.             << "natomiast sa pewne ograniczenia. Robot moze skladac sie z maksymalnie jednej czesci modulu ruchowego,"
  36.             << " maksymalnie jednej czesci modulu manipulatora i nie wiecejniz trzech czesci modulu zmyslow.\n"
  37.             << "Natomiast musi skladac sie z minimum dwoch modulow.\n\n"
  38.             << "Dostepne czesci dla modulu ruchowego:\n"
  39.             << "nkolowy - naped kolowy\n" << "ngasiennicowy - naped gasiennicowy\n"
  40.             << "nkroczacy - naped kroczacy\n\n"
  41.             << "Dostepne czesci dla modulu manipulatora:\n"
  42.             << "rdwuczlonowe - ramie dwuczlonowe\n" << "rtrojczlonowe - ramie trojczlonowe\n"
  43.             << "rpodwojne - ramie podwojne\n\n"
  44.             << "Dostepne czesci dla modulu zmyslow:\n"
  45.             << "kamera - kamera\n" << "ktermowizyjna - kamera termowizyjna\n"
  46.             << "mikrofon - mikrofon\n" << "czodleglosci - czujnik odleglosci\n" << "gps - gps\n\n"
  47.             << "Przelaczniki dla modulow:\n" << "-ruch (dla modulu ruchowego)\n" << "-manipulacja (dla modulu manipulatora)\n"
  48.             << "-zmysly (dla modulu zmyslow)\n\n"
  49.             << "Przyklad uruchomienia programu:\nfabrykarobotow.exe -nazwa Robocik -ruch nkroczacy -manipulacja rpodwojne -zmysly mikrofon kamera\n";
  50. }
  51.  
  52. void SprawdzParametry(int argc, char *argv[], int *czyjestblad)
  53. {
  54.     short int licznik_ruch = 0;
  55.     short int licznik_manip = 0;
  56.     short int licznik_zmysl = 0;
  57.     short int licznik_modulow = 0;
  58.     string imierobota;
  59.     char *czywyswietlonopomoc = new char[3]; //pomocnicza tablica znakow do przechowania przelacznika -h
  60.  
  61.  
  62.         for(int i=1;i<argc;i++) //przechodzi w petli po wszystkich podanych argumentach
  63.         {   //sprawdzenie czy podano poprawne przelaczniki
  64.            if (strcmp(argv[i], "-ruch") == 0)
  65.             {
  66.                 for(int j=i+1;j<argc;j++) // sprawdzenie czy argumenty po przelacznikach sa poprawne
  67.                 {
  68.                     if (strcmp(argv[j], "nkolowy") == 0)
  69.                     {
  70.  
  71.                         licznik_ruch++;
  72.                         if (licznik_ruch==1) licznik_modulow++;
  73.                         cout << "Czesc: " << argv[j] << endl;
  74.                     }
  75.                     else if (strcmp(argv[j], "ngasiennicowy") == 0)
  76.                     {
  77.  
  78.                         licznik_ruch++;
  79.                         if (licznik_ruch==1) licznik_modulow++;
  80.                         cout << "Czesc: " << argv[j] << endl;
  81.                     }
  82.                     else if (strcmp(argv[j], "nkroczacy") == 0)
  83.                     {
  84.  
  85.                         licznik_ruch++;
  86.                         if (licznik_ruch==1) licznik_modulow++;
  87.                         cout << "Czesc: " << argv[j] << endl;
  88.                     }
  89.                 }
  90.             }
  91.             else if (strcmp(argv[i], "-manipulacja") == 0) //sprawdzenie czy podano poprawne przelaczniki
  92.             {
  93.                 for(int j=i+1;j<argc;j++) // sprawdzenie czy argumenty po przelacznikach sa poprawne
  94.                 {
  95.                     if (strcmp(argv[j], "rdwuczlonowe") == 0)
  96.                     {
  97.  
  98.                         licznik_manip++;
  99.                         if (licznik_manip==1) licznik_modulow++;
  100.                         cout << "Czesc: " << argv[j] << endl;
  101.                     }
  102.                     else if (strcmp(argv[j], "rtrojczlonowe") == 0)
  103.                     {
  104.  
  105.                         licznik_manip++;
  106.                         if (licznik_manip==1) licznik_modulow++;
  107.                         cout << "Czesc: " << argv[j] << endl;
  108.                     }
  109.                     else if (strcmp(argv[j], "rpodwojne") == 0)
  110.                     {
  111.  
  112.                         licznik_manip++;
  113.                         if (licznik_manip==1) licznik_modulow++;
  114.                         cout << "Czesc: " << argv[j] << endl;
  115.                     }
  116.                 }
  117.             }
  118.             else if (strcmp(argv[i], "-zmysly") == 0) //sprawdzenie czy podano poprawne przelaczniki
  119.             {
  120.                 for(int j=i+1;j<argc;j++) // sprawdzenie czy argumenty po przelacznikach sa poprawne
  121.                 {
  122.                     if (strcmp(argv[j], "kamera") == 0)
  123.                     {
  124.  
  125.                         licznik_zmysl++;
  126.                         if (licznik_zmysl==1) licznik_modulow++;
  127.                         cout << "Czesc: " << argv[j] << endl;
  128.                     }
  129.                     else if (strcmp(argv[j], "ktermowizyjna") == 0)
  130.                     {
  131.  
  132.                         licznik_zmysl++;
  133.                         if (licznik_zmysl==1) licznik_modulow++;
  134.                         cout << "Czesc: " << argv[j] << endl;
  135.                     }
  136.                     else if (strcmp(argv[j], "mikrofon") == 0)
  137.                     {
  138.  
  139.                         licznik_zmysl++;
  140.                         if (licznik_zmysl==1) licznik_modulow++;
  141.                         cout << "Czesc: " << argv[j] << endl;
  142.                     }
  143.                     else if (strcmp(argv[j], "czodleglosci") == 0)
  144.                     {
  145.  
  146.                         licznik_zmysl++;
  147.                         if (licznik_zmysl==1) licznik_modulow++;
  148.                         cout << "Czesc: " << argv[j] << endl;
  149.                     }
  150.                     else if (strcmp(argv[j], "gps") == 0)
  151.                     {
  152.  
  153.                         licznik_zmysl++;
  154.                         if (licznik_zmysl==1) licznik_modulow++;
  155.                         cout << "Czesc: " << argv[j] << endl;
  156.                     }
  157.                 }
  158.             }
  159.             else if (strcmp(argv[i], "-nazwa") == 0) //sprawdzenie czy podano poprawne przelaczniki
  160.             {
  161.                     //zabezpieczenie bez traktowaniem przez program przelacznika jako czesci nazwy robota
  162.                 if (((strcmp(argv[i+1], "-ruch") != 0) && (strcmp(argv[i+1], "-manipulacja") != 0) && (strcmp(argv[i+1], "-zmysly") != 0)))
  163.                 {
  164.                     imierobota=argv[i+1]; //przechowanie imienia robota
  165.                     cout << "Imie: " << argv[i+1] << endl;
  166.                 }
  167.  
  168.             }
  169.             else if (strcmp(argv[i], "-h") == 0) //sprawdzenie czy podano poprawne przelaczniki
  170.             {
  171.                 wyswietlpomoc();
  172.                 strcpy(czywyswietlonopomoc, argv[i]);
  173.             }
  174.         }
  175.  
  176.         *czyjestblad=SprawdzCzySaBledy(licznik_ruch,licznik_manip,licznik_zmysl,licznik_modulow,imierobota,czywyswietlonopomoc);
  177.  
  178.         delete [] czywyswietlonopomoc; //zwalnianie pamieci
  179. }
  180.  
  181. int SprawdzCzySaBledy(short int licznik_ruch, short int licznik_manip, short int licznik_zmysl,
  182.                        short int licznik_modulow, string imierobota, char *czywyswietlonopomoc)
  183. {
  184.     if (licznik_modulow == 1 || licznik_modulow == 0)
  185.         {
  186.             if (strcmp(czywyswietlonopomoc, "-h") != 0)
  187.                 {
  188.                     cout << "\t\t\tBLEDNE PARAMETRY\n";
  189.                     cout << "ROBOT MUSI SKLADAC SIE Z MINIMUM 2 MODULOW.\n";
  190.                     wyswietlpomoc();
  191.                 }
  192.                 return -1;
  193.         }
  194.         //maksymalnie 1 element modulu ruchowego
  195.         else if (licznik_ruch > 1)
  196.         {
  197.             cout << "\t\t\tBLEDNE PARAMETRY\n";
  198.             cout << "ROBOT MOZE SKLADAC SIE TYLKO Z JEDNEGO ELEMENTU MODULU RUCHOWEGO\n"
  199.                  << "I JEDNEGO ELEMENTU MODULU MANIPULATORA\n";
  200.             wyswietlpomoc();
  201.             return -1;
  202.         }
  203.         //maksymalnie 1 element modulu manipulatora
  204.         else if (licznik_manip > 1)
  205.         {
  206.             cout << "\t\t\tBLEDNE PARAMETRY\n";
  207.             cout << "ROBOT MOZE SKLADAC SIE TYLKO Z JEDNEGO ELEMENTU MODULU MANIPULATORA\n"
  208.                  << "I JEDNEGO ELEMENTU MODULU RUCHOWEGO\n";
  209.             wyswietlpomoc();
  210.             return -1;
  211.         }
  212.         //maksymalnie 3 elementy modulu ruchowego
  213.         else if (licznik_zmysl > 3)
  214.         {
  215.             cout << "\t\t\tBLEDNE PARAMETRY\n";
  216.             cout << "ROBOT NIE MOZE SKLADAC SIE Z WIECEJ NIZ TRZECH ELEMENTOW MODULU ZMYSLOW.\n\n";
  217.             wyswietlpomoc();
  218.             return -1;
  219.         }
  220.         else if (imierobota == "")
  221.         {
  222.             if (strcmp(czywyswietlonopomoc, "-h") != 0)
  223.             {
  224.                 cout << "\t\t\tBLEDNE PARAMETRY\n";
  225.                 cout << "ROBOT MUSI MIEC JAKAS NAZWE.\n\n";
  226.                 wyswietlpomoc();
  227.                 return -1;
  228.             }
  229.         }
  230.  
  231. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement