Potrzebuję pomocy. Napisałem program imitujący pracę robota (zadanie z Symfonii C++). Poprzednia wersja programu (wcześniejsze zadanie) było bez argumentu double dla funkcji, odpowiadającego za kąt ruchu poszczególnych części robota. Poprzedni program działał bez zarzutów. Ten działa jedynie, gdy tablica "czynnosci" jest wypełniona. Doszedłem do wniosku, że mam jakiś błąd w tym kawałku kodu, który odpowiada za przerwanie pętli jeżeli w bloku tablicy "czynnosci" jest 0
if(czynnosci[i]==0)
break;
Proszę o pomoc. Tutaj cały program.
#include <iostream>
using namespace std;
bool tulow_lewo(double stopnie)
{
cout << "Skret tulowia w lewo o " << stopnie << " stopni" << endl;
return true;
}
bool tulow_prawo(double stopnie)
{
cout << "Skret tulowia w prawo o " << stopnie << " stopni" << endl;
return true;
}
bool lstopa_przod(double stopnie)
{
cout << "Ruch lewej stopy w przod o " << stopnie << " stopni" << endl;
return true;
}
bool pstopa_przod(double stopnie)
{
cout << "Ruch prawej stopy w przod o " << stopnie << " stopni" << endl;
return true;
}
bool lstopa_tyl(double stopnie)
{
cout << "Ruch lewej stopy w tyl o " << stopnie << " stopni" << endl;
return true;
}
bool pstopa_tyl(double stopnie)
{
cout << "Ruch prawej stopy w tyl o " << stopnie << " stopni" << endl;
return true;
}
int main()
{
bool (*wsk[6])(double) = {&tulow_lewo, &tulow_prawo, &lstopa_przod,
&pstopa_przod, &lstopa_tyl, &pstopa_tyl};
double ruch[20];
int opcja;
int koniec=0;
double stopnie=0;
bool (*czynnosci[20])(double);
cout << "------------------------------------\n"
"######## STEROWANIE ROBOTEM ########\n"
"------------------------------------\n" << endl;
cout << "--------------- MENU ---------------\n"
"0 - ruch tulowia w lewo\n1 - ruch tulowia w prawo\n"
"2 - ruch lewej stopy w przod\n3 - ruch prawej stopy w przod\n"
"4 - ruch lewej stopy w tyl\n5 - ruch prawej stopy w tyl\n"
"6 - wykonac\n7 - koniec\n\n";
for (int i=0; i<20; i++)
{
cout << "Ktora akcje wykonac? ";
cin >> opcja;
if((opcja>=0) && (opcja<=5))
{
cout << "O ile stopni? ";
cin >> stopnie;
}
switch(opcja)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
czynnosci[i] = wsk[opcja];
ruch[i] = stopnie;
break;
case 6:
koniec=1;
break;
case 7:
exit(1);
default:
break;
}
if(koniec==1)
break;
}
for (int i=0; i<20; i++)
{
if(czynnosci[i]==0)
break;
czynnosci[i](ruch[i]);
}
system("pause");
return 0;
}