Видове дефинирани от потребителя функции в C ++

В този урок ще научите за различни подходи, които можете да предприемете за решаване на един проблем с помощта на функции.

За по-добро разбиране на аргументите и връщането във функциите, дефинираните от потребителя функции могат да бъдат категоризирани като:

  • Функция без аргумент и без върната стойност
  • Функция без аргумент, но връщаща стойност
  • Функция с аргумент, но без върната стойност
  • Функция с аргумент и върната стойност

Помислете за ситуация, в която трябва да проверите просто число. Този проблем е решен по-долу чрез създаване на дефинирана от потребителя функция по 4 различни начина, както бе споменато по-горе.

Пример 1: Не са предадени аргументи и няма връщана стойност

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

В горната програма prime()се извиква от main () без аргументи.

prime() взема положителното число от потребителя и проверява дали числото е просто число или не.

Тъй като типът return на prime()is voidне се връща стойност от функцията.

Пример 2: Не са предадени аргументи, а връщана стойност

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

В горната програма prime()функцията се извиква от main()без аргументи.

prime()взема положително цяло число от потребителя. Тъй като типът на връщане на функцията е an int, той връща въведеното число от потребителя обратно към повикващата main()функция.

След това дали номерът е прост или не се проверява в самия main () и се отпечатва на екрана.

Пример 3: Аргументи предадени, но няма връщана стойност

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

В горната програма първо се иска от потребителя положително число, което се съхранява в променливата num.

След prime()това числото се предава на функцията, където, независимо дали числото е просто или не, се проверява и отпечатва.

Тъй като типът на връщане prime()е a void, от функцията не се връща стойност.

Пример 4: Изпратени аргументи и възвръщаема стойност.

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

В горната програма от потребителя се иска положително цяло число и се съхранява в променливата num.

След това numсе предава на функцията, prime()където се проверява дали числото е просто или не.

Тъй като типът на връщане на prime()е int, 1 или 0 се връща към main()извикващата функция. Ако числото е просто число, се връща 1. Ако не, се връща 0.

Обратно във main()функцията, върнатите 1 или 0 се съхраняват в знамето на променливата и съответният текст се отпечатва на екрана.

Кой метод е по-добър?

И четирите програми по-горе дават еднакви резултати и всички са технически правилни програми.

Няма строго правило за това кой метод трябва да бъде избран.

Конкретният метод се избира в зависимост от ситуацията и начина, по който искате да разрешите проблем.

Интересни статии...