|
Увод в програмирането
alpha
|
Ако извиканата функция е разположена след извикваната, то трябва да бъде подходящо декларирана в извикващата функция. Това предварително обявяване се нарича прототип на функцията и информира компилатора за типа на на връщаната стойност и за броя и типа на формалните параметри. Използвайки прототипи компилаторът извършва контрол за съответствие по тип и брой между формални и фактически параметри,
Пример:
#include<conio.h> // контролиране на вход и изход
#include<iostream>
// Прототипи на функции:
void div(int a, int b);
int mnum(int, int);
// Имената на формалните параметри не го интересуват,
// но ако са написани не ги разглежда;
int main()
{
int x, n1, n2;
clrscr();
// Изчиства екрана
// функция част от conio.h
cout<<"Въведете първото число: ";
cin>>n1;
cout<<"Въведете второто число: ";
cin>>n2;
div( n1,n2) ; // това е операция
x = mnum(n1,n2);
cout<<"max= "<<x<<endl;
// Ако се обърнем към mnum() като към операнд,
// няма да има грешка,
// ама нищо не се извежда
return 0;
}
void div(int a, int b)
{
int t;
while ( b!=0)
{
t = a%b;
a = b;
b = t;
}
cout<<"НОД: "<<a<<endl;
}
int mnum( int c, int d )
{
return ( c > d ) ? c : d;
}Задача:
Да се напише програма, която транспонира матрица.
Решение:
#define DIM 3; // Дефинира константа
#include <iostream.h>
void trans ( float[][DIM], float[][DIM] );
int main()
{
float u[DIM][DIM], v[DIM][DIM];
int i, j;
for( i = 0; i<DIM; i++)
{
for(j=0; j<DIM; j++)
{
cout<<"Въведете u["<<i<<"]["<<j<<"]= ";
cin>>u[i][j];
}
}
return 0;
}
void trans(float a[][DIM], float b[][DIM])
{
int i,j;
for(i=0; i<DIM; i++)
{
for(j=0; j<DIM; j++)
b[j][i] = a[i][j];
}
}