Witam,mam problem dotyczący funkcji w programowaniu obiektowym c++
Wszystko się kompiluje aczkolwiek podczas interakcji z programem funkcje się nie wykonują i są pomijane
Jak prawidłowo powienien działać kod:
Program pyta które do którego zagadnienia przejść :
-fibonnaci,gdy wpisze 1
-euler,gdy wpisze 2
-pitagoras,gdy wpisze 3
po wpisaniu któryś z wartości automatycznie powinna odpalić się funkcja,która będzie kazała wpisać daną ilość liczb do tablicy typu deque,a po tej funkcji program zadaje pytanie czy ma obliczyc wynik dla danego ciagu
jesli wpisze 0 to nie a jak 1 to obliczy
zadna z funkcji sie nie wywoluje,probowalem juz na pare sposobow.
Bardzo prosiłbym o pomoc
Ponizej kod
#include <iostream>
#include <deque>
using namespace std;
class Start
{
friend class Fibonnaci;
friend class Euler;
friend class Pitagoras;
private:
std::deque<int>liczba2;
std::deque<int>n2;
std::deque<int>a2;
std::deque<int>b2;
public:
void wybor();
void wybor_fibonnaci();
void wybor_euler();
void wybor_pitagoras();
Start(std::deque<int>liczba,std::deque<int>n2,std::deque<int>a2,std::deque<int>b2);
};
class Fibonnaci:public Start
{
public:
void fibonnaci_dodaj(std::deque<int>liczba1);
void fibonnaci_oblicz(std::deque<int>liczba1);
};
class Euler:public Start
{
public:
void euler_dodaj(std::deque<int>liczba);
void euler_oblicz(std::deque<int>liczba);
};
class Pitagoras:public Start
{
public:
void pitagoras_dodaj(std::deque<int>bok1,std::deque<int>bok2);
void pitagoras_oblicz(std::deque<int>bok1,std::deque<int>bok2);
};
#include <iostream>
#include <math.h>
#include <windows.h>
#include "headers.h"
using namespace std;
void Start::wybor() {
int a;
cout << "wybierz opcje wyboru\n";
cout << "--------------------" << endl;
cout << endl;
cout << "Wpisz 1 aby przejsc do fibonnaciego" << endl;
cout << "Wpisz 2 aby przejsc do Eulera" << endl;
cout << "Wpisz 3 aby przejsc do Pitagorasa" << endl;
cout << endl;
cout << "--------------------" << endl;
do {
cin >> a;
if(a<1 || a>3) {
cout << "Podaj prawidlowa liczbe!"<< endl;
}
} while (a<1 || a>3);
switch(a) {
case 1 : wybor_fibonnaci();
break;
case 2 : wybor_euler();
break;
case 3 : wybor_pitagoras();
break;
}
}
void Start::wybor_fibonnaci() {
Fibonnaci fibonnaci_dodaj(Start liczba2);
int wybor_funkcji;
cout << "Czy chcesz otrzymac obliczenia dla wybranej przez ciebie liczby w nastepnym kroku? (wpisz 1 jesli tak lub 0 jesli nie)";
cout << endl;
cin >> wybor_funkcji;
if (wybor_funkcji == 1) {
Fibonnaci fibonnaci_oblicz(Start liczba2);
}
else if (wybor_funkcji == 0) {
system("cls");
wybor();
}
}
void Start::wybor_euler() {
Euler euler_dodaj(Start n2);
int wybor_funkcji;
cout << "Czy chcesz otrzymac obliczenia dla wybranej przez ciebie liczby w nastepnym kroku?";
cin >> wybor_funkcji;
if (wybor_funkcji == 1) {
Euler euler_oblicz(Start n2);
}
else if (wybor_funkcji == 0) {
system("cls");
wybor();
}
}
void Start::wybor_pitagoras() {
Pitagoras pitagoras_dodaj(Start a2,Start b2);
int wybor_funkcji;
cout << "Czy chcesz otrzymac obliczenia dla wybranej przez ciebie liczby w nastepnym kroku?";
cin >> wybor_funkcji;
if (wybor_funkcji == 1) {
Pitagoras pitagoras_oblicz(Start a2,Start b2);
}
else if (wybor_funkcji == 0) {
system("cls");
wybor();
}
}
void Fibonnaci::fibonnaci_dodaj(std::deque<int>liczba1) {
int wybor;
int dlugosc;
int a;
cout << "Podaj dlugosc tablicy";
cin >> dlugosc;
liczba2.get_allocator().allocate(dlugosc);
do {
cout << "Chcesz dac liczby do tylu kolejki czy na sam jej przod? (wybierz 1 jesli chcesz pchnac do tylu lub 2 jesli do przodu) " << endl;
cin >> wybor;
} while(wybor > 2 || wybor < 1) ;
if (wybor == 1) {
cout << "Podaj liczby ktore chcesz pchnąć na tył kolejki" << endl;
for (int i = 0;i<dlugosc;i++) {
cin >> a;
liczba2.push_back(a);
}
}
else if (wybor == 2) {
for (int i = 0;i<dlugosc;i++) {
cin >> a;
liczba2.push_front(a);
}
}
}
void Euler::euler_dodaj(std::deque<int>liczba) {
int wybor;
int dlugosc;
int a;
cout << "Podaj dlugosc tablicy " << endl;
cin >> dlugosc;
n2.get_allocator().allocate(dlugosc);
do {
cout << "Chcesz dac liczby do tylu kolejki czy na sam jej przod? (wybierz 1 jesli chcesz pchnac do tylu lub 2 jesli do przodu) " << endl;
cin >> wybor;
} while(wybor > 2 || wybor < 1) ;
if (wybor == 1) {
cout << "Podaj liczby ktore chcesz pchnac na tyl kolejki" << endl;
for (int i = 0;i<dlugosc;i++) {
cin >> a;
n2.push_back(a);
}
}
else if (wybor == 2) {
for (int i = 0;i<dlugosc;i++) {
cin >> a;
n2.push_front(a);
}
}
}
void Pitagoras::pitagoras_dodaj(std::deque<int>bok1,std::deque<int>bok2) {
int wybor_liczby;
int dlugosc;
int liczby;
cout << "Podaj dlugosc tablicy";
cin >> dlugosc;
a2.get_allocator().allocate(dlugosc);
b2.get_allocator().allocate(dlugosc);
do {
cout << "Chcesz dac liczby do tylu kolejki czy na sam jej przod? (wybierz 1 jesli chcesz pchnac do tylu lub 2 jesli do przodu) " << endl;
cin >> wybor_liczby;
} while(wybor_liczby > 2 || wybor_liczby < 1) ;
if (wybor_liczby == 1) {
cout << "Podaj liczby ktore chcesz pchnąć na tył kolejki dla pierwszego boku" << endl;
for (int i = 0;i<dlugosc;i++) {
cin >> liczby;
a2.push_back(liczby);
}
cout << "Podaj liczby,które chcesz pchnąć na tył kolejki dla drugiego boku" << endl;
}
else if (wybor_liczby == 2) {
cout << "Podaj liczby ktore chcesz pchnąć na przód kolejki dla pierwszego boku" << endl;
for (int i = 0;i<dlugosc;i++) {
cin >> liczby;
a2.push_front(liczby);
}
cout << "Podaj liczby ktore chcesz pchnąć na przód kolejki dla drugiego boku" << endl;
for (int i = 0;i<dlugosc;i++) {
cin >> liczby;
a2.push_front(liczby);
}
}
Start wybor();
}
void Fibonnaci::fibonnaci_oblicz(std::deque<int>liczba1) {
int dlugosc = liczba2.size();
int wynik;
int wybor_liczby;
cout << "Wybierz Która liczbę chcesz obliczyć dla ciągu fibonnaciego\n";
do {
cin >> wybor_liczby;
}while(wybor_liczby> dlugosc);
if (liczba2.at(wybor_liczby) > 1) {
wynik = (liczba2.at(wybor_liczby) - 1) + (liczba2.at(wybor_liczby) - 2);
}
else if (liczba2.at(wybor_liczby) == 1) {
wynik = 1;
}
else if (liczba2.at(wybor_liczby) == 0) {
wynik = 0;
}
cout << "Wynik to: " << wynik << endl;
Start wybor();
}
void Euler::euler_oblicz(std::deque<int>liczba) {
int dlugosc = n2.size();
int wynik;
int wybor_liczby;
cout << "Wybierz Która liczbę chcesz obliczyć dla ciągu Eulera\n";
do {
cin >> wybor_liczby;
}while(wybor_liczby>dlugosc);
wynik = pow(n2.at(wybor_liczby),2) - n2.at(wybor_liczby) + 41;
cout << "Wynik dla ciagu eulera to: " << wynik << endl;
Start wybor();
}
void Pitagoras::pitagoras_oblicz(std::deque<int>bok1,std::deque<int>bok2) {
int dlugosc = a2.size();
int wynik;
int wybor_liczby;
cout << "Wybierz Która liczbę chcesz obliczyć dla Pitagorasa\n";
do {
cin >> wybor_liczby;
}while(wybor_liczby > dlugosc);
wynik = pow(a2.at(wybor_liczby),2) + pow(b2.at(wybor_liczby),2);
cout << "Przeciwprostokątna wynosi: " << wynik << endl;
Start wybor();
}
Start::Start(std::deque<int>liczba0,std::deque<int>n20,std::deque<int>a20,std::deque<int>b20) {
liczba2 = liczba0;
n2 = n20;
a2 = a20;
b2 = b20;
}
#include <iostream>
#include "headers.h"
using namespace std;
std::deque<int>Fibo;
std::deque<int>Eul;
std::deque<int>A_p;
std::deque<int>B_p;
int main()
{
Start p1(Fibo,Eul,A_p,B_p);
p1.wybor();
return 0;
}