Program 42) Write a function power that computes x raised to the power y for integers x and y and returns doublr type value.
This program shows a power function that returns a double. The prototype declaration
double power (int, int) ;
appears in main, before power is called.
PROGRAM
main ( )
{
int x, y ; /* Input data */
double power (int, int) ; /* Prototype declaration */
printf ("Enter x,y:") ;
scanf ("%d %d", &x, &y) ;
printf ("%d to power %d is %f\n", x, y, power (x,y)) ;
}
double power (int x, int y) ;
{
double p ;
p = 1.0 ; /* x to power zero */
if (y >= 0)
while (y--) /* Computes positive powers */
p *= x ;
else
while (y++) /* Computes negative powers */
p /= x ;
return (p) ; /* Returns double type */
}
Output: Enter x, y : 16 2
16 to power 2 is 256.000000
Enter x, y : 16 -2
16 to power -2 is 0.003906
Another way to guarantee that power's type is declared before it is called in main is to define the power function before we define main. Power's type is then known from its definition, so we longer need its type declaration in main.
This site provides information on every topic in Hindi language. This is the first Hindi site which provide knowledge in Hindi language.
Functions with no argument and no return values
Program 41) Write a program with multiple functions that do not communicate any data between them.
A program with three user-defined function is given below main is the calling functions that calls printline and value functions. Since both the called functions contain no argument, there are no argument declarations. The printline function, when encountered, prints a line with a length of 35 characters as prescribed in the function. The value function calculates the value of principal amount after a certain period of years and prints the results. The following equation is evaluated repeatedly:
Value = Principal (1 + interset-rate)
PROGRAM
/* Function declaration */
void printline (void) ;
void value (void) ;
main ( )
{
printline ( ) ;
value ( ) ;
printline ( ) ;
}
/* Function1 : printline ( ) */
void printline (void) /* contains no argument */
{
int 1 ;
for (i = 1; i <= 35; i++)
printf ("%c", '-') ;
printf ("\n") ;
}
/* Function2 : value ( ) */
void value (void) /* contains no argument */
{
int year, period ;
float inrate, sum, principal ;
printf ("Principal amount?") ;
scanf ( "%f", &principal) ;
printf ("Interest rate? ") ;
scanf ("%f", &inrate) ;
printf ("Period? ") ;
scanf ( "%d", &period) ;
sum = principal ;
year = 1 ;
while (year <= period)
{
sum = sum * (1 + inrate) ;
year = year + 1 ;
}
printf ("\n%8.2f %5.2f %5d %12.2f\n", principal,
inrate, period, sum) ;
}
Output: ---------------------------------------------------------
Principal amount? 5000
Interest rate? 0.12
Period 5
5000.00 0.12 5 88.71
---------------------------------------------------------
It is important to note that the function value recieves its data directly from the terminal. The input data include principal amount, interest rate and the period for which the final value is to be calculated. The while loop calculates the final value and the results are printed by the library function printf. When the closing brace of value() is reached, the control is transferred back to the calling function main. Since everything is done by the value itself there is in fact nothing left to be sent back to the called function. Return types of both printline and value are declared as void.
Note that no return statement is employed. When there is nothing to be returned, the return statement is optional. The closing brace of the function signals the end execution of the function, thus returning the control, back to the calling function.
A program with three user-defined function is given below main is the calling functions that calls printline and value functions. Since both the called functions contain no argument, there are no argument declarations. The printline function, when encountered, prints a line with a length of 35 characters as prescribed in the function. The value function calculates the value of principal amount after a certain period of years and prints the results. The following equation is evaluated repeatedly:
Value = Principal (1 + interset-rate)
PROGRAM
/* Function declaration */
void printline (void) ;
void value (void) ;
main ( )
{
printline ( ) ;
value ( ) ;
printline ( ) ;
}
/* Function1 : printline ( ) */
void printline (void) /* contains no argument */
{
int 1 ;
for (i = 1; i <= 35; i++)
printf ("%c", '-') ;
printf ("\n") ;
}
/* Function2 : value ( ) */
void value (void) /* contains no argument */
{
int year, period ;
float inrate, sum, principal ;
printf ("Principal amount?") ;
scanf ( "%f", &principal) ;
printf ("Interest rate? ") ;
scanf ("%f", &inrate) ;
printf ("Period? ") ;
scanf ( "%d", &period) ;
sum = principal ;
year = 1 ;
while (year <= period)
{
sum = sum * (1 + inrate) ;
year = year + 1 ;
}
printf ("\n%8.2f %5.2f %5d %12.2f\n", principal,
inrate, period, sum) ;
}
Output: ---------------------------------------------------------
Principal amount? 5000
Interest rate? 0.12
Period 5
5000.00 0.12 5 88.71
---------------------------------------------------------
It is important to note that the function value recieves its data directly from the terminal. The input data include principal amount, interest rate and the period for which the final value is to be calculated. The while loop calculates the final value and the results are printed by the library function printf. When the closing brace of value() is reached, the control is transferred back to the calling function main. Since everything is done by the value itself there is in fact nothing left to be sent back to the called function. Return types of both printline and value are declared as void.
Note that no return statement is employed. When there is nothing to be returned, the return statement is optional. The closing brace of the function signals the end execution of the function, thus returning the control, back to the calling function.
Counting of charcaters, words and lines in a text
Program 39) One of the practical applications of string manipulations is counting the words in a text. We assume that a word is a sequence of any characters, except escape characters and blanks, and that two words are separated by one blank character. The algorithm for counting words is as follows:
1. Read a line of text.
2. Beginning from the first character in the line, look for
blank. If a blank found, increment words by 1.
3. Continue steps 1 and 2 until the last line is completed.
The implementation of this algorithm is shown below. The first while loop will be executed once for each line of text. The end of text is indicated by pressing the 'Return' Key an extra time after the entire text has been entered. The extra 'Return' Key causes a newline character as input to the last line and as a result, the last line contains only the null character.
The program checks for this special line using the test
if (line [0] == '\0')
and if the first (and only the first) character in the line is a null character, then counting is terminated. Note the difference between a null character and a blank character.
PROGRAM
#include <stdio.h>
main ( )
{
char line [81], ctr ;
int i, c, end = 0, words = 0, lines = 0 ;
printf ("KEY IN THE TEXT. \n") ;
printf ("GIVE ONE SPACE AFTER EACH WORD. \n") ;
printf ("WHEN COMPLETED, PRESS 'RETURN' .\n\n") ;
while (end == 0)
{
/* Reading a line of text */
c = 0 ;
while ( (ctr = getchar() ) ! = '\n') ;
line [c++] = ctr ;
line [c] = '\0' ;
/* counting the words in a line */
if (line [0] == '\0')
break ;
else
{
words++ ;
for (i = 0; line[i] != '\0'; i++)
if (line [i] == ' ' | | line [i] == '\t')
words++ ;
}
/* Counting lines and characters */
lines = lines + 1 ;
characters = characters + strlen(line) ;
}
printf ("\n") ;
printf ("Number of lines = %d\n", lines) ;
printf ("Number of words = %d\n", words) ;
printf ("Number of characters = %d\n", charcaters) ;
}
Output: KEY IN THE TEXT
GIVE ONE SPACE AFTER EACH WORD.
WHEN COMPLETD, PRESS 'RETURN'.
Admiration is a very short-lived passion.
Admiration involves a glorious obliquity of vision.
Always we like those who admire us but we do not
Like those whom we admire.
Fools admire, but men of sense approve.
Number of lines = 5
Number of words = 36
Number of characters = 205
The program also counts the number of lines read and the total number of characters in the text. Remember, the last line containing the null string is not counted.
After the first while loop is exited, the program prints the result of counting.
1. Read a line of text.
2. Beginning from the first character in the line, look for
blank. If a blank found, increment words by 1.
3. Continue steps 1 and 2 until the last line is completed.
The implementation of this algorithm is shown below. The first while loop will be executed once for each line of text. The end of text is indicated by pressing the 'Return' Key an extra time after the entire text has been entered. The extra 'Return' Key causes a newline character as input to the last line and as a result, the last line contains only the null character.
The program checks for this special line using the test
if (line [0] == '\0')
and if the first (and only the first) character in the line is a null character, then counting is terminated. Note the difference between a null character and a blank character.
PROGRAM
#include <stdio.h>
main ( )
{
char line [81], ctr ;
int i, c, end = 0, words = 0, lines = 0 ;
printf ("KEY IN THE TEXT. \n") ;
printf ("GIVE ONE SPACE AFTER EACH WORD. \n") ;
printf ("WHEN COMPLETED, PRESS 'RETURN' .\n\n") ;
while (end == 0)
{
/* Reading a line of text */
c = 0 ;
while ( (ctr = getchar() ) ! = '\n') ;
line [c++] = ctr ;
line [c] = '\0' ;
/* counting the words in a line */
if (line [0] == '\0')
break ;
else
{
words++ ;
for (i = 0; line[i] != '\0'; i++)
if (line [i] == ' ' | | line [i] == '\t')
words++ ;
}
/* Counting lines and characters */
lines = lines + 1 ;
characters = characters + strlen(line) ;
}
printf ("\n") ;
printf ("Number of lines = %d\n", lines) ;
printf ("Number of words = %d\n", words) ;
printf ("Number of characters = %d\n", charcaters) ;
}
Output: KEY IN THE TEXT
GIVE ONE SPACE AFTER EACH WORD.
WHEN COMPLETD, PRESS 'RETURN'.
Admiration is a very short-lived passion.
Admiration involves a glorious obliquity of vision.
Always we like those who admire us but we do not
Like those whom we admire.
Fools admire, but men of sense approve.
Number of lines = 5
Number of words = 36
Number of characters = 205
The program also counts the number of lines read and the total number of characters in the text. Remember, the last line containing the null string is not counted.
After the first while loop is exited, the program prints the result of counting.
Subscribe to:
Comments (Atom)