Vrste uporabniško določenih funkcij v C ++

V tej vadnici boste spoznali različne pristope, ki jih lahko uporabite za reševanje ene same težave s pomočjo funkcij.

Za boljše razumevanje argumentov in vrnitev funkcij lahko uporabniško določene funkcije kategoriziramo kot:

  • Funkcija brez argumenta in brez vrnjene vrednosti
  • Funkcija brez argumenta, ampak z vrnjeno vrednostjo
  • Funkcija z argumentom, vendar brez vrnjene vrednosti
  • Funkcija z argumentom in vrnjeno vrednostjo

Razmislite o situaciji, v kateri morate preveriti praštevilo. Ta težava je spodaj rešena tako, da uporabniško definirana funkcija deluje na 4 različne načine, kot je navedeno zgoraj.

Primer 1: Ni posredovanih argumentov in ni vrnjene vrednosti

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

V zgornjem programu prime()je poklican iz main () brez argumentov.

prime() od uporabnika vzame pozitivno število in preveri, ali je število prosto število.

Ker tip povratno prime()IS void, vrednost ni vrnil iz funkcije.

Primer 2: Niso posredovani nobeni argumenti, ampak vrnjena vrednost

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

V zgornjem programu se prime()funkcija pokliče iz main()brez argumentov.

prime()od uporabnika vzame pozitivno celo število. Ker je vrsta vrnitve funkcije an int, vrne vneseno številko uporabnika nazaj klicni main()funkciji.

Nato se v glavnem () preveri, ali je številka osnovna ali ne, in se natisne na zaslon.

Primer 3: Argumenti posredovani, vendar ne vrnjene vrednosti

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

V zgornjem programu se od uporabnika najprej zahteva pozitivno število, ki je shranjeno v spremenljivki num.

Nato se num posreduje prime()funkciji, kjer se preveri in natisne, ali je številka osnovna ali ne.

Ker je vrsta vrnitve prime()a void, funkcija ne vrne vrednosti.

Primer 4: Predani argumenti in vrnjena vrednost.

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

V zgornjem programu se od uporabnika zahteva pozitivno celo število, ki se shrani v spremenljivko num.

Nato numse posreduje funkciji, prime()pri kateri se preveri, ali je število glavno ali ne.

Ker je vrsta vrnitve prime()an int, 1 ali 0 se vrne main()klicni funkciji. Če je število prosto število, se vrne 1. V nasprotnem primeru se vrne 0.

Nazaj v main()funkciji se vrnjena 1 ali 0 shrani v spremenljivo zastavico in ustrezno besedilo se natisne na zaslon.

Katera metoda je boljša?

Vsi štirje zgornji programi dajejo enak izhod in vsi so tehnično pravilni programi.

Ni natančnega pravila, katero metodo je treba izbrati.

Določena metoda je izbrana glede na situacijo in način, kako želite rešiti težavo.

Zanimive Članki...