Witam,
Jestem nowy na tym forum, ale mam nadzieję, że uzyskam potrzebną pomoc. C++ mieliśmy kiedyś w szkole (podstawy), a wczoraj wpadłem na pomysł sprawdzenia co uda mi się zrobić. Program liczy pole podstawowych figur a potem ma rysować przykładową figurę o takich wymiarach (proporcjach) i tu jest problem, z prostokątem nie ma problemu, ale trójkąt czy koło narysuje tylko przy pierwszej pętli.
Tutaj kod :
(proszę wziąć pod uwagę, że jestem kompletnym laikiem i się nie śmiać )
Kod:
#include <cstdlib>
#include <iostream>
#include <winbgim.h>

using namespace std;

float a;
float b;
void oblicz_pole(char figura);
float pobierz_wartosc();
float pole_p(float a,float b);
float pole_k(float a);
float pole_t(float a,float b);
void rys(char figura);
int main(int argc, char *argv[])
{
    char decyzja;
    char decyzja2;
    while (1)
    {
          
        cout<<"Wybierz figure: 1-Prostokat 2-Kolo 3- Trojkat 0-EXIT"<<endl;
        cin>>decyzja;
        if  ((decyzja=='1')||(decyzja=='2')||(decyzja=='3'))
        {
            oblicz_pole(decyzja);
            cout<<"Czy chcesz aby owa figura zostala narysowana ? (t/n)"<<endl;
            cin>>decyzja2;
            if (decyzja2=='t') rys(decyzja);
            else if (decyzja2=='n') break;
            else cout<<"ERROR"<<endl;
            }
        else if (decyzja=='0') break;
        else cout<<"ERROR"<<endl;
    }
    system("PAUSE");
    return EXIT_SUCCESS;
    
}


void oblicz_pole(char figura)
{
     cout<<"Podaj wartosc";
     
     switch (figura){
            case '1': cout<<"i bokow prostokata"<<endl;a=pobierz_wartosc();b=pobierz_wartosc();
                 cout<<"Pole prostokota wynosi: "<<pole_p(a,b)<<endl;break;
            case '2': cout<<" promienia kola"<<endl;a=pobierz_wartosc();
                 cout<<"Pole kola wynosi: "<<pole_k(a)<<endl;break;
            case '3': cout<<" wysokosci i podstawy trojkata"<<endl;a=pobierz_wartosc();b=pobierz_wartosc();
                 cout<<"Pole trojkata wynosi: "<<pole_t(a,b)<<endl;break;
            
            }
}


float pobierz_wartosc()
{
      while (1)
      {
       
       cin>>a;
       if (a>0) return a;
       }
}

float pole_p(float a,float b)
{
      return a*b;      
}

float pole_k(float a)
{
      return 3.14*a*a;
}

float pole_t(float a,float b)
{
      return a*b/2;
}

void rys(char figura)
{
     
     
     initwindow(400,400);
     setfillstyle(SOLID_FILL, BLUE);
     cout<<a<<" "<<b<<endl;
     
     
     switch(figura){
                    case '1':bar(int(200-(a/2)),int(200-(b/2)),int(200+(a/2)),int(200+(b/2)));break;
                    case '2': circle(200,200,int(a));break;
                    case '3': line(int(200-(a/2)),int(200-(b/2)),int(200+(a/2)),int(200-(b/2)));
                         line(int(200-(a/2)),int(200-(b/2)),int(200-(a/2)),int(200+(a/2)));
                         line(int(200+(a/2)),int(200-(b/2)),int(200-(a/2)),int(200+(b/2)));break;
                         }
                         
                         system("PAUSE");
                         closegraph();
    
}