2012-12-02 1 views
-1

동일한 시간에 반복 기능을 사용하고 싶습니다. 문제가 있습니다.C++ - 되풀이

두 가지 기능이 있습니다. 각각은 동일한 헤더 파일의 다른 기능을 사용합니다. 그러나 위의 함수에서 아래의 함수를 사용하려면 오류가 있습니다. 나도 알아, 무슨 일이 있었는지는 모르겠지만 어떻게 고쳐야할지 모르겠다. 내 코드 :

하여 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

실제 오류는 무엇입니까? – mathematician1975

+1

오류에 관해 질문하는 경우 질문에 실제 오류를 포함하십시오. 오류를 수정하거나 편집하지 말고 곧바로 복사하여 붙여 넣으십시오. –

+0

나는'system ("exit")'이 당신이 기대하는 것을 할 것이라고 생각지 않는다. 그것은 당신의 응용 프로그램이 아니라'system()'함수를 실행중인 셸에서 빠져 나옵니다. 프로그램을 종료하려면'exit (0)'을 사용해야합니다. – Barmar

답변

1

첫째, 당신은 아마 찾고있는 단어는 "재귀"입니다. 이와 같이 정상적인 작동 중에 함수가 반복적으로 서로 호출하게되면 결국 스택 공간이 부족해질 수 있기 때문에 약간주의해야 할 수도 있습니다. 이것이 실제로 무엇을 의미하는지에 대한 자세한 설명은이 답변의 범위를 벗어나지 만이 경우 재귀가 아닌 일반적인 while 루프를 사용하는 것이 좋습니다.

둘째, 오류가 발생하는 경우 알려주십시오. 우리가 프로그램을 실행할 때 보게되는 것과 똑같은 오류가 나타날 것이라는 보장이 없기 때문에 우리를 추측하지 마십시오.

셋째, 사용중인 플랫폼과 컴파일러를 알려주십시오. 나는 당신이 창문을 사용하고 있다고 가정하고 있습니다, system("cls"), 그러나 다시 : 우리가 짐작하지 마십시오.

이제 실제 오류입니다. 내가 얻을이 :

당신이 실제로 정의되기 전에 menu 기능의 인터페이스를 설명하는 "기능 prototyp"입니다 무엇이 필요

test.h: In function ‘void down(int)’: test.h:30: error: ‘menu’ was not declared in this scope

. 그냥 down의 정의 위에

void menu(int); 

스틱, 당신은 컴파일 오류가 사라집니다 찾을 수 있습니다. 충분한 정보를 제공하지 않았기 때문에 응용 프로그램이 의도 한대로 실행되는지 여부는 알 수 없습니다.

+0

(덧붙여 사용했던 파일 이름 대신 _test.cpp_ 및 _test.h_을 사용했지만 코드는 변경되지 않았습니다.) – Rook

+0

고맙습니다. – sofalse