Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OAIP-_zadachi_shrift_5.doc
Скачиваний:
35
Добавлен:
11.05.2015
Размер:
178.69 Кб
Скачать

Написать рекурсивную функцию для

нахождения факториала числа.

#include < conio.h>

#include < iostream.h>

int fact(int);

int main(int argc, char* argv[])

{ int n;

cout << "vod znach. Fact-la, n: ";

cin >> n;

cout << " Fact-l chisla "<< n << " raven: " << fact(n) << endl;

getch();

return 0;

}

int fact(int n)

{ if (n<=0) return 1;

else return n*fact(n-1);

}

Написать рекурсивную функцию для нах-дния

MAX, MIN общего делителя.

Используя следующее соотношение:

если В /А нацело, то НОД(А,В)=А, иначе НОД(А,В)=НОД(В%А,А).

#include <iostream.h>

#include <conio.h>

int nod(int, int);

Int main(int argc, char* argv[])

{ int a, b;

cout << "Vvedite chislo A: ";

cin >> a;

cout << "Vvedite chislo B: ";

cin >> b;

cout << "HOD(" << a << "," << b << ")=" << nod(a,b) << endl;

getch();

return 0;

}

int nod(int a, int b)

{ if (b%a==0) return a;

Else return nod(b%a,a);

}

Написать рекурсивную функцию для нахождения

MAX числа массива.

#include <conio.h>

#include <iostream.h>

int max(int);

int a[20];

Int main(int argc, char* argv[])

{ int n, i;

cout << "Vvedite chislo elementov i: ";

cin >> n;

for (i=0; i<n; i++)

{ cout << "Vvedite element a[i]: ";

cin >> a[i];

}

cout << "max element =:"<< max(i) <<endl;

getch();

return 0;

}

int max(int n)

{ if (n==0) return a[0];

else

{ int m=max(n-1);

if (a[n]>m) return a[n];

else return m;

}

}

Написать рек-ю ф-ю для нахождения чисел Фибоначчи, к-е определяются следующим

Рек-ым соотношением: B0=0, B1=1, Bn=B(n-1)+B(n-2).

#include <conio.h>

#include <iostream.h>

int fib(int);

Int main(int argc, char* argv[])

{ int n;

cout << "Vvedite chislo: ";

cin >> n;

cout << "Chislo Fibonachi ravno: " << fib(n) << endl;

getch();

return 0;

}

int fib(int n)

{ if (n<=1) return n;

еlse return fib(n-1)+fib(n-2);

}

Написать ре-ю ф-ю для нах-ния зн-я ф-и Аккермана А(т;п), кот. определяется для всех неотрицательных

целых аргументов п и т следующим образом: А(т,п)=п+1, если т=0; А(т,п)=А(т-1,п), если п=0;А(т,п)=А(т-1,А(т,п-1)), если т>0, n>0.

#include <iostream.h>

#include <conio.h>

int akk(int, int);

Int main(int argc, char* argv[])

{int n, m;

cout << "Vvedite chislo m: ";

cin >> m;

cout << "Vvedite chislo n: ";

cin >> n;

cout << "Zn-e fu-ii Akker.A("<< m <<", "<< n <<")="<< akk(m, n)<<endl;

getch();

return 0;

}

int akk(int m, int n)

{ if (m!=0&&n!=0) return akk(m-1,akk(m,n-1));

else

{ if (m==0&&n!=0) return n+1;

else return akk(m-1,1);

}

}

Создать файл, занести в него 5 целых чисел. Отсортировать данные в файле по возростанию любым способом.

#include <iostream.h>

#include <conio.h>

#include <stdlib.h>

#include <stdio.h>

FILE *fl;

void puz();

void viv();

int n, a[20];

Int main(int argc, char* argv[])

{ int i;

cout << "wod. kol. el-ov.: ";

cin >> n;

if ((fl=fopen ("fl.dat", "wb"))==NULL)

{ cout << "error pri sozdanii" << endl;

exit (1);

}

for (i=0; i<n; i++)

{ cout << "Vvedite chislo " << i+1 << ": ";

cin >> a[i];

fwrite (&a[i], sizeof (int), 1, fl);

}

puz(); viv(); fclose(fl); getch();

return 0;

}

void puz()

{ int i,j;

int m;

for (i=1; i<=n; i++)

for (j=n-1; j>=i; j--)

{ if (a[j-1]>a[j])

{ m=a[j-1];

a[j-1]=a[j];

a[j]=m;

}

}

if ((fl=fopen ("fl.dat", "rb+"))==NULL)

{ cout << "oshibka pri otkritii" << endl;

exit(1);

}

for (i=0; i<n; i++)

fwrite(&a[i], sizeof (int), 1, fl);

fclose(fl);

}

void viv()

{ int i;

if ((fl=fopen("fl.dat", "rb"))==NULL)

{ cout << "oshibka pri otkritii" << endl;

exit(1); }

for (i=0; i<n; i++)

{ cout << a[i] << " ";

cout << endl; }

fclose(fl); }

Создать бинарный файл, занеста в него 5 целых чисел. Прочитать данные из файла и вывести на экран четные числа.

#include <iostream.h>

#include <conio.h>

#include <stdlib.h>

#include <stdio.h>

FILE *fl;

void viv();

int n, a[20];

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