Vrste korisnički definiranih funkcija u C ++

U ovom vodiču naučit ćete o različitim pristupima kojima možete riješiti jedan problem pomoću funkcija.

Za bolje razumijevanje argumenata i povrat u funkcijama, korisnički definirane funkcije mogu se kategorizirati kao:

  • Funkcija bez argumenta i bez povratne vrijednosti
  • Funkcija bez argumenta, ali povratne vrijednosti
  • Funkcija s argumentom, ali nema povratnu vrijednost
  • Funkcija s argumentom i povratnom vrijednošću

Razmotrimo situaciju u kojoj morate provjeriti prost broj. Ovaj se problem u nastavku rješava izradom korisnički definirane funkcije na 4 različita načina kako je gore spomenuto.

Primjer 1: Nema proslijeđenih argumenata i nema povratne vrijednosti

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

U gornjem programu, prime()poziva se iz main () bez argumenata.

prime() uzima pozitivni broj od korisnika i provjerava je li broj prost broj ili nije.

Budući da je vrsta povrata prime()is void, funkcija se ne vraća.

Primjer 2: Nisu proslijeđeni argumenti, već povratna vrijednost

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

U gornjem programu prime()funkcija se poziva iz main()argumenta bez argumenata.

prime()uzima pozitivan cijeli broj od korisnika. Budući da je povratni tip funkcije an int, on vraća uneseni broj od korisnika natrag pozivajućoj main()funkciji.

Zatim se provjerava je li broj prost ili nije u glavnom () i ispisuje se na zaslon.

Primjer 3: Argumenti proslijeđeni, ali nemaju povratnu vrijednost

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

U gore navedenom programu od korisnika se prvo traži pozitivan broj koji je pohranjen u varijablu num.

Zatim se num prenosi prime()funkciji gdje se provjerava i ispisuje bez obzira je li broj prost ili nije.

Budući da je vrsta povrata prime()a void, funkcija se ne vraća.

Primjer 4: Prošli argumenti i povratna vrijednost.

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

U gore navedenom programu od korisnika se traži pozitivan cijeli broj koji se pohranjuje u varijablu num.

Zatim numse prosljeđuje funkciji u prime()kojoj se provjerava je li broj prost ili nije.

Budući da je vrsta povrata prime()an int, 1 ili 0 vraća se main()pozivajućoj funkciji. Ako je broj prost broj, vraća se 1. Ako nije, vraća se 0.

Povratak u main()funkciju, vraćeni 1 ili 0 pohranjuju se u zastavicu varijable, a odgovarajući tekst ispisuje se na zaslon.

Koja je metoda bolja?

Sva gore navedena četiri programa daju iste rezultate i svi su tehnički ispravni programi.

Ne postoji čvrsto i brzo pravilo o odabiru metode.

Određena metoda odabire se ovisno o situaciji i načinu na koji želite riješiti problem.

Zanimljivi članci...