C++ - Recurrence

C++ - Recurrence

本文关键字:Recurrence C++      更新时间:2023-10-16

我想同时使用两个递归函数,但我有一个问题:

我有两个功能。每个都使用来自同一头文件的其他函数。但当我想在上面的函数中使用下面的函数时,我有一个错误。我知道,发生了什么,但我不知道如何修复它。我的代码:

Main.cpp:

include <iostream>
#include <cstdlib>
#include <C:UsersNatchDocumentsCPPCalcincls.h>
using namespace std;
//Global vars

//Global functions


//Main program

int main() {
menu(1);
system("pause");
}

包括h:

#ifndef INCLS_H_INCLUDED
#define INCLS_H_INCLUDED

#endif // INCLS_H_INCLUDED
#include <iostream>
#include <cstdlib>
using namespace std;
//Vars
int a, b, func, sa, ctrl;
long double sum, sqrt;
//Voids
void down(int func) {
if (func < 6) {
cout << "Wprowadz pierwszy skladnik dzialania:" << endl;
cin >> a;
cout << "Wprowadz drugi skladnik dzialania:" << endl;
cin >> b;
switch(func){
case 1:
sum = a+b;
cout << "Wynik wynosi: " << sum << endl;
menu(2);
break;
case 2:
sum = a-b;
cout << "Wynik wynosi: " << sum << endl;
break;
case 3:
sum = a*b;
cout << "Wynik wynosi: " << sum << endl;
break;
case 4:
sum = a/b;
cout << "Wynik wynosi: " << sum << endl;
break;
case 5:
sum = a%b;
cout << "Wynik wynosi: " << sum << endl;
break;
}
}else if (func == 6)
{
cout << "Podaj ilosc liczb do obliczenia sredniej:" << endl;
cin >> sa;
}else if (func == 7)
{
cout << "Podaj liczbe do wyciagniecia pierwiastka:" << endl;
cin >> a;
}else if (func == 8)
{
cout << "Podaj liczbe do wyciagniecia potegi:" << endl;
cin >> a;
}else if (func== 9)
{
system("exit");
}
}
void menu(int ctrl) {
if (ctrl==1){
system("cls");
system("color 06");
cout << "Kalkulator" << endl;
cout << "Wybierz funkcje: " << endl;
cout << "1.Dodawanie" << endl;
cout << "2.Odejmowanie" << endl;
cout << "3.Mnozenie" << endl;
cout << "4.Dzielenie" << endl;
cout << "5.Reszta z dzielenia" << endl;
cout << "6.Srednia arytmetyczna" << endl;
cout << "7.Pierwiastek kwadratowy" << endl;
cout << "8.Potega n^2" << endl;
cout << "9.Wyjscie" << endl;
cout << "Twoj wybor:" << endl;
cin >> func;
down(func);
}else if (ctrl==2){
cout << endl;
cout << endl;
cout << endl;
cout << endl;
menu(1);
}
}

首先,您可能要查找的单词是"递归"。在这里,您可能需要稍微小心一点,因为在这样的正常操作中,让函数反复调用对方,最终可能会耗尽堆栈空间。关于这实际上意味着什么的更详细的解释超出了这个答案的范围,但在这种情况下,您可能最好使用传统的while循环,而不是递归。

第二,当你遇到错误时,请告诉我们它是什么!不要让我们猜测,尤其是因为无法保证您看到的错误与我们运行程序时看到的错误相同。

第三,告诉我们您使用的是什么平台和编译器。我假设您使用的是windows,给定system("cls"),但再次强调:不要让我们猜测。

现在,实际错误。我得到这个:

test.h:在函数"void down(int)"中:test.h:30:错误:未在此范围中声明"menu">

您需要的是一个"函数原型",它在实际定义menu函数之前描述它的接口。只需粘贴

void menu(int);

down的定义之上,您会发现编译错误消失了。之后应用程序是否按预期运行我不知道,因为您没有提供足够的信息!

相关文章: