Uploaded by Haroon Rashid

Рад са функцијама у Ц-у

advertisement
Chapter 8
_________
Working with
Functions
1-1
Defining a function
#include <stdio.h>
int main (void) {
printf (“Programming is fun.\n”);
return 0;
}
______________________________________
Here is a function that does the same
thing:
void printMessage (void) {
printf (“Programming is fun.\n”);
}
1-2
Writing a function in C ( 1 )
#include <stdio.h>
void printMessage (void) {
printf (“Programming is fun.\n”);
}
int main (void) {
printMessage ();
return 0;
}
______________________________________
Programming is fun
1-3
Writing a function in C ( 2 )
#include <stdio.h>
int main (void) {
printf
printf
printf
printf
printf
(“Programming
(“Programming
(“Programming
(“Programming
(“Programming
is
is
is
is
is
fun.\n”);
fun.\n”);
fun.\n”);
fun.\n”);
fun.\n”);
return 0;
}
___________________________________________
Programming is fun.
Programming is fun.
Programming is fun.
Programming is fun.
Programming is fun.
1-4
Writing a function in C ( 2 )
#include <stdio.h>
// void data type actually defines absence
of a data type
void printMessage (void) {
printf (“Programming is fun.\n”);
}
int main (void) {
printMessage
printMessage
printMessage
printMessage
printMessage
();
();
();
();
();
return 0;
}
___________________________________________
Programming is fun.
Programming is fun.
Programming is fun.
Programming is fun.
Programming is fun.
1-5
Writing a function in C ( 2 )
#include <stdio.h>
// void data type actually defines absence
of a data type
void printMessage (void) {
printf (“Programming is fun.\n”);
}
int main (void) {
for (int i = 1; i <= 5; i++)
printMessage ();
return 0;
}
___________________________________________
Programming is fun.
Programming is fun.
Programming is fun.
Programming is fun.
Programming is fun.
1-6
Function arguments and local variables
// Function calculates nth triangular number
#include <stdio.h>
//formal parameters, with types
void calculateTriangularNumber (int n) {
// local variables
int i, triangularNumber = 0;
for (i = 1; i <= n; ++i)
triangularNumber += i;
printf (“Triangular number %i is %i \n",
n, triangularNumber);
}
int main (void) {
// Actual parameters (arguments) passing,
// just values no types
calculateTriangularNumber ( 10 );
calculateTriangularNumber ( 20 );
calculateTriangularNumber ( 30 );
return 0;
}
_____________________________________________
Triangular number 10 is 55
Triangular number 20 is 210
1-7
Returning function results
// Function calculates nth triangular number
#include <stdio.h>
int calculateTriangularNumber (int n) {
int i, triangularNumber = 0;
for (i = 1; i <= n; ++i) {
triangularNumber += i;
return triangularNumber;
}
int main (void) {
int result;
result = calculateTriangularNumber ( 10 );
printf (“Triangular number %i is %i \n",
10, result);
result = calculateTriangularNumber ( 20 );
printf (“Triangular number %i is %i \n",
20, result);
return 0;
}
_____________________________________________
Triangular number 10 is 55
Triangular number 20 is 210
1-8
Returning function results ( B )
// Function calculates nth triangular number
#include <stdio.h>
int calculateTriangularNumber (int n) {
// local variables
int i, triangularNumber = 0;
for (i = 1; i <= n; ++i) {
triangularNumber += i;
return triangularNumber;
}
int main (void) {
printf (“Triangular number %i is %i \n",
10, calculateTriangularNumber (10));
printf (“Triangular number %i is %i \n",
20, calculateTriangularNumber (20));
return 0;
}
_____________________________________________
Triangular number 10 is 55
Triangular number 20 is 210
1-9
Program 8.5: GCD of two +ve integers
#include <stdio.h>
void gcd (int u, int v) {
int temp;
printf (“The GCD of %i and %i is ”,
u, v);
while ( v != 0 ) {
temp = u % v;
u = v;
v = temp;
}
printf (“%i.\n”, u)
}
int main (void) {
gcd (150, 35);
gcd (1026, 405);
gcd (83, 240);
return 0;
}
___________________________________________
The GCD of 150 and 35 is 5
The GCD of 1026 and 405 is 27
The GCD of 83 and 240 is 1
1-10
Program 8.6: GCD of two +ve integers
#include <stdio.h>
int gcd (int u, int v) {
int temp;
while ( v != 0 ) {
temp = u % v;
u = v;
v = temp;
}
return u;
}
int main (void) {
int result = gcd (150, 35);
printf (“The GCD of %i and %i is %i”,
150, 35, result);
printf (“The GCD of 1026 and 405 is %i”,
, gcd (1026, 405));
return 0;
}
___________________________________________
The GCD of 150 and 35 is 5
The GCD of 1026 and 405 is 27
1-11
Program 8.7: Calculating absolute value
#include <stdio.h>
float absVal (float x) {
if (x < 0)
return -x; // Can have more than one
return x; // return stmnts in a function
}
int main (void) {
float f1 = -15.5, f2 = 20.0; f3 = -5.0;
int i1 = -716;
float result;
printf (“Abs value of %.2f is %.2f\n“,
f1, absVal(f1));
result = absVal(f2) + absVal(f3);
printf (“result = %.2f\n“, result);
result = absVal ((float) i1);
printf (“result = %.2f\n“, result);
result = absVal(i1) / 4;
printf (“result = %.2f\n“, result);
return 0;
}
1-12
___________________________________________
Functions calling functions calling
functins calling . . . .
#include <stdio.h>
/* Declare all functions in your program (inside the calling function or
outside any function), even if they are defined before they are called.
*/
int minimum (int values[10]) {
. . . . .
}
int main (void) {
int scores [10], i;
printf(“Enter the ten scores\n”);
for (i = 0; i < 10; ++i)
scanf (“%i”, &scores[i]);
printf(“Minimum score = %i\n”,
minimum (scores));
return 0;
}
1-13
Prog 8.9 (1): MINIMUM value in an Array
#include <stdio.h>
/* Declare all functions in your program (inside the calling function or
outside any function), even if they are defined before they are called.
*/
int minimum (int values[10]) {
int i, minValue = values [0];
for (i = 1; i < 10; ++i) {
if ( values [i] < minValue )
minValue = values [i];
}
return minValue;
}
int main (void) {
int scores [10], i;
printf(“Enter the ten scores\n”);
for (i = 0; i < 10; ++i)
scanf (“%i”, &scores[i]);
printf(“Minimum score = %i\n”,
minimum (scores));
return 0;
}
1-14
Prog 8.9 (2) : MINIMUM value in an Array
#include <stdio.h>
/* Declare all functions in your program (inside the calling function or
outside any function), even if they are defined before they are called.
*/
int main (void) {
int score [10], i;
int minimum (int values[10]);
printf(“Enter the ten scores\n”);
for (i = 0; i < 10; ++i)
scanf (“%i”, &scores[i]);
printf(“Minimum score = %i\n”,
minimum (scores));
return 0;
}
int minimum (int values[10]) {
int i, minValue = values [0];
for (i = 1; i < 10; ++i) {
if ( values [i] < minValue )
minValue = values [i];
}
return minValue;
}
1-15
Prog 8.10: MINIMUM value in an Array
#include <stdio.h>
// formal parameters
int minimum (int values[],
int numOfElmnts) {
int i, minValue = values [0];
for (i = 1; i < numOfElmnts; ++i) {
if ( values [i] < minValue )
minValue = values [i];
}
return minValue;
}
int main (void) {
int array1 [6] = {157, -28, -37, 26
260, 10};
int array2 [9] = {12, 45, 1, 10, 5,
-100, -3, 3, 2};
int minimum (int values[],
int numOfElmnts);
printf(“array1 minimum = %i\n”,
minimum (array1, 6));
// actual parameters
printf(“array2 minimum = %i\n”,
minimum (array2, 9));
return 0;
}
1-16
Prog 8.11: Changing array elements in
functions (passing params by reference)
#include <stdio.h>
// formal parameters
void multiplyBy2 (float formalArray[],
int n) {
for (int i = 0; i < n; ++i)
formalArray[i] = formalArray[i] * 2;
}
___________________________
int main (void) {
float floatValues [4] =
{1.222f, -3.7f, 6.2f, 8.55f};
int i;
void multiplyBy2 (float array[], int n);
multiplyBy2 (floatValues,
4);
for (i = 0; i < 4; ++i)
printf(“%.2f ”, floatValues [i]);
return 0;
}
___________________________________________
2.44, -7.40, 12.40, 17.10
1-17
Prog 8.12: Sorting an array into
ascending order
#include <stdio.h>
void sort (int a[], int n) {
int i, j, temp;
for (i = 0; i < n-1; ++i)
for (j = i + 1; j < n; ++j)
if (a[i) < a[j]) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
int main (void) {
int array[8] =
{34, -5, 6, 0, 12, 100, 56, -9};
void sort (int a[], int n);
sort (array, 16);
for (int i = 0; i < 8; ++i)
printf(“%i “, array[i]);
printf(“\n“);
return 0;
}
_______________________________________
-9 -5 0 6 12 34 56 100
1-18
Prog 8.13 (A): Multidimensional arrays
and functions
#include <stdio.h>
int main (void) {
int sampleMatrix[3][5] =
{
{ 7, 16, 55, 13, 12},
{12, 10, 52, 0, 7},
{-2, 1, 2, 4, 9},
};
void displayMatrix
(int matrix [][], int row, int col);
void scalarMuliply
(int matrix [][], int row, int col,
int scalar);
displayMatrix (sampleMatrix, 3, 5);
scalarMuliply (sampleMatrix, 3, 5, 2);
displayMatrix (sampleMatrix, 3, 5);
scalarMuliply (sampleMatrix, 3, 5,
-1);
displayMatrix (sampleMatrix, 3, 5);
return 0;
}
1-19
Prog 8.13 (B): Multidimensional arrays
and functions
void scalarMuliply (int matrix [][],
int rows, int cols, int scalar);
for (int i = 0; i < rows; ++i)
for (int j = 0; j < cols; ++j)
matrix [i][j] *= scalar;
}
void displayMatrix (int matrix [][],
int rows, int cols){
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j)
printf(“%5i”, matrix [i][j]);
printf(“\n”);
}
}
1-20
Download