Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpora_OAIP_2.docx
Скачиваний:
6
Добавлен:
11.05.2015
Размер:
56.37 Кб
Скачать

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

#include < conio.h>

#include < iostream.h>

int fact(int);

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

{

int n;

cout << "Vvedite znachenie factoriala n: ";

cin >> n;

cout << "Factorial chisla "<< n << " raven: " << fact(n) << endl;

getch();

return 0;

}

int fact(int n)

{

if (n<=0)

return 1;

else

return n*fact(n-1);

}

Написать рекурсивную функцию для нахождения наибольшего наименьшего общего делителя.

Используя следующее соотношение: если В делится на А нацело, то НОД(А,В)=А, иначе НОД(А,В)=НОД(В%А,А).

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

}

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

#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 << "Maksimalnij element raven: " << 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;

else

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 << "Znachenie funktsii Akkermana 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 << "Vvedite chislo elementov: ";

cin >> n;

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

{

cout << "Ochibka 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];

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

{

int i;

cout << "Vvedite chislo elementov: ";

cin >> n;

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

{

cout << "Ochibka 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);

}

viv();

fclose(fl);

getch();

return 0;

}

void viv()

{

int i;

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

{

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

exit(1);

}

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

{

if (a[i]%2==0)

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

}

cout << endl;

fclose(fl);

}

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

#include <iostream.h>

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

FILE *fl;

void vvod();

void rez();

char a[6];

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

{

vvod();

rez();

getch();

return 0;

}

void vvod()

{

int i;

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

{

cout << "Ochibka pri sozdanii" << endl;

exit (1);

}

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

{

cout << "Vvedite simvol " << i+1 << ": ";

cin >> a[i];

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

}

fclose(fl);

}

void rez()

{

int i, n=0;

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

{

cout << "Ochibka pri otkritii" << endl;

exit (1);

}

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

{

if (a[i]=='c')

n++;

}

cout << "Kolichestvo 'C': " << n << endl;

fclose(fl);

}

Создать файл, занести 8 чисел, прочитать файл и вывести максимальное число.

#include <conio.h>

#include <iostream.h>

#include <stdlib.h>

#include <stdio.h>

FILE *fl;

int a[8];

void vvod();

void rez();

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