Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОПАМ.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
327 Кб
Скачать
☆

Int main()

{

Init();

Move(n,'1','2','3'); //виклик рекурсивної функції

system("pause");

}

Приклад 4.11

/* Індійський алгоритм піднесення до степеня */

#include <iostream>

#include <math.h>

using namespace std;

int base,exponent; //число, показник степеня

void Init() //введення даних

{

cout<<"Indian algorithm"<<endl;

cout<<"Enter integer base and exponent"<<endl;

cin>>base>>exponent;

}

//========================= піднесення до степеня ==========================

long power(int x, int n)

{

int t; float step=2; //допоміжна змінна

if(n==0) return 1;

else if(n==1) return x; //рекурсивне повернення

else

{

t=pow(power(x,n/2),step); //рекурсивне занурення

if (n%2!=0) return t*x; //рекурсивне повернення

else return t; //рекурсивне повернення

}

}

//============================ головна функція ==============================

Int main()

{

Init();

cout<<base<<"^"<<exponent<<"="<<power(base,exponent)<<endl;

system("pause");

}

Приклад 5.4

/* void покажчики */

#include <iostream>

#include <stdio.h>

using namespace std;

//=============================== виведення значень, що введені ================================

void output(void* ptr, int flag)

{ //параметри: ptr-покажчик на дані будь-якого типу, switch(flag)

//flag-ознака заданого типу даних

switch(flag) //аналізувати ознаку введеного типу

{

case 1: //вивести рядок

printf("entered string: %s \n",(char*)ptr); break;

case 2: //вивести ціле число

cout<<"entered integer: "<<*(int*)ptr<<" to the address "<<(int*)ptr<<endl; break;

case 3: //вивести дійсне число

cout<<"entered float: "<<*(float*)ptr<<" to the addres "<<(float*)ptr<<endl; break;

}

}

Int main() //головна функція

{

int* iрtr,ivar; //покажчик і змінна цілого типу

float* fрtr,fvar; //покажчик і змінна дійсного типу

char* срtr,cvar[20]; //покажчик і змінна рядкового типу

int tag; //ознака заданого типу даних

cout<<"using void* "<<endl;

do //вивести запит на вибір типу

{

cout<<"select data type: 1-char, 2-int, 3-float, 4-exit \n";

cin>>tag; //задати тип даних

fflush(stdin); //очистити вхідний nотік

switch(tag) //аналізувати ознаку введеного типу

{

case 1: //блок обробки рядка символів

cout<<"input string: ";

срtr=cvar; //ініціалізувати покажчик на рядок

gets(срtr); //ввести рядок

output(срtr, tag); //функція виведення рядка

break;

case 2: //блок обробки даних цілого типу

cout<<"input integer: ";

iрtr=&ivar; //ініціалізувати покажчик на цілий тиn

cin>>*iрtr; //ввести ціле число

output(iрtr,tag);

break;

case 3: //блок обробки даних дійсного типу

cout<<"input float: ";

fрtr=&fvar; //ініціалізувати покажчик на дійсний тиn

cin>>*fрtr; //ввести дійсне число

output(fрtr,tag);

break;

}

}

while(tag!=4);

system("pause");

}

Приклад 5.5

/* Покажчики на функцію. Табулювання довільних функцій */

#include <iostream>

#include <iomanip>

#include <math.h>

using namespace std;

float lower,upper,step;

float (*func) (float);

//============================= поліном ============================

float Polynom(float x)

{

return x*x*x-x+1;

}

//=========================== степенева функція =====================

float Exponent(float x)

{

return exp(x-3);

}

//============== табулювання функції за покажчиком func ===============

void Print(float a, float b, float h, float (*func) (float), char s[])

{

float x;

cout<<"======================="<<endl;

cout<<" x | "<<s<<endl;

cout<<"======================="<<endl;

x=a;

while (x<b)

{

cout<<setw(6)<<x<<"|";

cout<<setw(10)<<(*func) (x)<<endl;

x+=h;

}

}

//========================= основна програма ===========================