【问题标题】:C++ - RecurrenceC++ - 重复
【发布时间】:2012-11-20 00:40:03
【问题描述】:

我想同时使用两个循环函数,我有一个问题:

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

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

【问题讨论】:

  • 你得到的实际错误是什么?
  • 如果您询问有关您遇到的错误的问题,请在您的问题中包含实际错误。不要修改或编辑错误,直接复制粘贴即可。
  • 我不认为system("exit") 会达到你的预期。它从运行system() 函数的shell 中退出,而不是从您的应用程序中退出。你应该使用exit(0) 来终止你的程序。
  • C:\Users\Natch\Documents\CPP\Calc\incls.h||在函数'void down(int)'中:| C:\Users\Natch\Documents\CPP\Calc\incls.h|28|错误:“菜单”未在此范围内声明| ||=== 构建完成:1 个错误,0 个警告 ===|

标签: c++ function header recurrence


【解决方案1】:

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

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

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

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

test.h:在函数“void down(int)”中: test.h:30: 错误:“菜单”未在此范围内声明

您需要的是一个“函数原型”,它在实际定义menu 函数之前对其接口进行描述。坚持下去

void menu(int);

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

【讨论】:

  • (顺便说一下,我用 test.cpptest.h 代替了你使用的文件名,但代码没有改变)跨度>
猜你喜欢
  • 2020-10-18
  • 1970-01-01
  • 2011-04-27
  • 2013-04-01
  • 2010-11-30
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多