Avatar billede anarchy Nybegynder
05. marts 2003 - 14:18 Der er 12 kommentarer og
1 løsning

Menu system

Jeg her lige bakset et program sammen, et simpelt program til at regne på retvinklede trekanter ved hjælp at trigonometri, programmet kører fint så ingen spørgsmål der. Min problem er med menu systemet, jeg vil gerne have et bedre menu system, lige nu bruger jeg bare en switch..case ting, det virker også, men den eneste måde at lave et program der ikke afslutter efter en udregning er at lave en uendelig løkke og have en case der break'er loopet og return'er 0, det vil jeg gerne gøre noget ved så jeg kan få et lidt mindre 'klodset' system, og da jeg også bruger system("PAUSE"); og system("CLS"); for at sørge for at det ikke bare scroller forbi brugeren når den er færdig med en udregning har jeg også effektivt spræret programmet fra at blive brugt på andre OS'er..

Anyways her er progget:

#include <iostream.h>
#include <stdlib.h>
#include <math.h>

int main()
{
      int choice = 0;
      double SideA = 0;
      double SideB = 0;
      double SideC = 0;
      double AngleA = 0;
      double AngleB = 0;
      double AngleC = 90;
      double PI = 3.14159265;


      while(1)
      {
      cout<<"Trig suite 1.0"<<endl
          <<endl;
      cout<<"Menu:"<<endl;
      cout<<endl
          <<"What numbers do you have?"<<endl
          <<endl
          <<"1. Side a and side b."<<endl
          <<"2. Side b and side c."<<endl
          <<"3. Side a and side b."<<endl
          <<"4. Side c and Angle A."<<endl
          <<"5. Side c and Angle B."<<endl
          <<"6. Side a and Angle B."<<endl
          <<"7. Side b and Angle A."<<endl
          <<"8. Side a and Angle A."<<endl
          <<"9. Side b and Angle B."<<endl
          <<"0. Quit program."<<endl
          <<"Enter your choice: ";
          cin>>choice;

          switch(choice)
          {
          case 1:

                cout<<"Enter lenght of side a in centimeters: ";
                cin>>SideA;
                cout<<"Enter lenght of side c in centimeters: ";
                cin>>SideC;
                SideB = sqrt(pow(SideC,2)-pow(SideA,2));
                AngleA = asin(SideA/SideC) * 180 / PI;
                AngleB = 90 - AngleA;
                cout<<"Side b = "<<SideB<<" cm"<<endl
                    <<"Angle A = "<<AngleA<<" Degrees"<<endl
                    <<"Angle B = "<<AngleB<<" Degrees"<<endl
                    <<"Checks:"<<endl
                    <<"Total Angle sum = "<<AngleA+AngleB+AngleC<<" Degrees"<<endl
                    <<"Total lenght of triangle sides = "<<SideA+SideB+SideC<<" cm "<<endl;

                break;
          case 2:

                cout<<"Enter lenght of side b in centimeters: ";
                cin>>SideB;
                cout<<"Enter lenght of side c in centimeters: ";
                cin>>SideC;
                SideA = sqrt(pow(SideC,2)-pow(SideB,2));
                AngleA = acos(SideB/SideC) * 180 / PI;
                AngleB = 90 - AngleA;
                cout<<"Side a = "<<SideA<<" cm"<<endl
                    <<"Angle A = "<<AngleA<<" Degrees"<<endl
                    <<"Angle B = "<<AngleB<<" Degrees"<<endl
                    <<"Checks:"<<endl
                    <<"Total Angle sum = "<<AngleA+AngleB+AngleC<<" Degrees"<<endl
                    <<"Total lenght of triangle sides = "<<SideA+SideB+SideC<<" cm "<<endl;

                break;
          case 3:
                cout<<"Enter lenght of side a in centimeters: ";
                cin>>SideA;
                cout<<"Enter lenght of side b in centimeters: ";
                cin>>SideB;
                SideC = sqrt(pow(SideA,2)+pow(SideB,2));
                AngleA = atan(SideA/SideB) * 180 / PI;
                AngleB = 90 - AngleA;
                cout<<"Side c = "<<SideC<<" cm"<<endl
                    <<"Angle A = "<<AngleA<<" Degrees"<<endl
                    <<"Angle B = "<<AngleB<<" Degrees"<<endl
                    <<"Checks:"<<endl
                    <<"Total Angle sum = "<<AngleA+AngleB+AngleC<<" Degrees"<<endl
                    <<"Total lenght of triangle sides = "<<SideA+SideB+SideC<<" cm "<<endl;

                break;

          case 4:
                cout<<"Enter Lenght of side c in centimeters: ";
                cin>>SideC;
                cout<<"Enter Angle A in degrees: ";
                cin>>AngleA;
                SideA = SideC*sin(AngleA*PI/180);
                SideB = SideA*cos(AngleA*PI/180);
                AngleB = 90 - AngleA;
                cout<<"Side a = "<<SideA<<" cm"<<endl
                    <<"Side b = "<<SideB<<" cm"<<endl
                    <<"Angle B = "<<AngleB<<" Degrees"<<endl
                    <<"Checks:"<<endl
                    <<"Total Angle sum = "<<AngleA+AngleB+AngleC<<" Degrees"<<endl
                    <<"Total lenght of triangle sides = "<<SideA+SideB+SideC<<" cm "<<endl;

                break;

          case 5:
                cout<<"Enter Lenght of side c in centimeters: ";
                cin>>SideC;
                cout<<"Enter Angle B in degrees: ";
                cin>>AngleB;
                SideA = SideC*cos(AngleB*PI/180);
                SideB = SideC*sin(AngleB*PI/180);
                AngleA = 90 - AngleB;
                cout<<"Side a = "<<SideA<<" cm"<<endl
                    <<"Side b = "<<SideB<<" cm"<<endl
                    <<"Angle A = "<<AngleA<<" Degrees"<<endl
                    <<"Checks:"<<endl
                    <<"Total Angle sum = "<<AngleA+AngleB+AngleC<<" Degrees"<<endl
                    <<"Total lenght of triangle sides = "<<SideA+SideB+SideC<<" cm "<<endl;

                break;

          case 6:
                cout<<"Enter Lenght of side a in centimeters: ";
                cin>>SideA;
                cout<<"Enter Angle B in degrees: ";
                cin>>AngleB;
                SideC = SideA/cos(AngleB*PI/180);
                SideB = SideA*tan(AngleB*PI/180);
                AngleA = 90 - AngleB;
                cout<<"Side c = "<<SideC<<" cm"<<endl
                    <<"Side b = "<<SideB<<" cm"<<endl
                    <<"Angle A = "<<AngleA<<" Degrees"<<endl
                    <<"Checks:"<<endl
                    <<"Total Angle sum = "<<AngleA+AngleB+AngleC<<" Degrees"<<endl
                    <<"Total lenght of triangle sides = "<<SideA+SideB+SideC<<" cm "<<endl;

                break;

          case 7:
                cout<<"Enter Lenght of side b in centimeters: ";
                cin>>SideB;
                cout<<"Enter Angle A in degrees: ";
                cin>>AngleA;
                SideC = SideB/cos(AngleA*PI/180);
                SideA = SideB*tan(AngleA*PI/180);
                AngleB = 90 - AngleA;
                cout<<"Side c = "<<SideC<<" cm"<<endl
                    <<"Side b = "<<SideB<<" cm"<<endl
                    <<"Angle A = "<<AngleA<<" Degrees"<<endl
                    <<"Checks:"<<endl
                    <<"Total Angle sum = "<<AngleA+AngleB+AngleC<<" Degrees"<<endl
                    <<"Total lenght of triangle sides = "<<SideA+SideB+SideC<<" cm "<<endl;
                break;

          case 8:
                cout<<"Enter Lenght of side a in centimeters: ";
                cin>>SideA;
                cout<<"Enter Angle A in degrees: ";
                cin>>AngleA;
                SideC = SideA/sin(AngleA*PI/180);
                SideB = SideA/tan(AngleA*PI/180);
                AngleB = 90 - AngleA;
                cout<<"Side c = "<<SideC<<" cm"<<endl
                    <<"Side b = "<<SideB<<" cm"<<endl
                    <<"Angle B = "<<AngleB<<" Degrees"<<endl
                    <<"Checks:"<<endl
                    <<"Total Angle sum = "<<AngleA+AngleB+AngleC<<" Degrees"<<endl
                    <<"Total lenght of triangle sides = "<<SideA+SideB+SideC<<" cm "<<endl;
                break;

          case 9:
                cout<<"Enter Lenght of side b in centimeters: ";
                cin>>SideB;
                cout<<"Enter Angle B in degrees: ";
                cin>>AngleB;
                SideC = SideB/sin(AngleB*PI/180);
                SideA = SideB/tan(AngleB*PI/180);
                AngleA = 90 - AngleB;
                cout<<"Side c = "<<SideC<<" cm"<<endl
                    <<"Side a = "<<SideA<<" cm"<<endl
                    <<"Angle A = "<<AngleA<<" Degrees"<<endl
                    <<"Checks:"<<endl
                    <<"Total Angle sum = "<<AngleA+AngleB+AngleC<<" Degrees"<<endl
                    <<"Total lenght of triangle sides = "<<SideA+SideB+SideC<<" cm "<<endl;
                break;
          case 0:
                return 0;
                break;


          default:
                  cout<<"You suck! Enter a command I understand!"<<endl;
                  break;
          }
          system("PAUSE");
          system("CLS");
          }




      system("PAUSE");
      return 0;
}

Og ja, jeg er newbie til C++.
Avatar billede tosssen Nybegynder
05. marts 2003 - 17:45 #1
Mener du noget i denne retning?

bool done=false;
do
{
  //din kode
  case 0:
    done=true;
    break
  //din kode
}
while (!done)

//resten af programmet
Avatar billede anarchy Nybegynder
05. marts 2003 - 17:59 #2
Yah...lidt..men er det muligt at lave en menu hvor hvist man ikke skrivet en af mulighedderne ind, laver den:

Hit any key to continue... og så CLS
Avatar billede tosssen Nybegynder
05. marts 2003 - 18:06 #3
Mener du sådan?

//kode
  default:
    cout << "Hit any key to continue...";
    getch()  //Kræver #include <conio.h>
    system("CLS");
//mere kode

Hvis der indtastes noget ugyldigt kommer der en "Hit any key to continue..." og når der trykkes retur, bliver skærmen rengjort.
Avatar billede tosssen Nybegynder
05. marts 2003 - 18:08 #4
Rettelse: "...og når der trykkes retur" skal ændres til "... og når der trykkes på en tilfældig tast"
Avatar billede tosssen Nybegynder
05. marts 2003 - 18:09 #5
Der skal også lige tilføjes et semikolon efter getch()m så der kommer til at stå getch();
Avatar billede anarchy Nybegynder
05. marts 2003 - 18:29 #6
Argh..vi har hvist misforstået hinnanden. :)

Jeg mener, jeg vil ha' et system der ikke bruger system() calls, og som bruger de headere som allerede står i mit prog.
Avatar billede tosssen Nybegynder
05. marts 2003 - 18:40 #7
system("CLS"); kan erstattes med clrscr();
system("PAUSE"); kan er stattes med getch();

Begge disse funktioner ligger i headeren conio.h

Jeg ved ikke om der ligger noget tilsvarende i stdlib.h. Ser lige om jeg kan finde noget. Har jeg forstået dig ret hvis det du vil er at gøre din kode portabel?
Avatar billede tosssen Nybegynder
05. marts 2003 - 19:01 #8
Jeg kan ikke lige umiddelbart finde andre alternativer.
Avatar billede anarchy Nybegynder
05. marts 2003 - 20:32 #9
Vil ikke bruge conio.h, vil helst holde mig til

iostram og stdlib.h.
Avatar billede tosssen Nybegynder
05. marts 2003 - 20:38 #10
Hvad er det helt præcist der er galt med system("CLS")? Er det ikke ANSI C? Det burde da være portabelt.
Avatar billede tosssen Nybegynder
05. marts 2003 - 20:41 #11
http://www.cplusplus.com/ref/cstdlib/system.html

For mig ser det ud som om det eneste ved system() der ikke er portabelt er retur-værdien og den bruger du ikke
Avatar billede anarchy Nybegynder
09. marts 2003 - 18:49 #12
Lukker.
Avatar billede anarchy Nybegynder
09. marts 2003 - 18:49 #13
Hvis du vil ha' point Tossen, smid en kommentar så laver jeg en tråd for for dig.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester