Witam,
Pisze program, który ma za zadanie wykonywanie różnego rodzaju operacji matematycznych. Chce to wykonać w taki sposób, aby użytkownik mógł wejść w daną grupę operacji, a następnie z ponownie wyświetlonego menu (danej kategorii) mógł wybrać już konkretną funkcje, którą chce użyć.
Problem polega jednak na tym, że uruchamiają się tylko odnośniki do bezpośrednich funkcji, a do podmenu w funkcjach już nie. Podejrzewam, że powód bardzo błahy, ale nie mogę go pomimo szczerych chęci zlokalizować.
#include <iostream>
#include <conio.h>
#include<math.h>
using namespace std;
void obkwadratu()
{
int a,b;
cout<<"Podaj długość boku kwadratu ";
cin>>a;
b=4*a;
cout<<endl;
cout<<"Obwód kwadratu wynosi "<<b<<endl;
}
void polkwadratu()
{
int a,b;
cout<<"Podaj długość boku kwadratu ";
cin>>a;
b=a*a;
cout<<endl;
cout<<"Pole kwadratu wynosi "<<b<<endl;
}
void obprostokata()
{
int a,b,c;
cout<<"Podaj długość pierwszego boku prostokąta ";
cin>>a;
cout<<"Podaj długość drugiego boku prostokąta ";
cin>>b;
c=2*a+2*b;
cout<<endl;
cout<<"Obwod prostokąta wynosi "<<c<<endl;
}
void polprostokata()
{
int a,b,c;
cout<<"Podaj długość pierwszego boku prostokąta ";
cin>>a;
cout<<"Podaj długość drugiego boku prostokąta ";
cin>>b;
c=a*b;
cout<<endl;
cout<<"Pole prostokąta wynosi "<<c<<endl;
}
void obrombu()
{
int a,b;
cout<<"Podaj dlugość boku rombu ";
cin>>a;
b=4*a;
cout<<endl;
cout<<"Obwod rombu wynosi "<<b<<endl;
}
void polrombu()
{
int a,b,c;
cout<<"Podaj długość pierwszej przekątnej ";
cin>>a;
cout<<"Podaj długość drugiej przekątnej ";
cin>>b;
c=a*b/2;
cout<<endl;
cout<<"Pole rombu wynosi "<<c<<endl;
}
void obtrapezu()
{
int a,b,c,d;
cout<<"Podaj długosc pierwszej podstawy ";
cin>>a;
cout<<"Podaj długosc drugiej podstawy ";
cin>>b;
cout<<"Podaj długość ramienia ";
cin>>c;
d=2*a+2*b+2*c;
cout<<endl;
cout<<"Obwod trapezu wynosi "<<d<<endl;
}
void poltrapezu()
{
int a,b,c,d;
cout<<"Podaj dlugosc pierwszej podstawy ";
cin>>a;
cout<<"Podaj dlugosc drugiej podstawy ";
cin>>b;
cout<<"Podaj dlugość wysokości trapezu ";
cin>>c;
d=(a+b)*c/2;
cout<<endl;
cout<<"Pole trapezu wynosi "<<d<<endl;
}
void obrownolegloboku()
{
int a,b,c;
cout<<"Podaj długość pierwszego boku rownolegloboku ";
cin>>a;
cout<<"Podaj długość drugiego boku rownolegloboku ";
cin>>b;
c=2*a+2*b;
cout<<endl;
cout<<"Obwod rownolegloboku wynosi "<<c<<endl;
}
void polrownolegloboku()
{
int a,b,c;
cout<<"Podaj długość podstawy rownolegloboku ";
cin>>a;
cout<<"Podaj długość wysokości równoległoboku ";
cin>>b;
c=a*b;
cout<<endl;
cout<<"Pole rownolegloboku wynosi "<<c<<endl;
}
void poltrojkata()
{
int a,b,c;
cout<<"Podaj długość boku trójkąta ";
cin>>a;
cout<<"Podaj długość wysokości trójkąta ";
cin>>b;
c=a*b/2;
cout<<endl;
cout<<"Pole trójkąta wynosi "<<c<<endl;
}
void poltrojkatarown()
{
int a,b;
cout<<"Podaj długość boku trójkąta ";
cin>>a;
b=a*a*sqrt(3)/2;
cout<<endl;
cout<<"Pole trójkąta równobocznego wynosi "<<b<<endl;
}
void polkola()
{
int a;
float b;
cout<<"Podaj promień koła ";
cin>>a;
b=a^2*3,14;
cout<<endl;
cout<<"Pole koła wynosi "<<b<<endl;
}
void obkola()
{
int a;
float b;
cout<<"Podaj promień koła ";
cin>>a;
b=2*3,14*a;
cout<<endl;
cout<<"Obwód koła wynosi "<<b<<endl;
}
void polstozek()
{
int r,h,l;
float Pp,Pb,Pc,V;
cout<<"Podaj promien podstawy ";
cin>>r;
cout<<"Podaj długość tworzącej stożka ";
cin>>l;
cout<<"Podaj wysokość stożka ";
cin>>h;
Pp=r^2*3,14;
Pb=r*l*3,14;
Pc=Pp+Pb;
V=Pp*h/3;
cout<<endl;
cout<<"Pole podstawy stożka wynosi "<<Pp<<endl;
cout<<"Pole powierzchni bocznej stożka wynosi "<<Pb<<endl;
cout<<"Pole całkowite stożka wynosi "<<Pc<<endl;
cout<<"Objętość stożka wynosi "<<V<<endl;
}
void polwalec()
{
int r,h;
float Pp,Pb,Pc,V;
cout<<"Podaj promień podstawy ";
cin>>r;
cout<<"Podaj wysokość walca ";
cin>>h;
Pp=r^2*3,14;
Pb=2*3,14*r*h;
Pc=2*Pp+2*Pb;
V=Pp*h;
cout<<endl;
cout<<"Pole podstawy walca wynosi "<<Pp<<endl;
cout<<"Pole powierzchni bocznej walca wynosi "<<Pb<<endl;
cout<<"Pole całkowite walca wynosi "<<Pc<<endl;
cout<<"Objętość walca wynosi "<<V<<endl;
}
void polkuli()
{
int r;
float Pc,V;
cout<<"Podaj promień kuli ";
cin>>r;
Pc=4*3,14*r^2;
V=3,14*r^3*4/3;
cout<<endl;
cout<<"Pole całkowite kuli wynosi "<<Pc<<endl;
cout<<"Objętość kuli wynosi "<<V<<endl;
}
void polprostopadloscian()
{
int a,b,c,Pp,V,Pc;
cout<<"Podaj długość pierwszego boku podstawy ";
cin>>a;
cout<<"Podaj długość drugiego boku podstawy ";
cin>>b;
cout<<"Podaj wysokość prostopadłościanu ";
cin>>c;
V=a*b*c;
Pc=2*a*b+2*b*c+2*a*c;
cout<<endl;
cout<<"Pole całkowite prostopadłościanu wynosi "<<Pc<<endl;
cout<<"Objętość prostopadłościanu wynosi "<<V<<endl;
}
void polszescian()
{
int a,Pc,V;
cout<<"Podaj długość boku sześcianu ";
cin>>a;
V=a^3;
Pc=6*a^2;
cout<<endl;
cout<<"Pole całkowite sześcianu wynosi "<<Pc<<endl;
cout<<"Objętość sześcianu wynosi "<<V<<endl;
}
void polgraniastoslupu()
{
int n,a,r,b,Pp,Pb,Pc,V,h;
cout<<"Podaj ilu kątna jest podstawa ";
cin>>n;
cout<<"Podaj długość boku podstawy ";
cin>>a;
cout<<"Podaj promień podstawy ";
cin>>r;
cout<<"Podaj wysokość graniastosłupa ";
cin>>b;
Pp=n*a*r/2;
Pb=a*n*h;
Pc=2*Pp+Pb;
V=Pp*h;
cout<<endl;
cout<<"Pole powierzchni bocznej graniastosłupu wynosi "<<Pb<<endl;
cout<<"Pole całkowite graniastosłupu wynosi "<<Pc<<endl;
cout<<"Objętość graniastosłupu wynosi "<<V<<endl;
}
void polostroslup()
{
int n,r,a,h;
float Obp,Pp,Pb,Pc,V;
cout<<"Podaj ilu kątna jest podstawa ";
cin>>n;
cout<<"Podaj promień podstawy ";
cin>>r;
cout<<"Podaj długośc boku ostrosłupa ";
cin>>a;
cout<<"Podaj wysokość ostrosłupa ";
cin>>h;
Obp=a*n;
Pp=n*a*r/2;
Pb=Pp*h;
Pc=Pb+Pp;
V=Pp*h/3;
cout<<endl;
cout<<"Pole powierzchni bocznej ostrosłupa wynosi "<<Pb<<endl;
cout<<"Pole całkowite ostrosłupa wynosi "<<Pc<<endl;
cout<<"Objętość ostrosłupa wynosi "<<V<<endl;
}
void silnia()
{
int liczba;
long int silnia=1;
cout<<"Podaj";
cin>>liczba;
for(int i=2;i<=liczba;i++)
silnia = silnia *i;
cout<<"Silnia wynosi "<<silnia<<endl;
}
void podmenu1()
{
int choice;
while(choice != 0)
{
system("CLS");
cout << "\n\n\t\t'1' - Pole kwadratu ";
cout << "\n\n\t\t'2' - Obwód kwadratu";
cout << "\n\n\t\t'3' - Pole prostokąta";
cout << "\n\n\t\t'4' - Obwód prostokąta";
cout << "\n\n\t\t'5' - Pole rombu";
cout << "\n\n\t\t'6' - Obwód rombu";
cout << "\n\n\t\t'7' - Pole trapezu";
cout << "\n\n\t\t'8' - Obwód trapezu";
cout << "\n\n\t\t'9' - Pole równoległoboku";
cout << "\n\n\t\t'10' - Obwód równoległoboku";
cout << "\n\n\t\t'11' - Pole trójkąta";
cout << "\n\n\t\t'12' - Pole trójkąta równobocznego";
cout << "\n\n\t\t'13' - Pole koła";
cout << "\n\n\t\t'14' - Obwód koła";
cout << "\n\n\t\t'0' - Do menu głównego\n\n\t\t";
cout << ">>";
cin >> choice;
cin.ignore();
switch(choice)
{
case 1:
system("CLS");
polkwadratu();
system("pause");
break;
case 2:
system("CLS");
obkwadratu();
system("pause");
break;
case 3:
system("CLS");
polprostokata();
system("pause");
break;
case 4:
system("CLS");
obprostokata();
system("pause");
break;
case 5:
system("CLS");
polrombu();
system("pause");
break;
case 6:
system("CLS");
obrombu();
system("pause");
break;
case 7:
system("CLS");
poltrapezu();
system("pause");
break;
case 8:
system("CLS");
obtrapezu();
system("pause");
break;
case 9:
system("CLS");
polrownolegloboku();
system("pause");
break;
case 10:
system("CLS");
obrownolegloboku();
system("pause");
break;
case 11:
system("CLS");
poltrojkata();
system("pause");
break;
case 12:
system("CLS");
poltrojkatarown();
system("pause");
break;
case 13:
system("CLS");
polkola();
system("pause");
break;
case 14:
system("CLS");
obkola();
system("pause");
break;
}
}
};
void podmenu2()
{
int choice;
while(choice != 0)
{
system("CLS");
cout << "\n\n\t\t'1' - Pole Stożka ";
cout << "\n\n\t\t'2' - Pole Kuli";
cout << "\n\n\t\t'3' - Pole Walca";
cout << "\n\n\t\t'0' - Do menu głównego\n\n\t\t";
cout << ">>";
cin >> choice;
cin.ignore();
switch(choice)
{
case 1:
system("CLS");
polstozek();
system("pause");
break;
case 2:
system("CLS");
polkuli();
system("pause");
break;
case 3:
system("CLS");
polwalec();
system("pause");
break;
}
}
};
void podmenu3()
{
int choice;
while(choice != 0)
{
system("CLS");
cout << "\n\n\t\t'1' - Silnia ";
cout << "\n\n\t\t'2' - Wkrotce";
cout << "\n\n\t\t'3' - Wkrotce";
cout << "\n\n\t\t'0' - Do menu głównego\n\n\t\t";
cout << ">>";
cin >> choice;
cin.ignore();
switch(choice)
{
case 1:
system("CLS");
silnia();
system("pause");
break;
}
}
};
void menu()
{
int choice;
while(choice != 0)
{
system("CLS");
cout << "\n\n\t\t'1' - Figury płaskie";
cout << "\n\n\t\t'2' - Bryły obrotowe";
cout << "\n\n\t\t'3' - Prostopadłościan";
cout << "\n\n\t\t'4' - Sześcian";
cout << "\n\n\t\t'5' - Graniastosłupy";
cout << "\n\n\t\t'6' - Ostrosłupy";
cout << "\n\n\t\t'7' - Inne działania matematyczne";
cout << "\n\n\t\t'0' - Zakończ program\n\n\t\t";
cout << ">>";
cin >> choice;
cin.ignore();
switch(choice)
{
case 1:
podmenu1();
system("pause");
break;
case 2:
podmenu2();
system("pause");
break;
case 3:
system("CLS");
polprostopadloscian();
system("pause");
break;
case 4:
system("CLS");
polszescian();
system("pause");
break;
case 5:
system("CLS");
polgraniastoslupu();
system("pause");
break;
case 6:
system("CLS");
polostroslup();
system("pause");
break;
case 7:
podmenu3();
system("pause");
break;
}
}
};
int main()
{
menu();
getch();
system("pause");
}
Z góry dziękuje za pomoc!