Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Muasir proq dil C++.doc
Скачиваний:
15
Добавлен:
01.05.2025
Размер:
7 Мб
Скачать
☆

6.9. Funksiyadan qiymətin qaytarılması

Parametrlər çağırılan funksiyanın qiymətlərinin ötürül­mə­si üçün istifadə olu­nur. Qaytarılan qiymət isə çagırılan funk­si­ya­dan qiy­mət­lə­ri onu çağıran funksiyaya ötürməyə xidmət edir.

Məsələn, əvvəlki proqramda AddNumbers funksiyası üç pa­ra­­metrə malik idi: ilk ikisi – toplanan ədədlər və üçüncüsü – onların cəmi.

Üçüncü parametri yox etməklə və onu funksiyanın qay­tar­dığı qiymətlə əvəz etməklə əvvəlki proqramı yax­şı­laş­dır­maq olar:

# include <inter>

using namespace std;

int AddNumbers (int, int);

int main()

{

int firstnum, secondnum, sum=0;

cout <<”Enter first number:”;

cin >>firstnum;

cout<<”Enter second number:”;

cin >>secondnum;

sum = AddNumbers(firstnum, secondnum);

cout <<firstnum<<”+”<<secondnum<<”=”<<sum;

return 0;

}

int AddNumbers(int x,int y)

{

return x+y;

}

Burada funksiyanın çağırılması mənimsətmə opera­to­run­dan sağda yerləşir. Mənimsətmə operatorunun solunda yer­lə­şən dəyişənin tipi funksiyanın qaytarılan tipi ilə eyni ol­ma­lıdır. Iş prinsipi ondan ibarətdir ki, funksiyanın çağı­rıl­ma­sından qaytarılan qiymət mənimsətmə operatorundan sol­da yerləşən sum dəyişəninə mənimsədilir:

sum = AddNumbers(firstnum, secondnum);

funksiyanın qaytarılan x+y qiyməti

return x+y;

operatorunun yerinə yetirilməsindən sonra main funksi­ya­sın­da­kı sum dəyişəninə mənimsədilir.

Qeyd edək ki, funksiyaya parametr olaraq bir neçə qiy­mət qaytarmaq olmaz. Bunu etmək üçün massivləri, struk­tur­ları və sinifləri bilmək lazımdır.

Misal.6.1. Altproqramlardan istifadə edilməklə onluq say siste­mində verilmiş 255 ədədinin digər say sistemlərində ya­zı­lışını təsvir edən proqram (Standart C – də).

# include <stdlib.h>

# include <stdio.h>

void itab(int n, char s[], int b);

void reverse(char s[]);

int main(void) {

char buffer[10];

int i;

for ( i = 2; i <= 20; ++i ) {

itab(255, buffer, i);

printf("onluq say siteminde 255 esasi %-2d -say sistemin­de­:­ %s­\n", i, buffer);

}system("PAUSE");

return 0; }

void itab(int n, char s[], int b) {

static char digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

int i, sign;

if ( b < 2 || b > 36 ) {

fprintf(stderr, "EX3_5: Cannot support base %d\n", b);

exit(EXIT_FAILURE); }

if ((sign = n) < 0)

n = -n;

i = 0;

do {

s[i++] = digits[n % b];

} while ((n /= b) > 0);

if (sign < 0)

s[i++] = '-';

s[i] = '\0';

reverse(s); }

/* Reverses string s[] in place */

void reverse(char s[]) {

int c, i, j;

for ( i = 0, j = strlen(s)-1; i < j; i++, j--) {

c = s[i];

s[i] = s[j];

s[j] = c;

}

}

Alınmış nəticə:

onluq say siteminde 255 esasi 2 -say sisteminde: 11111111

onluq say siteminde 255 esasi 3 -say sisteminde: 100110

onluq say siteminde 255 esasi 4 -say sisteminde: 3333

onluq say siteminde 255 esasi 5 -say sisteminde: 2010

onluq say siteminde 255 esasi 6 -say sisteminde: 1103

onluq say siteminde 255 esasi 7 -say sisteminde: 513

onluq say siteminde 255 esasi 8 -say sisteminde: 377

onluq say siteminde 255 esasi 9 -say sisteminde: 313

onluq say siteminde 255 esasi 10 -say sisteminde: 255

onluq say siteminde 255 esasi 11 -say sisteminde: 212

onluq say siteminde 255 esasi 12 -say sisteminde: 193

onluq say siteminde 255 esasi 13 -say sisteminde: 168

onluq say siteminde 255 esasi 14 -say sisteminde: 143

onluq say siteminde 255 esasi 15 -say sisteminde: 120

onluq say siteminde 255 esasi 16 -say sisteminde: FF

onluq say siteminde 255 esasi 17 -say sisteminde: F0

onluq say siteminde 255 esasi 18 -say sisteminde: E3

onluq say siteminde 255 esasi 19 -say sisteminde: D8

onluq say siteminde 255 esasi 20 -say sisteminde: CF

Misal 6.2. C(m,n) funksiyasını rekursiv üsulla hesablayan proq­­ram yazın. Binomial əmsalların rekursiv hesablanması üçün

düs­turundan istifadə edin.

#include <cstdlib>

#include <iostream>

using namespace std;

long C(long n,long k) {

if(k == 0 || n == k) return 1;

return C(n - 1, k - 1) + C(n - 1, k);

}

int main() {

long n, k;

scanf ("%ld%ld", &n, &k);

printf ("%ld\n ", C(n, k));

system("PAUSE");

return EXIT_SUCCESS;

}

Nəticə:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]