Інформатика
Функції : Практичне заняття
 

Практичне заняття

Приклад 1. Створити функцію підрахунку кількості негативних елементів у масиві.

#include <iostream.h>

//функція підрахунку кількості негативних елементів в одномірному масиві

int Kol(int *mas,int n)

{

     int s=0;

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

          if(mas[i]<0) s++;

     return s;

}

void main()

{

     const m=5;

     int mas[m]={4,7,-8,4,-9};

     cout<<Kol(mas,m)<<endl;

     cin.get();

}

Приклад 2. Функція транспонування матриці.

#include <iostream.h>

void t(int n, int*a[])

{

     int s;

     for (int i=0;i<n-1;i++)

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

     {

          s=a[i][j];

          a[i][j]=a[j][i];

          a[j][i]=s;

     }

}

void main()

{

     const int k=3;

     int m[k][k]={1,2,3,4,5,6,7,8,9};

     int*p[]={(int*)&m[0],(int*)&m[1],(int*)&m[2]};

     t(k,p);

     for (int i=0;i<k;i++)               

     {

          for (int j=0;j<k;j++)               

          cout<<m[i][j]<<' ';

          cout<<"\n";      

     }

     cin>>i;

}

Результатом буде

1 4 7

2 5 8      

3 6 9

Приклад 3. Функція заповнення матриці.

#include <iostream.h>

void t(int n, int**a)

{

     int k=0;

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

     for (int j=0;j<n;j++)

          a[i][j]=k++;

void main()

{

     int **p;

     const int n1=3;

     int m[n1][n1]={0};

     int* p1[n1]={(int*)&m[0],(int*)&m[1],(int*)&m[2]};

     p=(int**)&p1;

     t(n1,p);

     for (int i=0;i<n1;i++)               

     {

          for (int j=0;j<n1;j++)                

               cout<<p[i][j]<<" ";

          cout<<"\n";

     }     

     cin>>i;

}

Результатом буде

0 1 2

3 4 5

6 7 8

Приклад 4. Створити функцію для підсумовування елементів одномірного масиву, функцію для сортування одномірного масиву й відсортувати у двовимірному масиві другий рядок. Створення динамічних масивів, видалення їх, заповнення , вивід на екран також організований у вигляді функцій.

#include <iostream.h>

#include <stdlib.h> //rand

#include <iomanip.h> //setw

void MySwap(int &a,int&b); //функція обміну елементів місцями

void MySort(int *mas, int n); //функція сортування одномірного масиву

int sum(int *mas,int n); //підсумовування одномірного масиву

int** createMas(int n, int m); //Створення двовимірного динамічного масиву

void deleteMas(int** mas,int n); //Видалення двовимірного динамічного масиву

void RandomMas(int** mas, int n, int m, int k); //заповнення двовимірного масиву випадковим образом від 0 до k

void outputMas(int** mas, int n, int m); //виведення масиву на екран

void main()

{

     int x[5]={3,5,4,7,8};

     cout<<"\n сума одномірного масиву = "<<sum(x,5)<<endl;

     int v=4,b=5;

     int **Matr=createMas(v,b); //створюємо двовимірний масив

     RandomMas(Matr, v,b,10); //заповнюємо випадковим образом від 0 до 10

     cout<<"\n двовимірний масив: ";

     outputMas(Matr, v,b); //друкуємо масив на екран

                     //сума елементів рядків матриці

     for (int i=0; i<v; i++)

          cout<<"\n Cумма "<<i<<" рядка ="<<sum(Matr[i], b);

               //сортуємо другий рядок

     MySort(Matr[1],v,b);

     cout<<"\n результуючий масив (сортований 2-я рядок): ";

     outputMas(Matr, v,b); //друкуємо масив на екран

     deleteMas(intMas,n);      //видаляємо динамічний масив

     cin.get();

}               //кінець головної функції main

void MySwap(int&a,int&b) //функція обміну елементів місцями

{

     int t=a;

     a=b;

     b=t;

}

void MySort(int *mas, int n) //функція сортування одномірного масиву

{

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

     for(int j=0;j<n-1-i;j++)

     if(mas[j]>mas[j+1])

     MySwap(mas[j],mas[j+1]);

}

int sum(int *mas,int n) //підсумовування одномірного масиву

{

     int s=0;

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

     s+=mas[i];

     return s;

}

int** createMas(int n, int m) //створення динамічного масиву

{

     int**mas=new int*[n];

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

          mas[i]=new int [m];

     return mas;

}

void deleteMas(int**mas,int n) // видалення динамічного масиву

{

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

          delete []mas[i];

     delete []mas;

}

void RandomMas(int** mas, int n, int m, int k)

{

     srand(time(NULL));

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

     for(int j=0;j<m;j++)

          mas[i][j]= rand()%k+1;

}

void outputMas(int** mas, int n, int m) // вивід матриці на екран

{

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

     {

          for(int j=0;j<m;j++)

               cout<<setw(10)<<mas[i][j]

//setw(10)- відступ : наступна печaть із 10 позиції;

          cout<<endl;

     }

}

 
© 2008 ХНУРЭ, Інформатики, Сінельнікова Т.Ф., informatika@kture.Kharkov.ua
Розроблено за допомогою LERSUS