-1

我想同时使用两个重复的函数,我有一个问题:

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

主要.cpp:

include <iostream>
#include <cstdlib>
#include <C:\Users\Natch\Documents\CPP\Calc\incls.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);
}
}
4

1 回答 1

1

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

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

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

现在,实际的错误。我明白了:

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

您需要的是一个“函数原型”,menu它在实际定义函数之前描述了函数的接口。只要坚持

void menu(int);

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

于 2012-12-02T10:01:13.020 回答