C ++ - 重现

时间:2012-12-02 09:51:02

标签: c++ function header recurrence

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

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

Main.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");
}

Incls.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);
}
}

1 个答案:

答案 0 :(得分:1)

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

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

第三,告诉我们您正在使用的平台和编译器。我假设你正在使用Windows system("cls"),但是再次:不要让我们猜测。

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

  

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

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

void menu(int);

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