Typer av användardefinierade funktioner i C ++

I den här handledningen lär du dig om olika tillvägagångssätt du kan ta för att lösa ett enda problem med hjälp av funktioner.

För bättre förståelse av argument och avkastning i funktioner kan användardefinierade funktioner kategoriseras som:

  • Funktion utan argument och inget returvärde
  • Funktion utan argument utan returvärde
  • Funktion med argument men inget returvärde
  • Funktion med argument och returvärde

Tänk på en situation där du måste kontrollera primtal. Detta problem löses nedan genom att göra användardefinierad funktion på fyra olika sätt som nämnts ovan.

Exempel 1: Inga argument överförda och inget returvärde

 # include using namespace std; void prime(); int main() ( // No argument is passed to prime() prime(); return 0; ) // Return type of function is void because value is not returned. void prime() ( int num, i, flag = 0; cout <> num; for(i = 2; i <= num/2; ++i) ( if(num % i == 0) ( flag = 1; break; ) ) if (flag == 1) ( cout << num << " is not a prime number."; ) else ( cout << num << " is a prime number."; ) ) 

I ovanstående program, prime()kallas från main () utan argument.

prime() tar det positiva talet från användaren och kontrollerar om numret är ett primtal eller inte.

Eftersom returtypen prime()är void, returneras inget värde från funktionen.

Exempel 2: Inga argument skickade men ett returvärde

 #include using namespace std; int prime(); int main() ( int num, i, flag = 0; // No argument is passed to prime() num = prime(); for (i = 2; i <= num/2; ++i) ( if (num%i == 0) ( flag = 1; break; ) ) if (flag == 1) ( cout<  n; return n; ) 

I ovanstående program prime()kallas funktion från main()utan argument.

prime()tar ett positivt heltal från användaren. Eftersom funktionens intreturtyp är en , returnerar det inmatade numret från användaren tillbaka till den anropande main()funktionen.

Om siffran är prim eller inte kontrolleras sedan i huvudet () och skrivs ut på skärmen.

Exempel 3: Argument passerade men inget returvärde

 #include using namespace std; void prime(int n); int main() ( int num; cout <> num; // Argument num is passed to the function prime() prime(num); return 0; ) // There is no return value to calling function. Hence, return type of function is void. */ void prime(int n) ( int i, flag = 0; for (i = 2; i <= n/2; ++i) ( if (n%i == 0) ( flag = 1; break; ) ) if (flag == 1) ( cout << n << " is not a prime number."; ) else ( cout << n << " is a prime number."; ) )

I ovanstående program frågas först positivt tal från användaren som lagras i variabeln num.

Därefter skickas num till prime()funktionen där, oavsett om numret är primt eller inte är kontrollerat och skrivet ut.

Eftersom avkastningen typ av prime()är en void, är inget värde returneras från funktionen.

Exempel 4: Godkända argument och ett returvärde.

 #include using namespace std; int prime(int n); int main() ( int num, flag = 0; cout <> num; // Argument num is passed to check() function flag = prime(num); if(flag == 1) cout << num << " is not a prime number."; else cout<< num << " is a prime number."; return 0; ) /* This function returns integer value. */ int prime(int n) ( int i; for(i = 2; i <= n/2; ++i) ( if(n % i == 0) return 1; ) return 0; ) 

I programmet ovan frågas ett positivt heltal från användaren och lagras i variabeln num.

Därefter numskickas till funktionen prime()där, oavsett om antalet är primt eller inte är markerat.

Eftersom returtypen prime()är an int, returneras 1 eller 0 till main()anropsfunktionen. Om talet är ett primtal, returneras 1. Om inte, returneras 0.

Tillbaka i main()funktionen sparas den returnerade 1 eller 0 i variabelflaggan och motsvarande text skrivs ut på skärmen.

Vilken metod är bättre?

Alla fyra program ovan ger samma resultat och alla är tekniskt korrekta program.

Det finns ingen hård och snabb regel om vilken metod som ska väljas.

Den specifika metoden väljs beroende på situationen och hur du vill lösa ett problem.

Intressanta artiklar...