Інформатика
Директиви препроцесора : Практичне заняття
 

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

     Вивчити директиви препроцесорної обробки. Ознайомитися з правилами створювання макросів та класичними помилками програмістів-початківців. Розібрати контрольний приклад. Особливу увагу приділити механізму підключення модулю до основної програми.

Контрольний приклад

     В матриці найти суму першого рядка, відсортувати другий рядок за збільшенням, а третій за зменшенням. Оформити кожну підзадачу у вигляді макросу.

Файл Unit1.h

#include <iostream.h>

#include "Unit2.h"

#define N 3

#define M 5

void main()

{

     int mas[N][M]={9,3,6,23,21,

               4,5,6,4,51,

               4,6,24,23,24};

     cout<<"Nachalnije dannie\n";

     outmatr(mas,N,M);

#define cmp >

# if defined (cmp)

          sortmas(mas[1],M);

#else

     cout<<"error";

#endif

#define MES "sort \">\" 2-ja stroka"

     cout<<endl;

     outmas(mas[1],5);

#define cmp <

#define MES "sort \"<\" 3-ja stroka"

# if defined (cmp)

     sortmas(mas[2],M);

#else

     cout<<"error";

#endif

     cout<<endl;

     outmas(mas[1],5);

#define cmp <

#define MES "sort \"<\" 3-ja stroka"

# if defined (cmp)

     sortmas(mas[2],M);

#else

     cout<<"error";

#endif

     cout<<endl;

     outmas(mas[2],5);

     cout<<endl;

     int sum;

     SUM(mas[0],5,sum);

     cout<<"Summa 1-oj stroki = "<<sum<<endl;

     cout<<"Rezultat:"<<endl;

     outmatr(mas,N,M);

     cin.get();

}

Файл "Unit2.h"

#ifndef Unit2H

#define Unit2H

#define MES "ne sort"

#define cmp ==

#define sortmas(mas,n) { for (int i=0;i<n;i++) \

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

               if(mas[j] cmp mas[j+1]) \

               {\

                    mas[j]=mas[j]+mas[j+1]; \

                    mas[j+1]=mas[j]-mas[j+1]; \

                    mas[j]=mas[j]-mas[j+1];}; \

           }

#define outmas(mas,n) { for (int i=0;i<n;i++) cout<<mas[i]<<"\t"; \

                    cout<<'\t'<<MES<<endl;}

#define outmatr(mas,n,m) { for (int i=0;i<n;cout<<endl,i++)\

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

                cout<<mas[i][j]<<"\t"; \

               }

//---------------------------------------------------------------------------

#define SUM(mas,n,Sum) { Sum =0; \

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

                    Sum+=mas[j]; \

                    }

#endif

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