Member 13139035 Ответов: 2

Как вызвать основную часть функции в другой функции?


вот код m, где я хочу повторно вызвать основную функцию в tabletfind (). что я могу для этого сделать?

Что я уже пробовал:

#include <iostream>
#include <string>
using namespace std;


int tabletfind(int x){
	if(x%2==0)
	{
		cout<<"Searching for a solution within 21 moves..."<<endl;
		cout<<"No solution found within 21 moves. Sorry."<<endl;
		string ans;
	cout<<"Would you like to try again [Y/N]?";
      cin>>ans;
     if(ans=="y" || ans=="Y"){

    //here i need to call main function part again what should i do? i can't understand
      }
	  	else if (ans=="n" || ans=="N"){
		
            exit;}
           }
}

}
	int main() {
	int number;
	
	tryagain:
	cout<<"How many tablets are you starting with ? ";
	cin>>number;
	 
	if(number>0 && number<=10000){
	 tabletfind(number);
    }
        
else   {cout<<"Number of Tablets must be greater than 0 and no more than 10000"<<endl;
	              goto tryagain;}
    	return 0;
}

2 Ответов

Рейтинг:
1

Patrice T

Цитата:
вот код m, где я хочу повторно вызвать основную функцию в tabletfind (). что я могу для этого сделать?

Программа на языке Си никогда не вызывает основную функцию, несмотря ни на что.
Вы должны организовать свой другой путь.

Вы должны подумать об использовании цикла, чтобы избежать goto.


Рейтинг:
0

CHill60

Организуйте свою программу так, чтобы main () вызывала другую функцию, которую вы затем можете вызвать снова из любого другого места, например

#include <iostream>
#include <string>
using namespace std;

int aFunction()
{
	int number;

	tryagain:
	cout<<"How many tablets are you starting with ? ";
	cin>>number;

	if(number>0 && number<=10000)
	{
		tabletfind(number);
	}
	else {cout<<"Number of Tablets must be greater than 0 and no more than 10000"<<endl;
	goto tryagain;
	}
	return 0;
}

int tabletfind(int x)
{
	if(x%2==0)
	{
		cout<<"Searching for a solution within 21 moves..."<<endl;
		cout<<"No solution found within 21 moves. Sorry."<<endl;
		string ans;
		cout<<"Would you like to try again [Y/N]?";
		cin>>ans;
		if(ans=="y" || ans=="Y")
		{

		        x = AFunction()		}
		else if (ans=="n" || ans=="N")
		{
			exit;
		}
	}
 }
 
 int main() 
 {
	int number;
	number = aFunction();
 } 

Пожалуйста, обратите внимание, что я не тестировал ничего из вышеперечисленного, и, возможно, у меня из глаз упала слеза, когда я копировал goto.


Rick York

Код для процедуры windows по умолчанию в версии v3. 1 был опубликован в книге много лет назад, и в нем был goto. Целевой меткой был IcantBelieveIactuallyUsedAgoto. правдивая история. :)

CHill60

: смех: это заставило меня чувствовать себя лучше, спасибо!