Advertisement
Guest User

Trabalho LP1

a guest
Nov 28th, 2014
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 22.62 KB | None | 0 0
  1. /*
  2. SamuelPordeus
  3. 26 de novembro de 2014
  4. Primeiro trabalho de LP1
  5. */
  6. #include <iostream>
  7. #include <stdlib.h>
  8. #include <string.h>
  9. #include <math.h>
  10.  
  11. // 1ª PARTE - IMPLEMENTAÇÃO DAS CLASSES
  12.  
  13. using namespace std;
  14.  
  15. class canvas
  16. {
  17.     private:
  18.         int pixelcanvas[1]; //Coordenadas x e y do canvas
  19.         int TipoPoligono[150]; //0 = Retangulo 1 = Circulo 2 = Triangulo 3 = Hexagono
  20.  
  21.     public:
  22.         canvas (int x, int y)
  23.         {
  24.                 pixelcanvas[0] = x;
  25.                 pixelcanvas[1] = y;
  26.         }
  27.  
  28.         int largura()
  29.         {
  30.            return pixelcanvas[0];
  31.         }
  32.  
  33.         int altura()
  34.        {
  35.             return pixelcanvas[1];
  36.         }
  37.  
  38.         int getTipoPoligono (int i)
  39.         {
  40.             return TipoPoligono[i];
  41.         }
  42.         void setTipoPoligono (int i, int z)
  43.         {
  44.             TipoPoligono[i] = z;
  45.         }
  46.  
  47.         int ReturnPoligono (int xy)
  48.         {
  49.             return TipoPoligono[xy];
  50.         }
  51.  
  52.         int VerPoligono (int count1) //Cada vez que um poligono novo for criado, seu tipo sera checado e ele sera acrescentado
  53.         {
  54.             int retangulo = 0, circulo = 0, triangulo = 0, hexagono = 0;
  55.             for (int i = 0 ; i <count1 ; ++i)
  56.             {
  57.                 switch (TipoPoligono[i])
  58.                 {
  59.                 case 0:
  60.                     retangulo++;
  61.                     break;
  62.                 case 1:
  63.                     circulo++;
  64.                     break;
  65.                 case 2:
  66.                     triangulo++;
  67.                     break;
  68.                 case 3:
  69.                     hexagono++;
  70.                     break;
  71.                 }
  72.             }
  73.         }
  74. };
  75.  
  76. class poligono
  77. {
  78.     private:
  79.         int CentroXY[1];
  80.         int Zindex; //Um poligono em cima do outro
  81.         string cor;
  82.  
  83.     public:
  84.         void setCentro (int x, int y)
  85.         {
  86.             CentroXY[0]=x;
  87.             CentroXY[1]=y;
  88.         }
  89.  
  90.         int CentroX ()
  91.         {
  92.             return CentroXY[0];
  93.         }
  94.         int CentroY ()
  95.         {
  96.             return CentroXY[1];
  97.         }
  98.  
  99.         void setCor (string color)
  100.         {
  101.             cor = color;
  102.         }
  103.  
  104.         void setZ (int z)
  105.         {
  106.             Zindex=z;
  107.         }
  108.  
  109.         void ReturnCentro (int *x, int *y)
  110.         {
  111.             *x = CentroXY[0];
  112.             *y = CentroXY[1];
  113.         }
  114.  
  115.         string ReturnCor ()
  116.         {
  117.             return cor;
  118.         }
  119. };
  120.  
  121. class retangulo:poligono
  122. {
  123.     private:
  124.         int Base, Altura; //Variaveis necessarias para construirmos o retangulo
  125.  
  126.     public:
  127.         retangulo ()
  128.         {}
  129.  
  130.         int getAltura ()
  131.         {
  132.             return Altura;
  133.         }
  134.  
  135.         int getBase ()
  136.         {
  137.             return Base;
  138.         }
  139.         void setBase  (int x)
  140.         {
  141.             Base = x;
  142.         }
  143.         void setAltura (int y)
  144.         {
  145.             Altura = y;
  146.         }
  147.         int ReturnArea ()
  148.         {
  149.             return Base * Altura;
  150.         }
  151.  
  152.         int ReturnPerimeter ()
  153.         {
  154.             return (2*Base) + (2*Altura);
  155.         }
  156. };
  157.  
  158. class circulo:poligono
  159. {
  160.     private:
  161.         int Raio;
  162.  
  163.     public:
  164.         int getRaio ()
  165.         {
  166.             return Raio;
  167.         }
  168.  
  169.         int setRaio (int r)
  170.         {
  171.             Raio = r;
  172.         }
  173.         int ReturnArea ()
  174.         {
  175.             return 3.14*Raio;
  176.         }
  177.         int ReturnPerimeter ()
  178.         {
  179.             return (2*Raio)*3,14;
  180.         }
  181. };
  182.  
  183. class triangulo:poligono
  184. {
  185.     private:
  186.         int Lado; //Variaveis necessarias para construirmos o triangulo
  187.  
  188.     public:
  189.         triangulo ()
  190.         {}
  191.  
  192.         int getLado ()
  193.         {
  194.             return Lado;
  195.         }
  196.         void setLado (int x)
  197.         {
  198.             Lado = x;
  199.         }
  200.         int ReturnArea ()
  201.         {
  202.             return Lado * 6,92;
  203.         }
  204.  
  205.         int ReturnPerimeter ()
  206.         {
  207.             return Lado * 3;
  208.         }
  209. };
  210.  
  211. class hexagono:poligono
  212. {
  213.     private:
  214.         int Lado; //Variaveis necessarias para construirmos o hexagono
  215.  
  216.     public:
  217.         hexagono ()
  218.         {}
  219.  
  220.         int getLado ()
  221.         {
  222.             return Lado;
  223.         }
  224.         void setLado (int x)
  225.         {
  226.             Lado = x;
  227.         }
  228.         int ReturnArea ()
  229.         {
  230.             return 6* Lado * Lado *(sqrt(3))/4;
  231.         }
  232.  
  233.         int ReturnPerimeter ()
  234.         {
  235.             return Lado * 3;
  236.         }
  237. };
  238.  
  239. // 2ª PARTE - IMPLEMENTAÇÃO DO PROGRAMA
  240.  
  241. void CanvasInfo (canvas cnv, int x)
  242. {
  243.     int Altura, Largura;
  244.     Altura = cnv.altura();
  245.     Largura = cnv.largura();
  246.     cout << "Altura do canvas: "<<Altura << "\t Largura do canvas: " << Largura <<endl<<endl;
  247. }
  248.  
  249. void InsertRetangulo (retangulo *p, canvas a)
  250. {
  251.         int x, y, opt, CentroX, CentroY, overaltura, overbase, count1;
  252.     string Cor;
  253.     cout << "INSIRA O RETANGULO: "<<endl;
  254.     for (count1 = 0 ; count1 < 10000 ; count1++) //CHECAGEM DE TAMANHO NA LARGURA
  255.     {
  256.         cout << "Insira o tamanho da base do retangulo: ";
  257.         cin >> x; cout <<endl;
  258.         if (x>=a.largura())
  259.         {
  260.             cout << "Grande demais, defina um tamanho menor para a base";
  261.         }
  262.         else
  263.         {
  264.             break;
  265.         }
  266.     }
  267.  
  268.     for (count1 = 0 ; count1 < 10000 ; count1++) //CHECAGEM DE TAMANHO NA ALTURA
  269.     {
  270.         cout << "Insira o tamanho da altura do retangulo: ";
  271.         cin >> y; cout <<endl;
  272.         if (y>=a.altura())
  273.         {
  274.             cout << "Grande demais, defina um tamanho menor para a altura";
  275.         }
  276.         else
  277.         {
  278.             break;
  279.         }
  280.     }
  281.  
  282.     p->setBase (x);
  283.     p->setAltura (y);
  284.  
  285.     cout <<"Quais as coordenadas do centro do retangulo? \n";
  286.     cout<<"A coordenada x: ";
  287.     cin>>CentroX; cout<<endl;
  288.     cout<<"A coordenada y: ";
  289.     cin >>CentroY; cout<<endl;
  290.  
  291.     overaltura = a.altura()-p->getAltura()/2;
  292.     overbase = a.largura()-p->getBase()/2;
  293.  
  294.     for (count1 = 0 ; count1 < 10000 ; count1++) //CHECAGEM SE O RETANGULO ESTA NO CANVAS
  295.     {
  296.  
  297.         if ((p->getAltura()/2)>=CentroX || p->getBase()/2>=CentroY || overaltura<=CentroX || overbase<=CentroY)
  298.         {
  299.         cout<<"O retangulo nao esta ajustado ao canvas. Escolha novamente as coordenadas ";
  300.         cout<<"Digite a coordenada x: ";
  301.         cin>>CentroX;
  302.         cout<<endl;
  303.         cout<<"Digite a coordenada y: ";
  304.         cin>>CentroY;
  305.         cout<<endl;
  306.         }
  307.         else
  308.         {
  309.             break;
  310.         }
  311.     }
  312.  
  313.     cout << "O poligono criado esta sobreposto? 1 = Sim 2 = Nao ";
  314.     cin >> opt; cout<<endl;
  315.  
  316.     do {
  317.     if (opt==1)
  318.         {
  319.             int z;
  320.             cout << "Esta sobreposto a quantos poligonos? ";
  321.             cin >> z; cout<<endl;
  322.             p->setZ(z);
  323.             break;
  324.         }
  325.     else if (opt==2)
  326.         {
  327.         p->setZ(0);
  328.         break;
  329.         }
  330.     else
  331.     {
  332.         cout <<"Opcao invalida, escolha uma opcao valida"<<endl; cin>>opt;
  333.         continue;
  334.     }
  335.     }
  336.     while(opt!=1&&opt!=2);
  337.     cout << "Qual a cor do poligono?";
  338.     string cor;
  339.     cin >> cor; cout<<endl;
  340.     p->setCor(cor);
  341.     cout << "O retangulo foi adicionado com sucesso!"<<endl;
  342.  
  343. }
  344.  
  345. void InsertCirculo (circulo *p, canvas a)
  346. {
  347.     int r, opt, CentroX, CentroY, overraio1, overraio2, count1;
  348.     string cor;
  349.     cout << "INSIRA O CIRCULO: "<<endl;
  350.     for (count1 = 0 ; count1 < 10000 ; count1++) //CHECAGEM DE TAMANHO NA LARGURA
  351.     {
  352.         cout << "Insira o tamanho do raio do circulo: ";
  353.         cin >> r; cout <<endl;
  354.         if(2*r>a.altura() || 2*r>a.altura())
  355.         {
  356.             cout << "Grande demais, defina um tamanho menor para o raio";
  357.         }
  358.         else
  359.         {
  360.             break;
  361.         }
  362.     }
  363.  
  364.     p->setRaio(r);
  365.  
  366.     cout <<"Quais sao as coordenadas do centro do circulo? \n";
  367.     cout<<"A coordenada X: ";
  368.     cin>>CentroX; cout<<endl;
  369.     cout<<"A coordenada Y: ";
  370.     cin >>CentroY; cout<<endl;
  371.  
  372.     overraio1 = a.altura()-p->getRaio();
  373.     overraio2 = a.largura()-p->getRaio();
  374.  
  375.     for (count1 = 0 ; count1 < 10000 ; count1++) //CHECAGEM SE O CIRCULO ESTA NO CANVAS
  376.     {
  377.  
  378.         if (p->getRaio()>=CentroX || p->getRaio()>=CentroY || overraio1<=CentroX || overraio2<=CentroY)
  379.         {
  380.         cout<<"O circulo nao esta ajustado ao canvas. Escolha novamente as coordenadas ";
  381.         cout<<"Digite a coordenada x: ";
  382.         cin>>CentroX;
  383.         cout<<endl;
  384.         cout<<"Digite a coordenada y: ";
  385.         cin>>CentroY;
  386.         cout<<endl;
  387.         }
  388.         else
  389.         {
  390.             break;
  391.         }
  392.     }
  393.  
  394.     cout << "O poligono criado esta sobreposto? 1 = Sim 2 = Nao ";
  395.     cin >> opt; cout<<endl;
  396.  
  397.     do {
  398.     if (opt==1)
  399.         {
  400.             int z;
  401.             cout << "Esta sobreposto a quantos poligonos? ";
  402.             cin >> z; cout<<endl;
  403.             p->setZ(z);
  404.             break;
  405.         }
  406.     else if (opt==2)
  407.         {
  408.         p->setZ(0);
  409.         break;
  410.         }
  411.     else
  412.     {
  413.         cout <<"Opcao invalida, escolha uma opcao valida"<<endl; cin>>opt;
  414.         continue;
  415.     }
  416.     }
  417.     while(opt!=1&&opt!=2);
  418.     cout << "Qual a cor do poligono?";
  419.     string Cor;
  420.     cin >> Cor; cout<<endl;
  421.     p->setCor(Cor);
  422.     cout << "O circulo foi adicionado com sucesso!"<<endl;
  423.  
  424. }
  425.  
  426. void InsertTriangulo (triangulo *p, canvas a)
  427. {
  428.     int lado, opt, CentroX, CentroY, overbase, overaltura, count1;
  429.     string cor;
  430.     cout << "INSIRA O CIRCULO: "<<endl;
  431.     for (count1 = 0 ; count1 < 10000 ; count1++) //CHECAGEM DE TAMANHO NA LARGURA
  432.     {
  433.         cout << "Insira o tamanho do lado do triangulo: ";
  434.         cin >> r; cout <<endl;
  435.         if (lado>a.largura())
  436.         {
  437.             cout << "Grande demais, defina um tamanho menor para o lado";
  438.         }
  439.         else
  440.         {
  441.             break;
  442.         }
  443.     }
  444.  
  445.     p->setLado(lado);
  446.  
  447.     cout <<"Quais sao as coordenadas do centro do circulo? \n";
  448.     cout<<"A coordenada X: ";
  449.     cin>>CentroX; cout<<endl;
  450.     cout<<"A coordenada Y: ";
  451.     cin >>CentroY; cout<<endl;
  452.  
  453.     restobase=t.largura()-p->getbase()/2;
  454.  
  455.     for (count1 = 0 ; count1 < 10000 ; count1++) //CHECAGEM SE O CIRCULO ESTA NO CANVAS
  456.     {
  457.  
  458.         if ((p->getLado()/2)>=CentroX || p->getLado()/2>=CentroY || overbase<=CentroX || overaltura<=CentroY)
  459.         {
  460.             cout<<"O triangulo nao esta ajustado ao canvas. Escolha novamente as coordenadas ";
  461.             cout<<"Digite a coordenada x: ";
  462.             cin>>CentroX;
  463.             cout<<endl;
  464.             cout<<"Digite a coordenada y: ";
  465.             cin>>CentroY;
  466.             cout<<endl;
  467.         }
  468.         else
  469.         {
  470.             break;
  471.         }
  472.     }
  473.  
  474.     cout << "O poligono criado esta sobreposto? 1 = Sim 2 = Nao ";
  475.     cin >> opt; cout<<endl;
  476.  
  477.     do {
  478.     if (opt==1)
  479.         {
  480.             int z;
  481.             cout << "Esta sobreposto a quantos poligonos? ";
  482.             cin >> z; cout<<endl;
  483.             p->setZ(z);
  484.             break;
  485.         }
  486.     else if (opt==2)
  487.         {
  488.         p->setZ(0);
  489.         break;
  490.         }
  491.     else
  492.     {
  493.         cout <<"Opcao invalida, escolha uma opcao valida"<<endl; cin>>opt;
  494.         continue;
  495.     }
  496.     }
  497.     while(opt!=1&&opt!=2);
  498.     cout << "Qual a cor do poligono?";
  499.     string Cor;
  500.     cin >> Cor; cout<<endl;
  501.     p->setCor(Cor);
  502.     cout << "O triangulo foi adicionado com sucesso!"<<endl;
  503.  
  504. }
  505.  
  506. void InsertHexagono (retangulo *p, canvas a)
  507. {
  508.         int lado, opt, CentroX, CentroY, overlado1, overlado2, count1;
  509.     string Cor;
  510.     cout << "INSIRA O HEXAGONO: "<<endl;
  511.     for (count1 = 0 ; count1 < 10000 ; count1++) //CHECAGEM DE TAMANHO NA LARGURA
  512.     {
  513.         cout << "Insira o tamanho do lado do hexaogono: ";
  514.         cin >> lado; cout <<endl;
  515.         if ((lado*2)>=a.largura())
  516.         {
  517.             cout << "Grande demais, defina um tamanho menor para o lado";
  518.         }
  519.         else
  520.         {
  521.             break;
  522.         }
  523.     }
  524.  
  525.     for (count1 = 0 ; count1 < 10000 ; count1++) //CHECAGEM DE TAMANHO NA ALTURA
  526.     {
  527.         cout << "Insira o tamanho da altura do retangulo: ";
  528.         cin >> lado; cout <<endl;
  529.         if ((lado*2)>=a.altura())
  530.         {
  531.             cout << "Grande demais, defina um tamanho menor para a altura";
  532.         }
  533.         else
  534.         {
  535.             break;
  536.         }
  537.     }
  538.  
  539.     p->setLado (lado);
  540.  
  541.     cout <<"Quais as coordenadas do centro do hexagono? \n";
  542.     cout<<"A coordenada x: ";
  543.     cin>>CentroX; cout<<endl;
  544.     cout<<"A coordenada y: ";
  545.     cin >>CentroY; cout<<endl;
  546.  
  547.     overlado1 = a.altura()-p->getLado();
  548.     overlado2 = a.largura()-p->getLado();
  549.  
  550.     for (count1 = 0 ; count1 < 10000 ; count1++) //CHECAGEM SE O RETANGULO ESTA NO CANVAS
  551.     {
  552.  
  553.         if (p->getLado()>=CentroX || p->getLado()>=CentroY || overlado1<=centrox || overlado2<=centroy)
  554.         {
  555.         cout<<"O hexagono nao esta ajustado ao canvas. Escolha novamente as coordenadas ";
  556.         cout<<"Digite a coordenada x: ";
  557.         cin>>CentroX;
  558.         cout<<endl;
  559.         cout<<"Digite a coordenada y: ";
  560.         cin>>CentroY;
  561.         cout<<endl;
  562.         }
  563.         else
  564.         {
  565.             break;
  566.         }
  567.     }
  568.  
  569.     cout << "O poligono criado esta sobreposto? 1 = Sim 2 = Nao ";
  570.     cin >> opt; cout<<endl;
  571.  
  572.     do {
  573.     if (opt==1)
  574.         {
  575.             int z;
  576.             cout << "Esta sobreposto a quantos poligonos? ";
  577.             cin >> z; cout<<endl;
  578.             p->setZ(z);
  579.             break;
  580.         }
  581.     else if (opt==2)
  582.         {
  583.         p->setZ(0);
  584.         break;
  585.         }
  586.     else
  587.     {
  588.         cout <<"Opcao invalida, escolha uma opcao valida"<<endl; cin>>opt;
  589.         continue;
  590.     }
  591.     }
  592.     while(opt!=1&&opt!=2);
  593.     cout << "Qual a cor do poligono?";
  594.     string cor;
  595.     cin >> cor; cout<<endl;
  596.     p->setCor(cor);
  597.     cout << "O hexagono foi adicionado com sucesso!"<<endl;
  598.  
  599. }
  600.  
  601. void PoligonoInfo (retangulo *a,circulo *b, triangulo *c, hexagono *d,canvas *p,int i)
  602. {
  603.  
  604.     switch (p->getTipoPoligono(i))
  605.     {
  606.     case 4:
  607.         break;
  608.     case 0:
  609.         cout<<"Retangulo\t"<<"Centro: "<<a->CentroX()<<", "<<a->CentroY()<<"\t"<<"Cor: "<<a->ReturnCor()<<"\t"<<"Area: "<<a->ReturnArea()<<"\t"<<"Perimetro: "<<a->ReturnPerimeter()<<endl;
  610.         break;
  611.     case 1:
  612.         cout<<"Circulo\t"<<"Centro: "<<b->CentroX()<<", "<<b->CentroY()<<"\t"<<"Cor: "<<b->ReturnCor()<<"\t"<<"Area: "<<b->ReturnArea()<<"\t"<<"Perimetro: "<<b->ReturnPerimeter()<<endl;
  613.         break;
  614.     case 2:
  615.         cout<<"Triangulo\t"<<"Centro: "<<c->CentroX()<<", "<<c->CentroY()<<"\t"<<"Cor: "<<c->ReturnCor()<<"\t"<<"Area: "<<c->ReturnArea()<<"\t"<<"Perimetro: "<<c->ReturnPerimeter()<<endl;
  616.         break;
  617.     case 3:
  618.         cout<<"Hexagono\t"<<"Centro: "<<a->CentroX()<<", "<<d->CentroY()<<"\t"<<"Cor: "<<d->ReturnCor()<<"\t"<<"Area: "<<d->ReturnArea()<<"\t"<<"Perimetro: "<<d->ReturnPerimeter()<<endl;
  619.         break;
  620.     default: cout << "\n\nPoligono nao identificado!\n"<<endl;
  621.     }
  622. }
  623.  
  624. void PoligonoExcluir (retangulo *a,circulo *b, triangulo *c, hexagono *d,canvas *p,int i)
  625. {
  626.  
  627.     int opt;
  628.     if (p->getTipoPoligono(i)==0)
  629.     {
  630.         cout<<"Retangulo\t"<<"Centro: "<<a->CentroX()<<", "<<a->CentroY()<<"\t"<<"Cor: "<<a->ReturnCor()<<"\t"<<"Area: "<<a->ReturnArea()<<"\t"<<"Perimetro: "<<a->ReturnPerimeter()<<endl;
  631.         cout<<"\nDeseja excluir esse poligono? 1=sim  2=nao   ";
  632.         cin>>opt;
  633.         if (opt==1) {p->setTipoPoligono(i,0);}
  634.     }
  635.     else if (p->gettipo(i)==1)
  636.     {
  637.         cout<<"Circulo\t"<<"Centro: "<<b->CentroX()<<", "<<b->CentroY()<<"\t"<<"Cor: "<<b->ReturnCor()<<"\t"<<"Area: "<<b->ReturnArea()<<"\t"<<"Perimetro: "<<b->ReturnPerimeter()<<endl;
  638.         cout<<"\nDeseja excluir esse poligono? 1=sim  2=nao   ";
  639.         cin>>opt;
  640.         if (opt==1) {p->setTipoPoligono(i,0);}
  641.     }
  642.     else if (p->gettipo(i)==2)
  643.     {
  644.         cout<<"Triangulo\t"<<"Centro: "<<c->CentroX()<<", "<<c->CentroY()<<"\t"<<"Cor: "<<c->ReturnCor()<<"\t"<<"Area: "<<c->ReturnArea()<<"\t"<<"Perimetro: "<<c->ReturnPerimeter()<<endl;
  645.         cout<<"\nDeseja excluir esse poligono? 1=sim  2=nao   ";
  646.         cin>>opt;
  647.         if (opt==1) {p->setTipoPoligono(i,0);}
  648.     }
  649.     else if (p->gettipo(i)==3)
  650.     {
  651.         cout<<"Hexagono\t"<<"Centro: "<<a->CentroX()<<", "<<d->CentroY()<<"\t"<<"Cor: "<<d->ReturnCor()<<"\t"<<"Area: "<<d->ReturnArea()<<"\t"<<"Perimetro: "<<d->ReturnPerimeter()<<endl;
  652.         cout<<"\nDeseja excluir esse poligono? 1=sim  2=nao   ";
  653.         cin>>opt;
  654.         if (opt==1) {p->setTipoPoligono(i,0);}
  655.  
  656.     }
  657.  
  658.  
  659. }
  660.  
  661. int SomaArea (retangulo *a,circulo *b, triangulo *c, hexagono *d,canvas *p,int i)
  662. {
  663.     switch (p->getTipoPoligono(i))
  664.     {
  665.     case 0:
  666.         break;
  667.     case 1:
  668.         return a->ReturnArea();
  669.         break;
  670.     case 2:
  671.         return b->ReturnArea();
  672.         break;
  673.     case 3:
  674.         return c->ReturnArea();
  675.         break;
  676.     case 4:
  677.         return d->ReturnArea();
  678.         break;
  679. }
  680. }
  681.  
  682. int SomaPerimeter(retangulo *a,circulo *b, triangulo *c, hexagono *d,canvas *p,int i)
  683. {
  684.     switch (p->getTipoPoligono(i))
  685.     {
  686.     case 0:
  687.         break;
  688.     case 1:
  689.         return a->ReturnPerimeter();
  690.         break;
  691.     case 2:
  692.         return b->ReturnPerimeter();
  693.         break;
  694.     case 3:
  695.         return c->ReturnPerimeter();
  696.         break;
  697.     case 4:
  698.         return d->ReturnPerimeter();
  699.         break;
  700. }
  701. }
  702.  
  703. int main ()
  704. {
  705.     int opcao1, opcao, breaker;
  706.     retangulo r[900];
  707.     circulo c[900];
  708.     triangulo t[900];
  709.     hexagono h[900];
  710.     do{
  711.     system("cls");
  712.     int PoligonoCount=0, opcao;;
  713.     cout << "Bem-vindo ao Canvas. Aqui voce ira criar e manipular poligonos.";<< endl;
  714.     int x,y;
  715.     cout<<"\n1. Configurar o canvas\t\t\t2.Sair do canvas\n";
  716.     do{
  717.     cin>>opcao1;
  718.     if (opcao1==1){
  719.     cout << "================================================================================"<<endl;
  720.     cout << "A partir de agora, criaremos o canvas utilizado, escolhendo as dimensoes dele\n"<<endl;
  721.     cout << "Largura do canvas: ";
  722.     cin >> x;
  723.     cout <<endl;
  724.     cout << "Altura do canvas: ";
  725.     cin >> y;
  726.     cout<<endl;
  727.     }
  728.     else if(opcao1==2){break;}
  729.     else {cout <<"Opcao invalida! Digite uma opcao valida!\n"; continue; }
  730.     }while(opcao1!=1 && opcao1!=2);
  731.     canvas b (x, y);
  732.     do{
  733.     if (opcao1==2){break;}
  734.     system("cls");
  735.     cout << "================================================================================";
  736.     cout << "Bem-vindo ao canvas, o menu abaixo mostra as opcoes disponiveis no programa!\n" << endl;
  737.     cout << "=================================MENU PRINCIPAL================================="<<endl;
  738.     cout << "1. Exibir informacoes do Canvas\n"<<endl;
  739.     cout << "2. Inserir Retangulo\t\t\t";
  740.     cout << "3. Inserir Circulo\n"<<endl;
  741.     cout << "4. Inserir Triangulo\t\t\t";
  742.     cout << "5. Inserir Hexagono\n"<<endl;
  743.     cout << "6. Listar Poligonos\n"<<endl;
  744.     cout << "7. Excluir Poligonos\n"<<endl;
  745.     cout << "8. Soma das areas dos poligonos do Canvas\n"<<endl;
  746.     cout << "9. Soma dos perimetros dos poligonos do Canvas\n"<<endl;
  747.     cout << "10. Sair do Menu\n"<<endl;
  748.     cout << "================================================================================"<<endl;
  749.     do{
  750.     if (opcao1==2){break;}
  751.     cin >> opcao;
  752.     if (opcao==1)
  753.     {
  754.         InfoCanvas(b,PoligonoCount);
  755.         system("pause");
  756.         break;
  757.     }
  758.     if (opcao==2)
  759.     {
  760.         InsertRetangulo(&r[PoligonoCount],b);
  761.         b.setTipoPoligono()ipo(PoligonoCount,opcao);
  762.         PoligonoCount++;
  763.         system("pause");
  764.         break;
  765.     }
  766.     else if (opcao==3)
  767.     {
  768.         InsertCirculo(&c[PoligonoCount],b);
  769.         b.setTipoPoligono()ipo(PoligonoCount,opcao);
  770.         PoligonoCount++;
  771.         system("pause");
  772.         break;
  773.     }
  774.     else if (opcao==4)
  775.     {
  776.         InsertTriangulo(&t[cPoligonoCount],b);
  777.         b.setTipoPoligono()ipo(PoligonoCount,opcao);
  778.         PoligonoCount++;
  779.         system("pause");
  780.         break;
  781.     }
  782.     else if (opcao==5)
  783.     {
  784.         InsertHexagono(&h[PoligonoCount],b);
  785.         b.setTipoPoligono()ipo(PoligonoCount,opcao);
  786.         PoligonoCount++;
  787.         system("pause");
  788.         break;
  789.     }
  790.     else if (opcao==6)
  791.     {
  792.         cout << "============================Informacao dos poligonos=============================="<<endl;
  793.         if (PoligonoCount==0){cout<<"Nenhum poligono foi adicionado ainda\n"<<endl;}
  794.         for(int i=0 ; i<PoligonoCount ; i++)
  795.         {
  796.             PoligonoInfo(&r[i],&c[i],&t[i],&h[i],&b,i);
  797.         }
  798.     cout << "================================================================================"<<endl;
  799.     system("pause");
  800.     break;
  801.     }
  802.     else if (opcao==7)
  803.     {
  804.         cout << "=============================EXCLUIR POLIGONOS================================"<<endl;
  805.         if (PoligonoCount==0){cout<<"\nNenhum poligono foi adicionado\n\n";  cout << "================================================================================"<<endl; system("pause");  break;}
  806.         cout << "Qual poligono de acordo com a ordem de insercao voce deseja excluir?"<<endl;
  807.         cout<<"Voce possui "<<PoligonoCount<<" poligonos adicionados.\n\n"<<endl;
  808.         int e;
  809.         cin>>e;
  810.         ExcluirPoligono(&r[e-1],&c[e-1],&t[e-1],&h[e-1],&b,e-1);
  811.         cout << "\n==============================EXCLUIDO COM SUCESSO============================="<<endl;
  812.         system("pause");
  813.         break;
  814.     }
  815.     else if(opcao==8)
  816.     {
  817.         int SomaAux=0;
  818.         for(int i=0; i<PoligonoCount;i++)
  819.         {
  820.             SomaAux+=SomaArea(&r[i],&c[i],&t[i],&h[i],&b,i);
  821.         }
  822.     cout << "=========================Soma das areas dos poligonos==========================="<<endl;
  823.         cout << "O resultado eh: "<<SomaAux<<endl<<endl;
  824.     cout << "================================================================================"<<endl;
  825.         system("pause");
  826.         break;
  827.     }
  828.     else if(opcao==9)
  829.     {
  830.         int PerimeterAux=0;
  831.         for (int i=0; i<PoligonoCount;i++)
  832.         {
  833.             PerimeterAux+=SomaPerimeter(&r[i],&c[i],&t[i],&h[i],&b,i);
  834.         }
  835.         cout << "=======================Soma dos perimetros dos poligonos========================"<<endl;
  836.         cout << "O resultado eh: "<<PerimeterAux<<endl<<endl;
  837.         cout << "================================================================================"<<endl;
  838.         system("pause");
  839.         break;
  840.     }
  841.     else if(opcao==10)
  842.     {
  843.         break;
  844.     }
  845.     else {cout<<"Opcao invalida, digite novamente.\n"; continue;}
  846.     }while(opcao!=10);
  847.      if (opcao1==2){break;}
  848.     }while(opcao!=10);
  849.      if (opcao1==2){break;}
  850.     }while (opcao1!=0);
  851.  
  852. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement