Scilab Textbook Companion for
Programming In Ansi C
by E. Balagurusamy
1
Created by
Devender Thakur
computer science
Computer Engineering
Shoolini University, Solan
College Teacher
Mr. Amit Nayyar
Cross-Checked by
October 7, 2013
1Funded by a grant from the National Mission on Education through ICT, http://spoken-tutorial.org/NMEICT-Intro. This Textbook Companion and Scilab
Book Description
Title: Programming In Ansi C
Author: E. Balagurusamy
Publisher: Tata McGraw - Hill Education, New Delhi
Edition: 4
Year: 2008
Scilab numbering policy used in this document and the relation to the above book.
Exa Example (Solved example)
Eqn Equation (Particular equation of the above book)
AP Appendix to Example(Scilab Code that is an Appednix to a particular Example of the above book)
For example, Exa 3.51 means solved example 3.51 of this book. Sec 2.3 means a scilab code whose theory is explained in Section 2.3 of the book.
Contents
List of Scilab Codes 4
1 Overview of C 7
2 Constants Variables and Data Types 11
3 Operators and Expressions 16
4 Managing Input and Output Operations 22
5 Decision Making and Branching 31
6 Decision Making and Looping 40
7 Arrays 51
8 Character Arrays and Strings 65
9 User Defined Functions 76
10 Structures and Unions 87
12 File Management in C 95
List of Scilab Codes
Exa 1.3 Printing a mesage . . . 7
Exa 1.4 Adding two numbers . . . 7
Exa 1.5 Interest Calculation . . . 8
Exa 1.6 Use of subroutines . . . 9
Exa 1.7 Use of math functions . . . 9
Exa 2.1 Representation of integer constants on a 16 bit computer 11 Exa 2.1cs Case study 1 avg of numbers . . . 12
Exa 2.2 typical declarations assignments and values stored in various types of variables . . . 12
Exa 2.2cs Case study temprature in Farenheit and Celsius. . . . 13
Exa 2.3 use of scanf function . . . 14
Exa 2.4 Interest calculation using scanf . . . 14
Exa 3.1 Use of integer arithmetic . . . 16
Exa 3.1cs case study 1 salesmans salary . . . 16
Exa 3.2 Sequence of squares of numbers . . . 17
Exa 3.2cs case study 2 solution of the quadratic equation . . . . 18
Exa 3.3 Different kind of operators. . . 18
Exa 3.4 Use of variables in expressions . . . 19
Exa 3.5 Round off errors . . . 20
Exa 3.6 Cast to evaluate the equation . . . 21
Exa 4.1 Use of getchar function . . . 22
Exa 4.1cs Case study 1 Inventory report. . . 23
Exa 4.2 Whether character is alphabet or digit or special char-acter. . . 24
Exa 4.2cs Case study 2 Reliability graph . . . 25
Exa 4.3 Print character in reverse case . . . 25
Exa 4.6 Reading of strings . . . 27
Exa 4.8 Testing for correctness . . . 28
Exa 4.9 Output of integer numbers . . . 29
Exa 4.10 Printing a real number. . . 29
Exa 4.11 Printing of character and strings . . . 30
Exa 5.1 Ratio . . . 31
Exa 5.1cs Case study 1 range of numbers . . . 32
Exa 5.2 counts the number of boys. . . 33
Exa 5.2cs Case study 2 Pay Bill Calculations . . . 33
Exa 5.3 Evaluate the power series . . . 35
Exa 5.4 Largest of the three numbers . . . 36
Exa 5.5 Reads the customer number and power consumed . . . 37
Exa 5.6 Loan applications and to sanction loans . . . 37
Exa 5.7 square root for five numbers . . . 38
Exa 6.1 evaluate the equation . . . 40
Exa 6.1cs Case study 1 Table of Binomial Coefficients . . . 40
Exa 6.2 Multiplication table . . . 42
Exa 6.2cs Case study 2 Histogram . . . 42
Exa 6.3 Uses a for loop . . . 43
Exa 6.3cs Case study 3 Minimum Cost . . . 44
Exa 6.4 Read the marks and print total marks . . . 45
Exa 6.4cs Case study 4 Plotting of two Functions . . . 46
Exa 6.5 Use of the break statement . . . 48
Exa 6.6 Evaluate the series . . . 48
Exa 6.7 Use of continue statement . . . 49
Exa 1.cs Case study 1 Median of list of numbers . . . 51
Exa 2.cs Case study 2 Calculation of standard deviation . . . . 52
Exa 3.cs Case study 3 Evaluating a Test . . . 53
Exa 4.cs Case study 4 Production and sales analysis . . . 54
Exa 7.1 Sum of squares of 10 numbers . . . 58
Exa 7.2 Count the number of students . . . 59
Exa 7.3 Compute and print . . . 60
Exa 7.4 Multiplication table . . . 62
Exa 7.5 Popularity of various cars . . . 62
Exa 1.cs Case study 1 Counting words in a text . . . 65
Exa 2.cs Case study 2 Processing of a customer list . . . 66
Exa 8.1 Read a series of words . . . 68
Exa 8.3 Copy one string into another . . . 69
Exa 8.4 Display the string under various format specifications . 69 Exa 8.5 Program using for loop . . . 70
Exa 8.6 Print the alphabet set a to z and A to Z . . . 71
Exa 8.7 Concatinate the three parts into one string . . . 72
Exa 8.8 Compare whether strings are equal . . . 73
Exa 8.9 Sort a list of names in alphabetical order . . . 74
Exa 1.cs Case study 1 Calculation of Area under a Curve . . . 76
Exa 9.1 Multiple functions . . . 77
Exa 9.2 Include arguments in function calls . . . 78
Exa 9.3 Return result . . . 79
Exa 9.4 Computes x raised to the power y . . . 80
Exa 9.5 Calculate standard deviation of an array values . . . . 81
Exa 9.6 Sort an array . . . 82
Exa 9.7 Autometic variables . . . 83
Exa 9.8 Global variables . . . 84
Exa 9.16 Factorial of a number using recursion. . . 85
Exa 1.cs Case study 1 Book Shop Inventory . . . 87
Exa 10.1 Define a structure type . . . 89
Exa 10.2 Comparison of structure variables . . . 90
Exa 10.3 Calculate the subject wise and student wise totals . . 91
Exa 10.4 Array member to represent the three subjects . . . 92
Exa 10.5 structure as a parameter to a function . . . 93
Exa 12.1 Read data from keyboard and write it to a file . . . . 95
Exa 12.2 Read and write odd and even numbers . . . 96
Exa 12.3 Read and write data to and from the file INVENTORY 98 Exa 12.4 Error handling in file operations . . . 99
Exa 12.5 use of function ftell or mtell and fseek or mseek . . . . 100
Exa 12.6 Append additional items to the file INVENTORY . . 102
Exa 1.cs Case study 1 Insertion in a sorted list . . . 104
Exa 2.cs Case study 2 Building a Sorted List . . . 107
Exa 13.3 Create a linear linked list . . . 109
Exa 13.4 Insert the item before the specified key node. . . 111
Chapter 1
Overview of C
Scilab code Exa 1.3 Printing a mesage
1 // Example 1 . 3
2 // SAMPLE PROGRAM 1 : PRINTING A MESSAGE
3 4 // P r i n t i n g B e g i n s 5 p r i n t f( ” I s e e , I remember ” ) // P r i n t i n g u s i n g p r i n t f ( ) f u n c t i o n 6 // P r i n t i n g e n d s 7 8 9 //We c a n a l s o p r i n t a m e s s a g e u s i n g d i s p ( ) f u n c t i o n i n s c i l a b 10 disp( ” I s e e , I remember ” ) // P r i n t i n g u s i n g d i s p ( ) f u n c t i o n
1 // Example 1 . 4
2 // SAMPLE PROGRAM 2 : ADDING TWO NUMBERS
3 4 n u m b e r = 1 0 0 ; 5 a m o u n t = 3 0 . 7 5 + 7 5 . 3 5 ; // A d d i t i o n o f two numbers 6 disp( n u m b e r ) ; // D i s p l a y v a l u e o f number v a r i a b l e 7 // D i s p l a y v a l u e o f amount i n f l o a t i n g p o i n t w i t h f i v e p l a c e s i n a l l and two p l a c e s t o t h e r i g h t o f d e c i m a l p o i n t 8 p r i n t f( ”%5 . 2 f ” , a m o u n t ) ;
Scilab code Exa 1.5 Interest Calculation
1 // Example 1 . 5
2 // SAMPLE PROGRAM 3 : INTEREST CALCULATION
3 4 P R I N C I P A L = 5 0 0 0 . 0 0 ; 5 P E R I O D =10; 6 // A s s i g n m e n t S t a t e m e n t s 7 a m o u n t = P R I N C I P A L ; 8 i n r a t e = 0 . 1 1 ; 9 year =0; 10 // C o m p u t a t i o n u s i n g w h i l e l o o p 11 w h i l e( year <= P E R I O D ) 12 p r i n t f( ”%2d %8 . 2 f \ n ” , year , a m o u n t ) ; 13 v a l u e = a m o u n t + i n r a t e * a m o u n t ; 14 year = year +1; 15 a m o u n t = v a l u e ; 16 end // End o f w h i l e l o o p
Scilab code Exa 1.6 Use of subroutines
1 // Example 1 . 6
2 // SAMPLE PROGRAM 4 : USE OF SUBROUTINES
3 4 // Program u s i n g f u n c t i o n 5 6 f u n c t i o n []= mul ( a , b ) // mul ( ) f u n c t i o n s t a r t s ( i . e . d e f i n i t i o n s t a r t s ) 7 y = a * b ; 8 p r i n t f( ” M u l t i p l i c a t i o n o f %d and %d i s %d” ,a ,b , y ) ; 9 e n d f u n c t i o n // mul ( ) f u n c t i o n e n d s 10 a =5; b =10; 11 // C a l l i n g mul ( ) f u n c t i o n 12 mul ( a , b )
Scilab code Exa 1.7 Use of math functions
1 // Example 1 . 7
2 // SAMPLE PROGRAM 5 : USE OF MATH FUNCTIONS
3 4 // Program u s i n g c o s i n e f u n c t i o n 5 a n g l e =0; MAX = 1 8 0 ; 6 p r i n t f( ” A n g l e Cos ( a n g l e ) \ n ” ) ; 7 w h i l e( angle <= MAX ) 8 x =( %pi / MAX ) * a n g l e ; 9 y =cos( x ) ; // Use o f c o s i n e f u n c t i o n
10 p r i n t f( ” %15d %13 . 4 f \ n ” , angle , y ) ;
11 a n g l e = a n g l e +10;
Chapter 2
Constants Variables and Data
Types
Scilab code Exa 2.1 Representation of integer constants on a 16 bit com-puter 1 // Example 2 . 1 2 // R e p r e s e n t a t i o n o f i n t e g e r c o n s t a n t s on a 16− b i t c o m p u t e r . 3 4 disp( ” I n t e g e r v a l u e s ” ) ; 5 // I n t e g e r v a l u e s l a r g e r t h a n 3 2 7 6 7 a r e n o t s t o r e d p r o p e r l y on 16− b i t m a c h i n e 6 p r i n t f( ”%d %d %d \ n ” ,i n t 1 6( 3 2 7 6 7 ) ,i n t 1 6( 3 2 7 6 7 + 1 ) , i n t 1 6( 3 2 7 6 7 + 1 0 ) ) ; 7 8 disp( ” Long i n t e g e r v a l u e s ” ) ; 9 // To s t o r e l o n g i n t e g e r s p r o p e r l y , u s e i n t 3 2 i n t e g e r t y p e 10 p r i n t f( ” %ld %ld %ld \ n ” ,i n t 3 2( 3 2 7 6 7 ) ,i n t 3 2( 3 2 7 6 7 + 1 ) , i n t 3 2( 3 2 7 6 7 + 1 0 ) ) ; 11 // The same r e s u l t a s f r o m a b o v e s t a t e m e n t c a n be a c h i e v e d d i r e c t l y f r o m b e l o w commented s t a t e m e n t 12 // p r i n t f ( ” %ld %ld %ld \ n ” , 3 2 7 6 7 , 3 2 7 6 7 + 1 , 3 2 7 6 7 + 1 0 ) ;
Scilab code Exa 2.1cs Case study 1 avg of numbers 1 // C a s e S t u d y : − C h a p t e r 2 Page No. −47 2 // 1 . C a l c u l a t i o n o f A v e r a g e o f numbers 3 4 N =10; sum1 =0; c o u n t =0; // I n i t i a l i z a t i o n o f v a r i a b l e s 5 p r i n t f( ” E n t e r t e n numbers ” ) ; 6 w h i l e( count < N ) 7 n u m b e r =s c a n f( ” %f ” ) ; // R e a d i n g number ( u s i n g s c a n f ( ) f u n c t i o n ) 8 sum1 = sum1 + n u m b e r ; 9 c o u n t = c o u n t +1; 10 end 11 a v e r a g e = sum1 / N ; // A v a r a g e i s c a l c u l a t e d 12 p r i n t f( ” N = %d Sum1 = %f ” ,N , sum1 ) ; 13 p r i n t f( ” A v e r a g e = %f ” , a v e r a g e ) ;
Scilab code Exa 2.2 typical declarations assignments and values stored in various types of variables
1 // Example 2 . 2
2 // Program s h o w s t y p i c a l d e c l a r a t i o n s , a s s i g n m e n t s and v a l u e s s t o r e d i n v a r i o u s t y p e s o f v a r i a b l e s .
6 n =i n t 3 2( 1 2 3 4 5 6 7 8 9 0 ) ; 7 k =u i n t 1 6( 5 4 3 2 1 ) ; 8 // A s s i g n m e n t s 9 x = 1 . 2 3 4 5 6 7 8 9 0 0 0 0 ; // B y d e f a u l t t y p e i s d o u b l e i n s c i l a b 10 y = 9 . 8 7 6 5 4 3 2 1 ; // −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− 11 p = 1 . 0 ; q = 1 . 0 ; 12 // P r i n t i n g 13 p r i n t f( ” m=%d\ n ” , m ) 14 p r i n t f( ” n=%ld \ n ” , n ) 15 p r i n t f( ” x=%. 1 2 f \ n ” , x ) 16 p r i n t f( ” x=%f \ n ” , x ) 17 p r i n t f( ” y=%. 1 2 f \ n ” , y ) 18 p r i n t f( ” y=%f \ n ” , y ) 19 p r i n t f( ” k=%u p=%f q=%. 1 2 f \ n ” ,k , p , q )
Scilab code Exa 2.2cs Case study temprature in Farenheit and Celsius
1 // C a s e S t u d y : − C h a p t e r 2 Page no . −48 2 // 2 . S o l u t i o n o f t e m p r a t u r e i n F a r e n h e i t and C e l s i u s 3 F _ L O W =0; 4 F _ M A X = 2 5 0 ; 5 STEP =25; 6 f a h r e n h e i t = F _ L O W ; // I n i t i a l i z a t i o n 7 p r i n t f( ” F a h r e n h e i t C e l s i u s \ n \ n ” ) ; 8 w h i l e( f a h r e n h e i t < = F _ M A X ) 9 c e l s i u s =( f a h r e n h e i t - 3 2 . 0 ) / 1 . 8 ; // c o n v e r s i o n f r o m F a r e n h e i t t o C e l s i u s 10 p r i n t f( ”%6 . 2 f %7 . 2 f \ n ” , fahrenheit , c e l s i u s ) ; 11 f a h r e n h e i t = f a h r e n h e i t + STEP ;
12 end
Scilab code Exa 2.3 use of scanf function
1 // Example 2 . 3 2 // The p r o g r a m i l l u s t r a t e t h e u s e o f s c a n f ( ) f u n c t i o n 3 disp( ” E n t e r an i n t e r g e r number : ” ) ; 4 n u m b e r =s c a n f( ”%d” ) ; // Read f r o m k e y b o a r d 5 if( number < 1 0 0 ) then
6 disp( ” Your number i s s m a l l e r t h a n 1 0 0 ” ) ;
7 else
8 disp( ” Your number c o n t a i n more t h a n two d i g i t s ” ) ;
9 end
Scilab code Exa 2.4 Interest calculation using scanf
1 // Example 2 . 4
2 // Sample p r o g r a m 3 ( exm1 . 5 ) d i s c u s s e d i n c h a p t e r 1 c a n be c o n v e r e d i n t o a more f l e x i b l e i n t r a c t i v e p r o g r a m u s i n g s c a n f ( ) f u n c t i o n
3 disp( ” E n t e r i n s i n g l e l i n e s e p a r t e d by s p a c e ” ) ;
4 disp( ” I n p u t amount , i n t e r e s t r a t e , and p e r i o d ” ) ;
5 [ amount , inrate , p e r i o d ]=s c a n f( ” %f %f %d” ) ; // u s e o f s c a n f ( )
9 v a l u e = a m o u n t + i n r a t e * a m o u n t ;
10 p r i n t f( ”%2d Rs %8 . 2 f \ n ” , year , v a l u e )
11 year = year +1;
12 a m o u n t = v a l u e ;
Chapter 3
Operators and Expressions
Scilab code Exa 3.1 Use of integer arithmetic
1 // Example 3 . 1 2 // The p r o g r a m s h o w s t h e u s e o f i n t e g e r a r i t h m e t i c t o c o n v e r t a g i v e n number− 3 // o f d a y s i n t o months and d a y s 4 5 days =i n p u t( ’ E n t e r d a y s : ’ ) ;
6 m o n t h s =i n t 1 6( days /30) ; // Compute f o r months
7 days =i n t 1 6(p m o d u l o( days ,30) ) ; // compute f o r d a y s
8 disp( days , ” Days =” , months , ” Months =” ) ;
Scilab code Exa 3.1cs case study 1 salesmans salary
1 // C a s e S t u d y : − C h a p t e r 3 , Page No : 7 6
2 // 1 . S a l e s m a n ’ s S a l a r y
6 B O N U S _ R A T E = 2 0 0 . 0 0 ; // Bonus f o r e v e r y c o m p u t e r s o l d 7 C O M M I S S I O N = 0 . 0 2 ; // C o m m i s s i o n on t o t a l m o n t h l y s a l e s 8 p r i n t f( ” I n p u t number s o l d and p r i c e \ n [ E n t e r i n s i n g l e l i n e s e p a r a t e d by s p a c e ] ” ) ; 9 [ quantity , p r i c e ] = s c a n f( ”%d %f ” ) ; // I n p u t q u a n t i t y and p r i c e 10 // C o m p u t a t i o n f o r bonus , c o m m i s s i o n and g r o s s s a l a r y o f a s a l e s m a n 11 b o n u s = B O N U S _ R A T E * q u a n t i t y ; 12 c o m m i s s i o n = C O M M I S S I O N * q u a n t i t y * p r i c e ; 13 g r o s s _ s a l a r y = B A S E _ S A L A R Y + b o n u s + c o m m i s s i o n ; 14 p r i n t f( ” Bonus = %6 . 2 f \ n ” , b o n u s ) ; 15 p r i n t f( ” C o m m i s s i o n = %6 . 2 f \ n ” , c o m m i s s i o n ) ; 16 p r i n t f( ” G r o s s s a l a r y = %6 . 2 f \ n ” , g r o s s _ s a l a r y ) ;
Scilab code Exa 3.2 Sequence of squares of numbers
1 // Example 3 . 2 2 // Program t o p r i n t a s e q u e n c e o f s q u a r e s o f numbers . 3 4 N = 1 0 0 ; A =2; 5 a = A ; 6 w h i l e( a < N ) 7 disp( a ) ; // P r i n t s s q u a r e o f number 8 a = a ^2; // compute s q u a r e o f number 9 end
Scilab code Exa 3.2cs case study 2 solution of the quadratic equation 1 // C a s e S t u d y : − C h a p t e r 3 , Page No : 7 7 2 // 2 . S o l u t i o n o f t h e Q u a d r a t i c e q u a t i o n 3 4 5 p r i n t f( ” I n p u t v a l u e s o f a , b , and c \ n ” ) ; 6 a =i n p u t( ” a =” ) ; 7 b =i n p u t( ” b =” ) ; 8 c =i n p u t( ” c =” ) ; 9 d i s c r i m i n a n t = b ^2 -4* a * c ; 10 if( d i s c r i m i n a n t <0)
11 p r i n t f( ” \ n \nROOTS ARE IMAGINARY\ n ” ) ;
12 else 13 // Computes r o o t 1 and r o o t 2 14 r o o t 1 = ( - b + sqrt( d i s c r i m i n a n t ) ) / ( 2 . 0 * a ) ; 15 r o o t 2 = ( - b - sqrt( d i s c r i m i n a n t ) ) / ( 2 . 0 * a ) ; 16 p r i n t f( ” \ n \ n R o o t 1 = %5 . 2 f \ n \ n R o o t 2 = %5 . 2 f \ n ” , root1 , r o o t 2 ) ; 17 end
Scilab code Exa 3.3 Different kind of operators
1 // Example 3 . 3
2 // The p r o g r a m e m p l o y s d i f f r e n t k i n d o f o p e r a t o r s . The r e s u l t s o f t h e i r e v a l u a t i o n a r e a l s o shown
4 // I n c r e m e n t ( i . e . ++)/ D e c r e m e n t (−−) o p e r a t o r s a r e u n a v a i l a b l e i n S c i l a b 5 a =i n t 1 6(15) ; 6 b =i n t 1 6(10) ; 7 a = a +1; // R e p l a c e m e n t f o r ++a 8 c = a - b ; 9 p r i n t f( ” a = %d b = %d c = %d\ n ” ,a , b , c ) ; 10 b = b +1; // R e p l a c e m e n t f o r b++ 11 d = b + a ; 12 p r i n t f( ” a = %d b = %d d = %d\ n ” ,a , b , d ) ; 13 p r i n t f( ” a / b = %d\ n ” , a / b ) ; // D i v i s i o n o p e r a t o r 14 p r i n t f( ” pmodulo ( a , b ) = %d\ n ” ,p m o d u l o( a , b ) ) ; // Modulus o p e r a t i o r 15 p r i n t f( ” a ∗ b = %d\ n ” , a * b ) ; // M u l t i p l i c a t i o n 16 // I n s c i l a b t h e r i s no c o n d i t i o n a l o p e r a t o r ( ? : ) , h e n c e ’ i f ’ c a n be u s e d i n p l a c e o f ? : 17 if( c > d ) then 18 disp(1) ; 19 end 20 if( c < d ) then 21 disp(0) ; 22 end
Scilab code Exa 3.4 Use of variables in expressions
1 // Example 3 . 4 2 // The p r o g r a m i l l u s t r a t e s t h e u s e o f v a r i a b l e s i n e x p r e s s i o n s and t h e i r e v a l u a t i o n . 3 4 a =9; b =12; c =3; 5 // E x p r e s s i o n s and t h e i r e v a l u a t i o n s
6 x = a - b /3+ c *2 -1; 7 y = a - b /(3+ c *(2 -1) ) ; 8 z = a -( b /(3+ c ) *2) -1; 9 10 p r i n t f( ” x=%f \ n ” , x ) 11 p r i n t f( ” y=%f \ n ” , y ) 12 p r i n t f( ” z=%f \ n ” , z ) 13 // d i s p c a n be u s e d . . 14 // d i s p ( x , ” x =”) 15 // d i s p ( y , ” y =”) 16 // d i s p ( z , ” z =”)
Scilab code Exa 3.5 Round off errors
1 // Example 3 . 5 2 // Output o f p r o g r a m s h o w s round− o f f e r r o r s t h a t c a n o c c u r i n c o m p u t a t i o n o f f l o a t i n g p o i n t numbers 3 4 //Sum o f n t e r m s o f 1/ n 5 c o u n t =1; 6 sum1 =0; 7 n =i n p u t( ” E n t e r v a l u e o f n : ” ) ; 8 term = 1 . 0 / n ; 9 w h i l e( count <= n )
10 sum1 = sum1 + term ;
11 c o u n t = c o u n t +1;
12 end
Scilab code Exa 3.6 Cast to evaluate the equation 1 // Example 3 . 6 2 // Program u s i n g a c a s t t o e v a l u a t e t h e e q u a t i o n . 3 4 sum1 =0; 5 for n =int8( 1 : 1 0 ) 6 sum1 = sum1 +1/d o u b l e( n ) ; // c o n v e r s i o n f r o m ’ i n t ’ t o ’ d o u b l e ’ o r ’ f l o a t ’ 7 p r i n t f( ”%2d %6 . 4 f \ n ” ,n , sum1 ) ; 8 end
Chapter 4
Managing Input and Output
Operations
Scilab code Exa 4.1 Use of getchar function
1 // Exaymple 4 . 1 2 // The p r o g r a m s h o w s t h e u s e o f g e t c h a r f u n c t i o n i n an i n t r a c t i v e e n v i r o n m e n t . 3 // I n S c i l a b i n p l a c e o f g e t c h a r f u n c t i o n s c a n f f u n c t i o n c a n be u s e d t o g e t 4 // c h a r a c t e r a s t h e r e i s no g e t c h a r f u n c t i o n i n S c i l a b . 5
6 disp( ” Would you l i k e t o know my name ? ” ) ;
7 disp( ” Type Y f o r YES and N f o r NO : ” ) ;
8 a n s w e r =s c a n f( ”%c” ) ; // R e a d i n g c h a r a c t e r
9 if ( a n s w e r == ’Y ’ ) |( a n s w e r == ’ y ’ ) then // T e s t f o r a n s w e r
10 disp( ”My name i s BUSY BEE” ) ;
11 else
Scilab code Exa 4.1cs Case study 1 Inventory report 1 // C a s e S t u d y : − C h a p t e r 4 , Page No : 1 0 6 2 // 1 . I n v e n t o r y R e p o r t 3 4 I T E M S =4; 5 i =1; 6 p r i n t f( ” [ E n t e r i n s i n g l e l i n e s e p e r a t e d be s p a c e s ] \ n ” ) ; 7 w h i l e( i <= 4) 8 p r i n t f( ” E n t e r c o d e , q u a n t i t y , and r a t e : ” ) ; 9 [ code ( i ) , q u a n t i t y ( i ) , rate ( i ) ]=s c a n f( ”%s %d %f ” ) ; 10 i = i +1; 11 end 12 p r i n t f( ”INVENTORY REPORT\ n ” ) ; 13 p r i n t f( ” −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−\n ” ) ; 14 p r i n t f( ” Code Q u a n t i t y Ra t e V a l u e \ n ” ) ; 15 p r i n t f( ” −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−\n ” ) ; 16 t o t a l _ v a l u e =0; 17 i =1; 18 w h i l e( i <= I T E M S ) 19 v a l u e = q u a n t i t y ( i ) * rate ( i ) ; 20 p r i n t f( ” %6s %10d %10 . 2 f %e\ n ” , code ( i ) , q u a n t i t y ( i ) , rate ( i ) , v a l u e ) ; 21 t o t a l _ v a l u e = t o t a l _ v a l u e + v a l u e ; 22 i = i +1;
23 end 24 p r i n t f( ” −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−\ n ” ) ; 25 p r i n t f( ” T o t a l V a l u e = %e\ n ” , t o t a l _ v a l u e ) ; 26 p r i n t f( ” −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−\ n ” ) ;
Scilab code Exa 4.2 Whether character is alphabet or digit or special char-acter 1 // Example 4 . 2 2 // The p r o g r a m r e q u e s t s t h e u s e r t o e n t e r a c h a r a c t e r and d i s p l a y a m e s s a g e on 3 // t h e s c r e e n t e l l i n g t h e u s e r w h e t h e r t h e c h a r a c t e r i s an a l p h a b e t o r d i g i t , 4 // o r any o t h e r s p e c i a l c h a r a c t e r . 5 6 disp( ” P r e s s any k e y ” ) ; 7 c h a r a c t e r =s c a n f( ”%c” ) ; // R e a d i n g c h a r a c t e r 8 if ( i s l e t t e r ( c h a r a c t e r ) ) then // T e s t f o r l e t t e r 9 disp( ” The c h a r a c t e r i s a l e t t e r ” ) ; 10 e l s e i f ( i s d i g i t ( c h a r a c t e r ) ) then // T e s t f o r d i g i t 11 disp( ” The c h a r a c t e r i s a d i g i t ” ) ; 12 else 13 disp( ” The c h a r a c t e r i s n o t a l p h a n u m e r i c ”
Scilab code Exa 4.2cs Case study 2 Reliability graph 1 // C a s e s t u d y : c h a p t e r 4 2 // 2 . R e l i a b i l i t y Graph 3 4 L A M B D A = 0 . 0 0 1 ; 5 for i = 1 : 2 7 6 p r i n t f( ”−−” ) ; 7 end 8 p r i n t f( ” \ n ” ) ; 9 for t = 0 : 1 5 0 : 3 0 0 0 10 r =exp( - L A M B D A * t ) ; 11 R =i n t 3 2(50* r + 0 . 5 ) ; 12 p r i n t f( ” | ” ) ; 13 for i =1: R 14 p r i n t f( ” ∗ ” ) ; 15 end 16 p r i n t f( ”#\n ” ) ; 17 end 18 for i =1:2 19 p r i n t f( ” | \ n ” ) ; 20 end
Scilab code Exa 4.3 Print character in reverse case
1 // Example 4 . 3
2 // A p r o g r a m t h a t r e a d s a c h a r a c t e r f r o m t h e k e y b o a r d and t h e n p r i n t i n r e v e r s e
3 // c a s e , t h a t i s , i f i n p u t i s i n u p p e r c a s e , t h e o u t p u t w i l l be l o w e r c a s e and v i c e −v e r s a 4 disp( ” E n t e r an a l p h a b e t ” ) ; 5 a l p h a b e t =s c a n f( ”%c” ) ; // R e a d i n g c h a r a c t e r 6 if((a s c i i( a l p h a b e t ) ) >=97) then
7 disp(c o n v s t r( alphabet , ” u ” ) ) ; // R e v e r s e and d i s p l a y
8 else
9 disp(c o n v s t r( alphabet , ” l ” ) ) ; // R e v e r s e and d i s p l a y
10 end
Scilab code Exa 4.4 Input formatting options
1 // Example 4 . 4 2 // The p r o g r a m i l l u s t r a t e s t h e v a r i o u s o p t i o n s f o r r e a d i n g 3 // i n t e g e r s a r e e x p e r i m e n t e d i n t h i s p r o g r a m 4 5 6 p r i n t f( ” E n t e r t h r e e i n t e g e r numbers \ n ” ) ; 7 [ n , a , b , c ]=m s c a n f( ”%d %∗ d %d” ) ; 8 disp( c , b , a ) ; 9 p r i n t f( ” E n t e r two 4− d i g i t numbers \ n ” ) ; 10 [ n , x , y ]=m s c a n f( ”%2d %4d” ) ; 11 p r i n t f( ’%d %d\ n ’ ,x , y ) ; 12 13 p r i n t f( ” E n t e r two i n t e g e r s \ n ” ) ; 14 [ n , a , x ]=m s c a n f( ”%d %d” ) ; 15 p r i n t f( ’%d %d\ n ’ ,a , x ) ;
18 [ n , p , q , r ]=m s c a n f( ”%3d %4d %3d” ) ; 19 p r i n t f( ’%d %d %d\ n ’ ,p , q , r ) ; 20 21 p r i n t f( ” E n t e r two t h r e e d i g i t numbers \ n ” ) ; 22 [ n , x , y ]=m s c a n f( ”%d %d” ) ; 23 p r i n t f( ’%d %d \ n ’ ,x , y ) ;
Scilab code Exa 4.5 Reading of real numbers
1 // Example 4 . 5 2 // R e a d i n g o f r e a l numbers ( i n b o t h d e c i m a l p o i n t and e x p o n e n t i a l n o t a t i o n 3 4 p r i n t f( ” V a l u e s o f x and y : ” ) ; 5 [ x , y ]=s c a n f( ” %f %e” ) ; // r e a d i n g x [ d e c i m a l p o i n t ] and y [ e x p o n e n t i a l ] f r o m s t a n d a r d i n p u t 6 p r i n t f( ” \ n ” ) ; 7 p r i n t f( ” x = %f \ ny = %f \ n ” ,x , y ) ; 8 p r i n t f( ” V a l u e s o f p and q : ” ) ; 9 [ p , q ]=s c a n f( ” %lg %lg ” ) ; 10 p r i n t f( ” \ np = %. 1 2 f \ nq = %. 1 2 e \ n ” ,p , q ) ;
Scilab code Exa 4.6 Reading of strings
1 // Example 4 . 6
2 // R e a d i n g o f s t r i n g s u s i n g %wc and %ws .
3
4 // s c a n f ( ) c a n o n l y r e a d o n e c h a r a c t e r a t a t i m e and r e t u r n i t t o name1 , t h e r e f o r e
5 // m s c a n f ( ) i s u s e d t h a t c a n r e a d more t h a n o n e c h a r a c t e r
6 p r i n t f( ” E n t e r s e r i a l number and name o n e : ” ) ;
7 [ n , no , n a m e 1 ]=m s c a n f( ”%d %15c ” ) ;
8 p r i n t f( ”%d %15s \ n ” , no , n a m e 1 ) ;
9
10 // Read and d i s p l a y a s t r i n g
11 p r i n t f( ” E n t e r s e r i a l number and name two : ” ) ;
12 [ no , n a m e 2 ]=s c a n f( ”%d %s” ) ;
13 p r i n t f( ”%d %15s \ n ” , no , n a m e 2 ) ;
14
15 // Read and d i s p l a y a s t r i n g o f w i d t h 15
16 p r i n t f( ” E n t e r s e r i a l number and name t h r e e : ” ) ;
17 [ no , n a m e 3 ]=s c a n f( ”%d %15s ” ) ;
18 p r i n t f( ”%d %15s ” , no , n a m e 3 ) ;
Scilab code Exa 4.8 Testing for correctness
1 // Example 4 . 8 2 // The p r o g r a m i l l u s t r a t e s t h e t e s t i n g f o r c o r r e c t n e s s o f r e a d i n g d a t a by s c a n f f u n c t i o n 3 4 // I n S c i l a b m s c a n f f u n c t i o n i s s i m i l a r t o s c a n f f u n c t i o n o f c 5 p r i n t f( ” E n t e r v a l u e s o f a , b and c ” ) ; 6 [ n , a , b , c ]=m s c a n f( ”%d %f %c” ) ; 7 if( n ==3) then // T e s t c o n d i t i o n 8 p r i n t f( ” a = %d b = %f c = %c” ,a , b , c ) ; 9 else 10 p r i n t f( ” E r r o r i n i n p u t . ” ) ; 11 end
Scilab code Exa 4.9 Output of integer numbers 1 // Example 4 . 9 2 // The p r o g r a m i l l u s t r a t e s t h e o u t p u t o f i n t e g e r numbers u n d e r v a r i o u s f o r m a t s 3 4 m =i n t 1 6( 1 2 3 4 5 ) ; // i n t e g e r v a r i a b l e m 5 n =i n t 3 2( 9 8 7 6 5 4 ) ; // i n t e g e r v a r i a b l e n 6 p r i n t f( ’%d\ n ’ , m ) ; 7 p r i n t f( ’ %10d \ n ’ , m ) ; 8 p r i n t f( ’ %010d \ n ’ , m ) ; 9 p r i n t f( ’%−10d \ n ’ , m ) ; 10 p r i n t f( ’ %10d \ n ’ , n ) ; 11 p r i n t f( ’ %10d \ n ’ ,- n ) ;
Scilab code Exa 4.10 Printing a real number
1 // Example 4 . 1 0 2 // The p r o g r a m i l l u s t r a t e s a l l t h e o p t i o n s o f p r i n t i n g a r e a l number . 3 4 y = 9 8 . 7 6 5 4 ; // r e a l number 5 // V a r i o u s o p t i o n s o f p r i n t i n g a r e a l number 6 p r i n t f( ’ %7 . 4 f \ n ’ , y ) ; 7 p r i n t f( ’ %f \ n ’ , y ) ; 8 p r i n t f( ’ %7 . 2 f \ n ’ , y ) ; 9 p r i n t f( ’%− 7 . 2 f \ n ’ , y ) ; 10 p r i n t f( ’ %07 . 2 f \ n ’ , y ) ;
11 p r i n t f( ’ %7 . 2 f \ n ’ , y ) ; 12 p r i n t f( ’ \ n ’ ) ; 13 p r i n t f( ’ %10 . 2 e \ n ’ , y ) ; 14 p r i n t f( ’ %12 . 4 e \ n ’ ,- y ) ; 15 p r i n t f( ’%− 1 0 . 2 e \ n ’ , y ) ; 16 p r i n t f( ’ %e\ n ’ , y ) ;
Scilab code Exa 4.11 Printing of character and strings
1 // Example 4 . 1 1
2 // The p r o g r a m i l l u s t r a t e s t h e p r i n t i n g o f c h a r a c t e r and s t r i n g s .
3
4 x = ’A ’ ; // x v a r i a b l e h a s c h a r a c t e r
5 name = ’ ANIL KUMAR GUPTA ’ ; // name v a r i a b l e h a s s t r i n g
6 disp( ”OUTPUT OF CHARACTERS” ) ;
7 p r i n t f( ’ %c\ n%3c \ n%5c \ n ’ ,x , x , x ) ;
8 p r i n t f( ’ %3c \n%c\ n ’ ,x , x ) ;
9 p r i n t f( ’ \ n ’ ) ;
10 disp( ”OUTPUT OF STRINGS” ) ; // d i s p c a n a l s o be u s e d f o r d i s p l a y 11 p r i n t f( ’ %s\ n ’ , name ) ; 12 p r i n t f( ’ %20s \ n ’ , name ) ; 13 p r i n t f( ’ %20 . 1 0 s \ n ’ , name ) ; 14 p r i n t f( ’%. 5 s \ n ’ , name ) ; 15 p r i n t f( ’%− 2 0 . 1 0 s \ n ’ , name ) ; 16 p r i n t f( ’ %5s \ n ’ , name ) ;
Chapter 5
Decision Making and Branching
Scilab code Exa 5.1 Ratio
1 // Example 5 . 1 2 // The p r o g r a m r e a d s f o u r v a l u e s a , b , c and d f r o m t h e t e r m i n a l and 3 // e v a l u a t e s t h e r a t i o o f ( a+b ) t o ( c+d ) and p r i n t s t h e r e s u l t , i f c−d 4 // i s n o t e q u a l t o z e r o 5 6 disp( ” E n t e r f o u r i n t e g e r v a l u e s ” ) ; 7 a =int8(i n p u t( ” a=” ) ) ; 8 b =int8(i n p u t( ” b=” ) ) ; 9 c =int8(i n p u t( ” c=” ) ) ; 10 d =int8(i n p u t( ” d=” ) ) ; 11 12 if( c - d ~= 0) then // E x e c u t e s t a t e m e n t b l o c k 13 r a t i o =d o u b l e( a + b ) /d o u b l e( c - d ) ; 14 p r i n t f( ” R a t i o=%f \ n ” , r a t i o ) ; 15 end
Scilab code Exa 5.1cs Case study 1 range of numbers 1 // C a s e S t u d y : − C h a p t e r 5 , Page No : 1 3 9 2 // 1 . Range o f numbers 3 4 sum1 =0; 5 c o u n t =0; 6 f =0; v a l u e =1; 7 p r i n t f( ” E n t e r n u m b e r s [ p r e s s e n t e r a f t e r e a c h number ] : \ n i n p u t a NEGATIVE number t o end \ n ” ) ;
8 w h i l e( v a l u e ) 9 [ v a l u e ]=s c a n f( ” %f ” ) ; // Read d a t a 10 if( value <0) then 11 b r e a k; 12 end 13 c o u n t = c o u n t +1; 14 // C a l c u l a t i n g h e i g h t and l o w e s t v a l u e 15 if( c o u n t ==1) then 16 high = v a l u e ; 17 low = v a l u e ;
18 e l s e i f( value > high ) then
19 high = v a l u e ;
20 e l s e i f( value < low ) then
21 low = v a l u e ; 22 end 23 // C a l c u l a t e sum 24 sum1 = sum1 + v a l u e ; 25 end 26 a v e r a g e = sum1 / c o u n t ; // A v e r a g e c o s t
27 r a n g e 1 = high - low ; // Range o f v a l u e s // P r i n t t h e r e s u l t s
30 p r i n t f( ” H i g h e s t −v a l u e s : %f \ n L o w e s t −v a l u e : %f \ n ” , high , low ) ;
31 p r i n t f( ” Range : %f \ n A v a r a g e : %f \ n ” , range1 , a v e r a g e ) ;
Scilab code Exa 5.2 counts the number of boys
1 // Example 5 . 2
2 // The p r o g r a m c o u n t s t h e number o f b o y s whose w e i g h t i s l e s s t h a n 50Kg 3 // and h e i g h t i s g r e a t e r t h a n 1 7 0 cm . 4 5 c o u n t =int(0) ; 6 disp( ” E n t e r w e i g h t and h e i g h t f o r 10 b o y s ” ) ; 7 for i = 1 : 1 0 8 [ weight , h e i g h t ]=s c a n f( ” %f %f ” ) ;
9 if( weight <50& height > 1 7 0 ) then // T e s t f o r w e i g h t and h e i g h t
10 c o u n t = c o u n t +1;
11 end
12 end
13 disp( ” Number o f b o y s w i t h w e i g h t <50 kg and h e i g h t >170 cm =” ) ;
14 disp( c o u n t )
Scilab code Exa 5.2cs Case study 2 Pay Bill Calculations
2 // 2 . Pay− B i l l C a l c u l a t i o n s 3 CA1 = 1 0 0 0 ; 4 CA2 = 7 5 0 ; 5 CA3 = 5 0 0 ; 6 CA4 = 2 5 0 ; 7 EA1 = 5 0 0 ; 8 EA2 = 2 0 0 ; 9 EA3 = 1 0 0 ; 10 EA4 =0; 11 l e v e l =1; 12 w h i l e( l e v e l ) 13 p r i n t f( ” E n t e r 0 [ z e r o ] f o r l e v e l t o end ” ) ; 14 // Read d a t a 15 l e v e l =i n p u t( ” E n t e r l e v e l : ” ) ; 16 if( l e v e l ==0) 17 b r e a k; 18 end
19 p r i n t f( ” E n t e r j o b number , and b a s i c pay \ n ” ) ;
20 // Read d a t a
21 [ j o b n u m b e r , b a s i c ]=s c a n f( ”%d %f ” ) ;
22 // D e c i d e l e v e l number and c a l c u l a t e p e r k s
23 s e l e c t l e v e l
24 case 1 then p e r k s = CA1 + EA1 ;
25 case 2 then p e r k s = CA2 + EA2 ;
26 case 3 then p e r k s = CA3 + EA3 ;
27 case 4 then p e r k s = CA4 + EA4 ;
28 else 29 p r i n t f( ” E r r o r i n l e v e l c o d e ” ) ; 30 r e t u r n; 31 end 32 33 h o u s e _ r e n t = 0 . 2 5 * b a s i c ; 34 // C a l c u l a t e g r o s s s a l a r y 35 g r o s s = b a s i c + h o u s e _ r e n t + p e r k s ; 36 // C a l c u l a t e i n c o m e t a x 37 if ( gross < = 2 0 0 0 ) then
40 i n c o m e t a x = 0 . 0 3 * g r o s s ; 41 e l s e i f( gross < = 5 0 0 0 ) 42 i n c o m e t a x = 0 . 0 5 * g r o s s ; 43 else 44 i n c o m e t a x = 0 . 0 8 * g r o s s ; 45 end 46 // Compute t h e n e t s a l a r y 47 net = gross - i n c o m e t a x ; 48 // P r i n t t h e r e s u l t s 49 p r i n t f( ”%d %d %. 2 f \ n ” , level , j o b n u m b e r , net ) ; 50 end
51 p r i n t f( ”END OF THE PROGRAM” ) ;
Scilab code Exa 5.3 Evaluate the power series
1 // Example 5 . 3 2 // A p r o g r a m t o e v a l u a t e t h e pow er s e r i e s . I t u s e s i f . . . e l s e t o t e s t a c c u r a c y . 3 // e ˆ x=1+x+x ˆ 2 / 2 ! + x ˆ 3 / 3 ! + +x ˆ n / n ! , 0 < x<1 4 5 A C C U R A C Y = 0 . 0 0 0 1 ; 6 x =i n p u t( ” E n t e r v a l u e o f x : ” ) ;
7 n =1; term =1; sum1 =1; c o u n t =int8(1) ;
8 w h i l e( n < = 1 0 0 )
9 term = term * x / n ;
10 sum1 = sum1 + term ;
11 c o u n t = c o u n t +1; 12 if( term < A C C U R A C Y ) then // T e s t f o r a c c u r a c y 13 n = 9 9 9 ; 14 else 15 n = n +1; 16 end 17 end 18 // P r i n t r e s u l t s
Scilab code Exa 5.4 Largest of the three numbers 1 // Example 5 . 4 2 // The p r o g r a m s e l e c t s and p r i n t s t h e l a r g e s t o f t h e t h r e e numbers 3 // u s i n g n e s t e d i f . . . e l s e s t a t e m e n t 4 5 disp( ” E n t e r t h r e e v a l u e s ” ) ; 6 A =i n p u t( ”A=” ) ; 7 B =i n p u t( ”B=” ) ; 8 C =i n p u t( ”C=” ) ; 9 disp( ” L a r g e s t v a l u e i s : ” ) ; 10 if( A > B ) , // T e s t f o r l a r g e s t b e t w e e n A &B 11 if( A > C ) , // T e s t f o r l a r g e s t b e t w e e n A &C 12 disp( A ) ; 13 else 14 disp( C ) ; 15 end 16 else 17 if( C > B ) , // T e s t f o r l a r g e s t b e t w e e n C& B 18 disp( C ) ; 19 else 20 disp( B ) ; 21 end 22 end
Scilab code Exa 5.5 Reads the customer number and power consumed
1 // Example 5 . 5
2 // The p r o g r a m r e a d s t h e c u s t o m e r number and po wer consumed and p r i n t s
3 // t h e amount t o be p a i d by t h e c u s t o m e r
4
5 disp( ” E n t e r CUSTOMER NO . and UNITS consumed ” ) ;
6 // Read d a t a 7 c u s t n u m =i n p u t( ”CUSTOMER NO . : ” ) ; 8 u n i t s =i n p u t( ”UNITS : ” ) ; 9 // Use o f e l s e . . . i f l a d d e r 10 // C a l c u l a t e s c h a r g e s 11 if( units < = 2 0 0 ) , 12 c h a r g e s = 0 . 5 * u n i t s ; 13 e l s e i f( units < = 4 0 0 ) , 14 c h a r g e s = 1 0 0 + 0 . 6 5 * ( units - 2 0 0 ) ; 15 e l s e i f( uints < = 6 0 0 ) , 16 c h a r g e s = 2 3 0 + 0 . 8 * ( units - 4 0 0 ) ; 17 else 18 c h a r g e s = 3 9 0 + ( units - 6 0 0 ) ; 19 end 20 // P r i n t r e s u l t s 21 p r i n t f( ” C u s t o m e r No : %d C h a r g e s=%. 2 f ” , custnum , c h a r g e s ) ;
1 // Example 5 . 6 2 // A p r o g r a m t o p r o c e s s l o a n a p p l i c a t i o n s and t o s a n c t i o n l o a n s . 3 4 M A X L O A N = 5 0 0 0 0 ; 5 disp( ” E n t e r t h e v a l u e s o f p r e v i o u s two l o a n s ” ) ; 6 l o a n 1 =i n t 3 2(i n p u t( ” E n t e r f i r s t l o a n : ” ) ) ; 7 l o a n 2 =i n t 3 2(i n p u t( ” E n t e r s e c o n d l o a n : ” ) ) ; 8 l o a n 3 =i n t 3 2(i n p u t( ” E n t e r t h e v a l u e s o f new l o a n : ” ) ) ; 9 s u m 2 3 = l o a n 2 + l o a n 3 ; 10 // C a l c u l a t e t h e s a n c t i o n l o a n 11 if( loan1 >0) , 12 s a n c l o a n =0; 13 e l s e i f( sum23 > M A X L O A N ) , 14 s a n c l o a n = MAXLOAN - l o a n 2 ; 15 else 16 s a n c l o a n = l o a n 3 ; 17 end 18 // P r i n t t h e r e s u l t s 19 p r i n t f( ” P r e v i o u s l o a n s p e n d i n g : %d %d\ n ” , loan1 , loan2 ) ; 20 p r i n t f( ” Loan r e q u e s t e d =%d\ n ” , loan3 ) ; 21 p r i n t f( ” Loan s a n c t i o n e d =%d\ n ” , sa nc lo an ) ;
Scilab code Exa 5.7 square root for five numbers
1 // Example 5 . 7
2 // The p r o g r a m e v a l u a t e s t h e s q u a r e r o o t f o r f i v e numbers .
3
7 x =s c a n f( ” %f ” ) ; 8 if( x <0) then 9 p r i n t f( ” V a l u e − %d i s n e g a t i v e \ n ” , count ) ; 10 else 11 y =sqrt( x ) ; // C a l c u l a t e s q u a r e r o o t 12 p r i n t f( ” %f \ t % f \ n ” ,x , y ) ; // P r i n t r e s u l t 13 end 14 c o u n t = c o u n t +1; 15 end 16 p r i n t f( ” End o f c o m p u t a t i o n ” ) ;
Chapter 6
Decision Making and Looping
Scilab code Exa 6.1 evaluate the equation
1 // Example 6 . 1
2 //A p r o g r a m t o e v a l u a t e t h e e q u a t i o n y=x ˆ n when n i s a non−n e g a t i v e i n t e g e r . 3 4 x =i n p u t( ” E n t e r t h e v a l u e o f x : ” ) ; 5 n =i n p u t( ” E n t e r t h e v a l u e o f n : ” ) ; 6 y = 1 . 0 ; c o u n t =1; // i n t i a l i z a t i o n 7 // Loop b e g i n s 8 w h i l e( count <= n ) // T e s t i n g 9 y = y * x ; 10 c o u n t = c o u n t +1; // I n c r e a m e n t i n g 11 end 12 // End o f l o o p 13 p r i n t f( ” x = %f ; n = %d ; x t o pow er n = %f \ n ” ,x ,n , y ) ;
1 // C a s e S t u d y : − C h a p t e r 6 , Page No : 1 7 6 2 // 1 . T a b l e o f B i n o m i a l C o e f f i c i e n t s 3 4 MAX =10; 5 p r i n t f( ”mx” ) ; 6 for m = 0 : 1 0 7 p r i n t f( ”%4d” , m ) ; 8 end 9 p r i n t f( ” \n −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−\n ” ) ; 10 m =0; 11 // p r i n t t h e t a b l e o f b i n o m i a l c o e f f i c i e n t s f o r m=10 12 // C o m p u t a t i o n u s i n g w h i l e l o o p 13 w h i l e( m <= MAX ) 14 p r i n t f( ”%2d” , m ) ; 15 x =0; 16 b i n o m =1; 17 w h i l e( x <= m ) 18 if( m ==0| x ==0) 19 p r i n t f( ”%4d” , b i n o m ) ; // P r i n t t h e r e s u l t i . e . binom 20 else 21 b i n o m = b i n o m *( m - x +1) / x ; // compute t h e b i n o m i a l c o e f f i c i e n t 22 p r i n t f( ”%4d” , b i n o m ) ; // P r i n t t h e r e s u l t i . e . binom 23 end 24 x = x +1; 25 end 26 p r i n t f( ” \ n ” ) ; 27 m = m +1; 28 end 29 p r i n t f( ” −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−\n ” ) ;
Scilab code Exa 6.2 Multiplication table 1 // Example 6 . 2 2 //A p r o g r a m t o p r i n t m u l t i p l i c a t i o n t a b l e f r o m 1 ∗ 1 t o 1 2 ∗ 1 0 . 3 4
5 disp( ” MULTIPLICATION TABLE ” ) ;
6 disp( ”−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−” ) ; 7 row =1; 8 w h i l e( row < = 1 2 ) // O u t e r l o o p b e g i n s 9 c o l u m n =1; 10 w h i l e( column < = 1 0 ) // I n n e r l o o p b e g i n s 11 y = row * c o l u m n ; 12 p r i n t f( ”%4d” , y ) ; 13 c o l u m n = c o l u m n +1; 14 end 15 row = row +1; 16 p r i n t f( ” \ n ” ) ; 17 end
Scilab code Exa 6.2cs Case study 2 Histogram
1 // C a s e S t u d y : − C h a p t e r 6
2 // 2 . H i s t o g r a m
6 p r i n t f( ” E n t e r e m p l o y e e s i n Group−%d : ” ,n ) ; 7 v a l u e ( n ) =s c a n f( ”%d” ) ; // Read d a t a i n t h e a r r a y named v a l u e 8 p r i n t f( ”%d\ n ” , v a l u e ( n ) ) ; // P r i n t number w h i c h i s a t p o s i t i o n n 9 end 10 p r i n t f( ” \ n ” ) ; 11 p r i n t f( ” | \ n ” ) ; 12 // C o m p u t a t i o n u s i n g f o r l o o p and draw a h i s t o g r a m 13 for n =1: N 14 for i =1:3 15 if( i ==2) then 16 p r i n t f( ” Group−%1d | ” , n ) ; 17 else 18 p r i n t f( ” | ” ) ; 19 end 20 for j =1: v a l u e ( n ) 21 p r i n t f( ” ∗ ” ) ; 22 end 23 if( i ==2) 24 p r i n t f( ” (%d) \ n ” , v a l u e ( n ) ) ; 25 else 26 p r i n t f( ” \ n ” ) ; 27 end 28 end 29 p r i n t f( ” | \ n ” ) ; 30 end
Scilab code Exa 6.3 Uses a for loop
1 // Example 6 . 3
2 // The p r o g r a m u s e s a f o r l o o p t o p r i n t t h e ” Power o f 2” t a b l e f o r t h e
3 // po we r 0 t o 2 0 , b o t h p o s i t i v e and n e g a t i v e . 4 5 disp( ”−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−” ) ; 6 p r i n t f( ” 2 t o p o w e r n n 2 t o po we r −n \ n ” ) ; 7 disp( ”−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−” ) ; 8 for n = 0 : 2 0 // Loop b e g i n s 9 p =2^ n ; 10 q =2^ - n ; 11 p r i n t f( ”%7d %9d %10 . 1 2 f \ n ” ,p ,n , q ) ; 12 end // Loop e n d s
Scilab code Exa 6.3cs Case study 3 Minimum Cost
1 // C a s e S t u d y : − C h a p t e r 6 2 // 3 . Minimum C o s t 3 4 for p = 0 : 0 . 1 : 1 0 5 cost =48 -8* p + p ^2; 6 if( p ==0) , 7 c o s t 1 = cost ; 8 c o n t i n u e ; // Use o f c o n t i n u e s t a t e m e n t 9 end 10 11 if( cost >= c o s t 1 ) , 12 b r e a k; // Use o f b r e a k s t a t e m e n t 13 end 14 c o s t 1 = cost ; 15 p1 = p ; 16 end 17 p =( p + p1 ) / 2 . 0 ;
20 p r i n t f( ”MINIMUM COST=%. 2 f AT p=%. 1 f \ n ” , cost , p ) ;
Scilab code Exa 6.4 Read the marks and print total marks
1 // Example 6 . 4
2 //A c l a s s o f n s t u d e n t s t a k e an a n n u a l e x a m i n a t i o n i n m s u b j e c t s .
3 // A p r o g r a m t o r e a d t h e marks o b t a i n e d by e a c h s t u d e n t i n v a r i o u s s u b j e c t s
4 // and t o c o m p a r e and p r i n t t h e t o t a l marks o b t a i n e d by e a c h o f them .
5
6 F I R S T = 3 6 0 ; S E C O N D = 2 4 0 ;
7 disp( ” E n t e r number o f s t u d e n t s and s u b j e c t s ” ) ;
8 [ n , m ]=s c a n f( ”%d %d” ) ; 9 for i =1: n 10 r o l l _ n u m b e r =i n p u t( ” E n t e r r o l l n u m b e r : ” ) ; 11 t o t a l =0; 12 p r i n t f( ” E n t e r marks o f %d s u b j e c t s f o r ROLL NO %d” ,m , r o l l _ n u m b e r ) ; 13 p r i n t f( ” [ E n t e r e a c h i n n e w l i n e ] ” ) ; 14 for j =1: m 15 m a r k s =s c a n f( ”%d” ) ; 16 t o t a l = t o t a l + m a r k s ; // Compute t h e t o t a l 17 end 18 // p r i n t t h e t o t a l marks 19 p r i n t f( ”TOTAL MARKS =%d” , t o t a l ) ; 20 // T e s t f o r d i v i s i o n and d i s p l a y i t 21 if( total >= F I R S T ) , 22 disp( ” F i r s t D i v i s i o n ” ) ; 23 e l s e i f( total >= S E C O N D ) 24 disp( ” S e c o n d D i v i s i o n ” ) ; 25 else
26 disp( ” ∗ ∗ ∗F A I L ∗ ∗ ∗ ” )
27 end
28 end
Scilab code Exa 6.4cs Case study 4 Plotting of two Functions
1 // C a s e S t u d y : − C h a p t e r 6 2 // 4 . P l o t t i n g o f two F u n c t i o n s i . e . y1=e x p (− ax ) and y2=e x p (− ax ˆ 2 / 2 ) 3 4 a = 0 . 4 ; 5 p r i n t f( ” y−−−−−−−> \ n ” ) ; 6 p r i n t f( ” 0 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−\ n ” ) ; 7 for x = 0 : 0 . 2 5 : 4 8 // E v a l u a t i o n o f f u n c t i o n s 9 y1 =i n t 3 2(50*exp( - a * x ) + 0 . 5 ) ; 10 y2 =i n t 3 2(50*exp( - a *( x ^2) /2) + 0 . 5 ) ; 11 // p l o t t i n g when y1=y2 12 if( y1 == y2 ) , 13 if( x = = 2 . 5 ) , 14 p r i n t f( ” x | ” ) ; 15 else 16 p r i n t f( ” | ” ) ; 17 end 18 for i =1:( y1 -1) 19 p r i n t f( ” ” ) ; 20 end 21 p r i n t f( ”#\n ” ) ;
24 25 // P l o t t i n g when y1>y2 26 if( y1 > y2 ) , 27 if( x = = 2 . 5 ) , 28 p r i n t f( ” x | ” ) ; 29 else 30 p r i n t f( ” | ” ) ; 31 end 32 for i =1: y2 -1 33 p r i n t f( ” ” ) ; 34 end 35 p r i n t f( ” ∗ ” ) ; 36 for i =1:( y1 - y2 -1) 37 p r i n t f( ”−” ) ; 38 end 39 p r i n t f( ” 0\ n ” ) ; 40 c o n t i n u e ; 41 end 42 43 // P l o t t i n g when y2>y1 44 if( y2 > y1 ) , 45 if( x = = 2 . 5 ) 46 p r i n t f( ” x | ” ) ; 47 else 48 p r i n t f( ” | ” ) ; 49 end 50 for i =1:( y1 -1) 51 p r i n t f( ” ” ) ; 52 end 53 p r i n t f( ” 0 ” ) ; 54 for i =1:( y2 - y1 -1) 55 p r i n t f( ”−” ) ; 56 end 57 p r i n t f( ” ∗\ n ” ) ; 58 end 59 end 60 p r i n t f( ” | \ n ” ) ;
Scilab code Exa 6.5 Use of the break statement 1 // Example 6 . 5 2 // Program i l l u s t r a t e u s e o f t h e b r e a k s t a t e m e n t 3 4 disp( ” T h i s p r o g r a m c o m p u t e s t h e a v a r a g e o f s e t o f numbers ” ) ;
5 disp( ” E n t e r v a l u e s and e n t e r a NEGATIVE v a l u e a t t h e end ” ) ;
6 sum1 =0;
7 for m = 1 : 1 0 0 0
8 x =s c a n f( ” %f ” ) ; // Read d a t a
9 if( x <0) then
10 b r e a k; //EXIT FROM LOOP
11 end
12 sum1 = sum1 + x ; // Computes sum
13 end 14 a v e r a g e = sum1 /( m -1) ; // Computes A v e r a g e 15 // P r i n t t h e r e s u l t s 16 p r i n t f( ” Number o f v a l u e s =%d\ n ” ,m -1) ; 17 p r i n t f( ” sum1=%f \ n ” , sum1 ) ; 18 p r i n t f( ” A v a r a g e =%f \ n ” , a v e r a g e ) ;
Scilab code Exa 6.6 Evaluate the series
4
5 x =i n p u t( ” I n p u t v a l u e o f x : ” ) ; // Read v a l u e o f x
6 LOOP = 1 0 0 ; A C C U R A C Y = 0 . 0 0 0 1 ; // I n i t i a l i z a t i o n
7 sum1 =0; term =1; flag =0;
8 // C o m p u t a t i o n u s i n g f o r l o o p
9 for n =1: LOOP
10 sum1 = sum1 + term ;
11 if( term <= A C C U R A C Y ) then // T e s t f o r a c c u r a c y 12 flag =1; 13 b r e a k; 14 end 15 term = term * x ; 16 17 end 18 // P r i n t t h e r e s u l t s 19 if( flag ==1) then
20 p r i n t f( ” EXIT FROM LOOP\ n ” ) ;
21 p r i n t f( ” Sum =%f ; No . o f t e r m s =%d” , sum1 , n ) ;
22 else
23 disp( ”FINAL VALUE OF N I S NOT SUFFICIENT TO ACHIEVE DESIRED ACCURCY” ) ;
24 end
Scilab code Exa 6.7 Use of continue statement
1 // Example 6 . 7 2 // The p r o g r a m i l l u s t r a t e t h e u s e o f c o n t i n u e s t a t e m e n t 3 4 disp( ” E n t e r 9 9 9 9 t o STOP” ) ; 5 c o u n t =0; 6 n e g a t i v e =0; 7 w h i l e( count < = 1 0 0 )
8 n u m b e r =i n p u t( ” E n t e r a number : ” ) ;
9 if( n u m b e r = = 9 9 9 9 ) then
10 b r e a k; //EXIT FROM THE LOOP
11 end
12 if( number <0) ,
13 disp( ” Number i s n e g a t i v e ” ) ;
14 n e g a t i v e = n e g a t i v e +1;
15 c o n t i n u e ; // SKIP REST OF LOOP
16 end
17 s q r o t =sqrt( n u m b e r ) ; //COMPUTE SQUARE ROOT
18 p r i n t f( ” Number = %f \ n ” , n u m b e r ) ; 19 p r i n t f( ” S q u a r e r o o t = %f ” , sqrot ) ; 20 c o u n t = c o u n t +1; 21 end 22 //PRINT RESULTS 23 p r i n t f( ” Number o f i t e m s d o n e = %d\ n ” , count ) ; 24 p r i n t f( ” N e g a t i v e i t e m s = %d\ n ” , ne ga ti ve ) ;
Chapter 7
Arrays
Scilab code Exa 1.cs Case study 1 Median of list of numbers
1 // C a s e S t u d y : C h a p t e r 7 , Page No : 2 1 0 2 // 1 . Median o f l i s t o f numbers 3 4 N =10; 5 disp( ” E n t e r t h e number o f i t e m s ” ) ; 6 n =s c a n f( ”%d” ) ; 7 // R e a d i n g i t e m s i n t o a r r a y a 8 p r i n t f( ” I n p u t %d v a l u e s [ One a t a t i m e ] \ n ” , n ) ; 9 for i =1: n 10 a ( i ) =s c a n f( ” %f ” ) ; 11 end 12 // S o r t i n g b e g i n s 13 for i =1: n -1 14 for j =1: n - i 15 if( a ( j ) <= a ( j +1) ) 16 t = a ( j ) ; 17 a ( j ) = a ( j +1) ; 18 a ( j +1) = t ; 19 else 20 c o n t i n u e ; 21 end
22 end 23 end // s o r t i n g e n d s 24 // C a l c u l a t i o n o f median 25 if( n / 2 = = 0 ) then 26 m e d i a n 1 =( a ( n /2) + a ( n / 2 + 1 ) ) / 2 . 0 ; 27 else 28 m e d i a n 1 = a ( n / 2 + 1 ) ; 29 end 30 // P r i n t i n g 31 for i =1: n 32 p r i n t f( ” %f ” ,a ( i ) ) ; 33 end 34 p r i n t f( ” \ nMedian i s %f \ n ” , median1 ) ;
Scilab code Exa 2.cs Case study 2 Calculation of standard deviation
1 // C a s e S t u d y : C h a p t e r −7 2 // 2 . C a l c u l a t i o n o f s t a n d a r d d e v i a t i o n 3 4 M A X S I Z E = 1 0 0 ; 5 sum1 =0; n =0; s u m s q r =0; 6 disp( ” I n p u t v a l u e s : i n p u t −1 t o end ” ) ; 7 for i =1: M A X S I Z E 8 v a l u e ( i ) =s c a n f( ” %f ” ) ; // E n t e r i n g v a l u e s i n t h e a r r a y named v a l u e 9 if( v a l u e ( i ) == -1) 10 b r e a k; 11 end 12 sum1 = sum1 + v a l u e ( i ) ; 13 n = n +1; 14 end
17 d e v i a t i o n = v a l u e ( i ) - m e a n 1 ; 18 s u m s q r = s u m s q r + d e v i a t i o n ^2; 19 end 20 v a r i a n c e 1 = s u m s q r / n ; 21 s t d d e v i a t i o n =sqrt( v a r i a n c e 1 ) ; // Computes s t a n d a r d d e v i a t i o n 22 // P r i n t i n g i t e m s , Mean and S t a n d a r d d e v i a t i o n 23 p r i n t f( ” Number o f i t e m s : %d\ n ” ,n ) ; 24 p r i n t f( ” Mean : %f \ n ” , m e a n 1 ) ; 25 p r i n t f( ” S t a n d a r d d e v i a t i o n : %f \ n ” , s t d d e v i a t i o n ) ;
Scilab code Exa 3.cs Case study 3 Evaluating a Test
1 // C a s e S t u d y : C h a p t e r −7 2 // 3 . E v a l u a t i n g a T e s t 3 4 S T U D E N T S =3; 5 I T E M S =5; 6 // R e a d i n g o f c o r r e c t a n s w e r s 7 p r i n t f( ” I n p u t k e y t o t h e i t e m s \ n ” ) ; 8 for i =1: I T E M S
9 key ( i ) =read( %io (1) ,1 ,1 , ’ ( a ) ’ ) ; // Read d a t a u s i n g r e a d f u n c t i o n 10 // k e y ( i )=s c a n f ( ” %c ” ) ; I t c a n be u s e d t o r e a d d a t a 11 end 12 // E v a l u a t i o n b e g i n s 13 14 for s t u d e n t =1: S T U D E N T S 15 // R e a d i n g s t u d e n t s r e s p o n s e s and c o u n t i n g c o r r e c t o n e s 16 c o u n t =0; 17 p r i n t f( ” \ n I n p u t r e s p o n s e s o f s t u d e n t −%d” , student
) ; 18 for i =1: I T E M S 19 r e s p o n s e ( i ) =s c a n f( ”%c” ) ; 20 end 21 c o r r e c t =z e r o s(1 , I T E M S ) 22 // Commented c o d e c a n be u s e d t o r e p l a c e a b o v e l i n e i . e . c o r r e c t =z e r o s ( 1 , ITEMS ) 23 // f o r i =1:ITEMS 24 // c o r r e c t ( i ) =0; 25 // end 26 for i =1: I T E M S 27 if( r e s p o n s e ( i ) == key ( i ) ) then 28 c o u n t = c o u n t +1; 29 c o r r e c t ( i ) =1; 30 end 31 end 32 // P r i n t i n g o f r e s u l t s 33 p r i n t f( ” S t u d e n t −%d\ n ” , s t u d e n t ) ; 34 p r i n t f( ” S c o r e i s %d o u t o f %d\ n ” , count , ITEMS ) ; 35 p r i n t f( ” R e s p o n s e t o t h e i t e m s b e l o w a r e wrong \ n ” ) ; 36 n =0; 37 for i =1: I T E M S 38 if( c o r r e c t ( i ) ==0) 39 p r i n t f( ” %d” ,i ) ; 40 n = n +1; 41 end 42 end 43 if( n ==0) then 44 p r i n t f( ” NIL \ n ” ) ; 45 end 46 end
Scilab code Exa 4.cs Case study 4 Production and sales analysis 1 // C a s e S t u d y : C h a p t e r −7 2 // 4 . P r o d u c t i o n and s a l e s a n a l y s i s 3 4 // I n p u t Data 5 disp( ” E n t e r p r o d u c t s m a n u f a c t u r e d w e e k w i s e ” ) ; 6 disp( ”M11 , M12, − − ,M21 , M22,−− e t c ” ) ; 7 for i =1:2 8 for j =1:5 9 M ( i , j ) =s c a n f( ”%d” ) ; 10 end 11 end 12 disp( ” E n t e r p r o d u c t s s o l d w e e k w i s e ” ) ; 13 disp( ” S11 , S12 , − − , S21 , S22 ,−− e t c ” ) ; 14 for i =1:2 15 for j =1:5 16 S ( i , j ) =s c a n f( ”%d” ) ; 17 end 18 end 19 disp( ” E n t e r c o s t o f e a c h p r o d u c t ” ) ; 20 for j =1:5 21 C ( j ) =s c a n f( ”%d” ) ; 22 end 23 // V a l u e s m a t r i c e s o f p r o d u c t i o n and s a l e s 24 for i =1:2 25 for j =1:5 26 M v a l u e ( i , j ) = M ( i , j ) * C ( j ) ; 27 S v a l u e ( i , j ) = S ( i , j ) * C ( j ) ; 28 end 29 end 30 // T o t a l v a l u e o f w e e k l y p r o d u c t i o n and s a l e s 31 for i =1:2 32 M w e e k ( i ) =0; 33 S w e e k ( i ) =0; 34 for j =1:5 35 M w e e k ( i ) = M w e e k ( i ) + M v a l u e ( i , j ) ; 36 S w e e k ( i ) = S w e e k ( i ) + S v a l u e ( i , j ) ;
37 end 38 end 39 // Monthly v a l u e o f p r o d u c t w i s e p r o d u c t i o n and s a l e s 40 for j =1:5 41 M p r o d u c t ( j ) =0; 42 S p r o d u c t ( j ) =0; 43 for i =1:2 44 M p r o d u c t ( j ) = M p r o d u c t ( j ) + M v a l u e ( i , j ) ; 45 S p r o d u c t ( j ) = S p r o d u c t ( j ) + S v a l u e ( i , j ) ; 46 end 47 end 48 // Grand t o t a l o f p r o d u c t i o n and s a l e s v a l u e s 49 M t o t a l =0; S t o t a l =0; 50 for i =1:2 51 M t o t a l = M t o t a l + M w e e k ( i ) ; 52 S t o t a l = S t o t a l + S w e e k ( i ) ; 53 end 54 55 // ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ 56 // S e l e c t i o n and p r i n t i n g o f i n f o r m a t i o n r e q u i r e d 57 // ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ 58 disp( ” F o l l o w i n g i s t h e l i s t o f t h i n g s you r e q u e s t f o r ” ) ;
59 disp( ” E n t e r a p p r o p r i a t e number and p r e s s r e t u r n k e y ” ) ; 60 61 disp( ” 1 . V a l u e m a t r i c e s o f p r o d u c t i o n and s a l e s ” ) ; 62 disp( ” 2 . T o t a l v a l u e o f w e e k l y p r o d u c t i o n and s a l e s ” ) ; 63 disp( ” 3 . P r o d u c t i o n w i s e m o n t h l y v a l u e o f p r o d u c t i o n and s a l e s ” ) ;
64 disp( ” 4 . Grand t o t a l v a l u e o f p r o d u c t i o n and s a l e s ” ) ;
65 disp( ” 5 . E x i t ” )
66
67 n u m b e r =0;
71 if( n u m b e r ==5) then
72 disp( ” Good Bye ” ) ;
73 b r e a k;
74 end
75 s e l e c t n u m b e r
76 // V a l u e M a t i c e s
77 case 1 then
78 disp( ”VALUE MATRIX OF PRODUCTION” ) ;
79 for i =1:2 80 p r i n t f( ”Week (%d) \ t ” , i ) ; 81 for j =1:5 82 p r i n t f( ”%7d” , M v a l u e ( i , j ) ) ; 83 end 84 p r i n t f( ” \ n ” ) ; 85 end
86 disp( ”VALUE MATRIX OF SALES” ) ;
87 for i =1:2 88 p r i n t f( ”Week (%d) \ t ” , i ) ; 89 for j =1:5 90 p r i n t f( ”%7d” , S v a l u e ( i , j ) ) ; 91 end 92 p r i n t f( ” \ n ” ) ; 93 end 94 // Weekly A n a l y s i s 95 case 2 then
96 disp( ”TOTAL WEEKLY PRODUCTION AND SALES” ) ;
97 disp( ” PRODUCTION SALES” ) ;
98 disp( ” −−−−−−−−−− −−−−−−” ) ; 99 for i =1:2 100 p r i n t f( ”Week (%d) \ t ” , i ) ; 101 p r i n t f( ”%7d\ t%9d \ n ” , M w e e k ( i ) , S w e e k ( i ) ) ; 102 end 103 // P r o d u c t w i s e A n a l y s i s 104 case 3 then
105 disp( ”PRODUCTWISE TOTAL PRODUCTION AND SALES ” ) ;
106 disp( ” PRODUCTION SALES” ) ;
108 for i =1:5 109 p r i n t f( ” P r o d u c t (%d) \ t ” , i ) ; 110 p r i n t f( ”%7d\ t%7d \ n ” , M p r o d u c t ( i ) , S p r o d u c t ( i ) ) ; 111 end 112 // Grand T o t a l s 113 case 4 then
114 disp( ”GRAND TOTAL OF PRODUCTION AND SALES” ) ;
115 p r i n t f( ” T o t a l p r o d u c t i o n = %d\ n ” , Mtotal ) ; 116 p r i n t f( ” T o t a l s a l e s = %d\ n ” , Stotal ) ; 117 // D e f a u l t 118 else 119 p r i n t f( ” Wrong c h o i c c e , s e l e c t a g a i n \ n ” ) ; 120 end // End o f s e l e c t 121 end // End o f w h i l e 122 disp( ” E x i t f r o m t h e p r o g r a m ” ) ;
Scilab code Exa 7.1 Sum of squares of 10 numbers
1 // Example : 7 . 1
2 // W r i t e a p r o g r a m u s i n g s i n g l e −s u b s c r i p t e d v a r i a b l e t o e v a l u a t e :
3 // sum o f s q u a r e s o f 10 numbers . The v a l u e s x1 , x2 , . . . a r e r e a d f r o m t h e t e r m i n a l .
4
5 // R e a d i n g v a l u e s i n t o a r r a y
6 disp( ”ENTER 1 0 REAL NUMBERS [ Each i n n e w l i n e ] ” ) ;
7 t o t a l =0;
8 for i = 1 : 1 0
9 x ( i ) =i n p u t( ” ” ) ;
13 for i = 1 : 1 0
14 p r i n t f( ” x ( %2d ) =%5 . 2 f \ n ” ,i , x ( i ) ) ;
15 end
16 p r i n t f( ” T o t a l =%. 2 f ” , t o t a l ) ;
Scilab code Exa 7.2 Count the number of students
1 // Example : 7 . 2 2 // G i v e n b e l o w i s t h e l i s t o f marks o b t a i n e d by a c l a s s o f 50 s t u d e n t s i n an 3 // a n n u a l e x a m i n a t i o n . 43 65 51 27 79 11 56 61 82 09 25 36 07 49 55 63 74 81 49 4 // 37 40 49 16 75 87 91 33 24 58 78 65 56 76 67 45 54 36 63 12 21 73 49 51 19 39 5 // 49 68 93 85 59 6 // W r i t e a p r o g r a m t o c o u n t t h e number o f s t u d e n t s b e l o n g i n g t o e a c h o f 7 // f o l l o w i n g g r o u p s o f marks : 0 − 9 , 1 0 − 1 9 , 2 0 − 2 9 , . . . 1 0 0 . 8 9 // T h i s p r o g r a m c o m p u t e s f o r 10 s t u d e n t s . We c o u l d compute f o r 50 s t u d e n t s by 10 // c h a n g i n g MAXVAL= 5 0 . 11 12 M A X V A L =10; C O U N T E R =11;
13 disp( ” I n p u t Data [ Marks o f 10 s t u d e n t s ] ” ) ;
14 g r o u p 1 =z e r o s(1 ,11) ; 15 // R e a d i n g and c o u n t i n g 16 for i =1: M A X V A L 17 // R e a d i n g o f v a l u e s 18 v a l u e ( i ) =i n p u t( ” ” ) ; 19 // C o u n t i n g f r e q u e n c y o f g r o u p s 20 a =i n t 1 6(( v a l u e ( i ) /10) ) ;
21 if( a ==0) then 22 g r o u p 1 ( a +1) = g r o u p 1 ( a +1) +1; 23 else 24 g r o u p 1 ( a +1) = g r o u p 1 ( a +1) +1; 25 end 26 27 end 28 // P r i n t i n g o f f r e q u e n c y t a b l e 29 p r i n t f( ” Group Range F r e q u e n c y \ n ” ) ; 30 for i =0: COUNTER -1 31 if( i ==0) , 32 low =0; 33 else 34 low = i *10; 35 end 36 if( i = = 1 0 ) , 37 high = 1 0 0 ; 38 else 39 high = low +9; 40 end 41 p r i n t f( ”%2d %8d t o %3d %5d\ n ” , i +1 , low , high , g r o u p 1 ( i +1) ) ; 42 end
Scilab code Exa 7.3 Compute and print
1 // Example : 7 . 3
2 // W r i t e a p r o g r a m u s i n g two d i m e n s i o n a l a r r a y t o compute p r i n t f o l l o w i n g
3 // i n f o r m a t i o n f r o m t h e t a b l e o f d a t a d i s c u s s e d :
g i r l s . 7 8 M A X G I R L S =4; M A X I T E M S =3; 9 f r e q u e n c y =z e r o s(1 ,5) ; 10 disp( ” I n p u t d a t a ” ) ; 11 // R e a d i n g v a l u e s and c o m p u t i n g g i r l t o t a l 12 disp( ” E n t e r v a l u e s , o n e a t a t i m e ” ) ; 13 14 for i =1: M A X G I R L S 15 g i r l _ t o t a l ( i ) =0; 16 for j =1: M A X I T E M S 17 v a l u e ( i , j ) =s c a n f( ”%d” ) ; 18 g i r l _ t o t a l ( i ) = g i r l _ t o t a l ( i ) + v a l u e ( i , j ) ; 19 end 20 end 21 // Computing i t e m t o t a l 22 for j =1: M A X I T E M S 23 i t e m _ t o t a l ( j ) =0; 24 for i =1: M A X G I R L S 25 i t e m _ t o t a l ( j ) = i t e m _ t o t a l ( j ) + v a l u e ( i , j ) ; 26 end 27 end 28 // Computing g r a n d t o t a l 29 g r a n d _ t o t a l =0; 30 for i =1: M A X G I R L S 31 g r a n d _ t o t a l = g r a n d _ t o t a l + g i r l _ t o t a l ( i ) ; 32 end 33 // P r i n t i n g o f r e s u l t
34 disp( ”GIRLS TOTALS” ) ;
35 for i =1: M A X G I R L S
36 p r i n t f( ” S a l e s g i r l (%d)=%d\ n ” ,i , g i r l _ t o t a l ( i ) ) ;
37 end
38
39 disp( ”ITEM TOTALS” ) ;
40 for j =1: M A X I T E M S
41 p r i n t f( ” I t e m (%d)=%d\ n ” ,j , i t e m _ t o t a l ( j ) ) ;
42 end
Scilab code Exa 7.4 Multiplication table 1 // Example : 7 . 4 2 // W r i t e a p r o g r a m t o compute and p r i n t a m u l t i p l i c a t i o n t a b l e f o r numbers 1 t o 5 3 4 ROWS =5; C O L U M N S =5;
5 disp( ”MULTIPLICATION TABLE” ) ;
6 p r i n t f( ” ∗ | ” ) 7 for j =1: C O L U M N S 8 p r i n t f( ”%4d” , j ) ; 9 end 10 disp( ” ” ) ; 11 for i =1: ROWS 12 p r i n t f( ”%1d | ” , i ) ; 13 for j =1: C O L U M N S 14 p r o d u c t ( i , j ) = i * j ; // C a l c u l a t e t h e p r o d u c t 15 p r i n t f( ”%4d” , p r o d u c t ( i , j ) ) ; // P r i n t t h e p r o d u c t 16 end 17 p r i n t f( ” \ n ” ) ; 18 end
Scilab code Exa 7.5 Popularity of various cars
3 // M a r u t i ) was c o n d u c t e d i n f o u r c i t i e s ( Bombay , C a l c u t t a , D e l h i and Madras ) . 4 // Each p e r s o n s u r v e y e d was a s k e d t o g i v e h i s c i t y and t y p e o f c a r he was u s i n g . 5 // W r i t e a p r o g r a m t o p r o u c e a t a b l e s h o w i n g t h e p o p u l a r i t y o f v a r i o u s c a r s i n 6 // f o u r c i t i e s . 7 8 f r e q u e n c y =z e r o s(5 ,5) ; 9 p r i n t f( ” F o r e a c h p e r s o n , e n t e r t h e c i t y c o d e [ B , C , D,M ] \ n ” ) ; 10 p r i n t f( ” f o l l o w e d by t h e c a r c o d e [ 1 , 2 , 3 , 4 ] . \ n ” ) ; 11 p r i n t f( ” E n t e r t h e l e t t e r X 0 ( z e r o ) t o i n d i c a t e end . \ n ” ) ; 12 13 // T a b u l a t i o n b e g i n s 14 for i = 1 : 9 9 15 [ n , city , car ]=m s c a n f( ”%c %d” ) ; 16 if( city == ’X ’ ) then 17 b r e a k; 18 end 19 s e l e c t city
20 case ’B ’ then f r e q u e n c y (1 , car ) = f r e q u e n c y (1 , car ) +1;
21 case ’C ’ then f r e q u e n c y (2 , car ) = f r e q u e n c y (2 , car ) +1;
22 case ’D ’ then f r e q u e n c y (3 , car ) = f r e q u e n c y (3 , car ) +1;
23 case ’M ’ then f r e q u e n c y (4 , car ) = f r e q u e n c y (4 , car ) +1; 24 end 25 26 end 27 28 // T a b u l a t i o n c o m p l e t e d and P r i n t i n g b e g i n s
29 disp( ” POPULATORY TABLE” ) ;
30 p r i n t f( ”
) ; 31 p r i n t f( ” C i t y A m b a s s e a d o r f a i t D o l p h i n M a r u t i \ n ” ) ; 32 p r i n t f( ” \ n ” ) ; 33 34 for i =1:4 35 s e l e c t i
36 case 1 then p r i n t f( ” Bombay ” ) ;
37 case 2 then p r i n t f( ” C a l c u t t a ” ) ;
38 case 3 then p r i n t f( ” D e l h i ” ) ;
39 case 4 then p r i n t f( ” Madras ” ) ;
40 end 41 for j =1:4 42 p r i n t f( ”%8d” , f r e q u e n c y ( i , j ) ) ; 43 end 44 p r i n t f( ” \ n ” ) ; 45 end 46 p r i n t f( ” ” ) ; 47 // P r i n t i n g e n d s
Chapter 8
Character Arrays and Strings
Scilab code Exa 1.cs Case study 1 Counting words in a text
1 // C s a e s t u d y : C h a p t e r −8 , Page No : 2 5 3
2 // 1 . C o u n t i n g w o r d s i n a t e x t
3
4 c h a r a c t e r s =0; w o r d s =0; l i n e s 1 =0;
5 p r i n t f( ” KEY IN THE TEXT. \ n ” ) ;
6 p r i n t f( ”GIVE ONE SPACE AFTER EACH WORD. \ n ” ) ;
7 p r i n t f( ”WHEN COMPLETED, ENTER end \ n ” ) ;
8 9 l = ’ ’ ; 10 w h i l e( l ~= ’ end ’ ) 11 l =read( %io (1) ,1 ,1 , ’ ( a ) ’ ) ; // R e a d i n g a l i n e o f t e x t 12 if( l == ’ end ’ ) then 13 b r e a k; 14 end 15 line =[a s c i i( l ) ]; // A r r a y o f a s c i i v a l u e s o f l i n e l
16 len =l e n g t h( line ) ; // compute l e n g t h o f l i n e
18 // a s c i i v a l u e o f ’ ’ ( i . e . s p a c e ) i s 32 19 if( line ( i ) = = 3 2 ) then 20 w o r d s = w o r d s +1; // Count t h e number o f w o r d s 21 end 22 end 23 l i n e s 1 = l i n e s 1 +1; // Count t h e number o f l i n e s
24 c h a r a c t e r s = c h a r a c t e r s + len ; // Count t h e number o f c h a r a c t e r s 25 end 26 // P r i n t i n g r e s u l t s 27 p r i n t f( ” Number o f l i n e s = %d\ n ” , lines1 ) ; 28 // Number o f l i n e s a r e a dd ed t o w o r d s b e c a u s e l a s t word o f e a c h l i n e r e m a i n s − 29 // u n c o u n t e d a s w o r d s a r e i n c r e m e n t e d a t t h e o c c u r e n c e o f s p a c e .
30 p r i n t f( ” Number o f w o r d s = %d\ n ” , words + lines1 ) ;
31 p r i n t f( ” Number o f c h a r a c t e r s = %d\ n ” , c h a r a c t e r s ) ;
Scilab code Exa 2.cs Case study 2 Processing of a customer list
1 // C s a e s t u d y : C h a p t e r −8 , Page No : 2 5 3 2 // 2 . P r o c e s s i n g o f a c u s t o m e r l i s t 3 4 5 C U S T O M E R S =10;
6 p r i n t f( ” I n p u t names and t e l e p h o n e numbers \ n ” ) ;
7 p r i n t f( ” [ Names must h a v e F i r s t , S e c o n d and L a s t n a m e ] \ n ” ) ;
10 [ f i r s t _ n a m e ( i ) , s e c o n d _ n a m e ( i ) , s u r n a m e ( i ) , t e l e p h o n e ( i ) ]=s c a n f( ”%s %s %s %s” ) ; 11 // C o n v e r t i n g f u l l name t o s u r n a m e w i t h i n i t i a l s 12 l1 =l e n g t h( s u r n a m e ( i ) ) ; // Compute l e n g t h o f s u r n a m e a t i 13 name ( i ) = s t r n c p y ( s u r n a m e ( i ) , l1 ) ; 14 name ( i ) =s t r c a t([ name ( i ) , ’ , ’ ]) ; 15 d u m m y (1) =part( f i r s t _ n a m e ( i ,1) ,1) ; 16 name ( i ) =s t r c a t([ name ( i ) , d u m m y ]) ; 17 name ( i ) =s t r c a t([ name ( i ) , ’ . ’ ]) ; 18 d u m m y (1) =part( s e c o n d _ n a m e ( i ,1) ,1) ; 19 name ( i ) =s t r c a t([ name ( i ) , d u m m y ]) ; 20 end 21 // A l p h a b e t i c a l o d e r i n g o f s u r n a m e s 22 for i =1: C U S T O M E R S // O u t e r l o o p b e g i n s 23 for j =2: C U S T O M E R S - i +1 // I n n e r l o o p b e g i n s 24 k = s t r c m p ( name ( j -1) , name ( j ) ) ; 25 if( k >0) then 26 27 // S w a p i n g names 28 l1 =l e n g t h( name ( j -1) ) ; 29 l2 =l e n g t h( name ( j ) ) ; 30 d u m m y = s t r n c p y ( name ( j -1) , l1 ) ; 31 name ( j -1) = s t r n c p y ( name ( j ) , l2 ) ; 32 l3 =l e n g t h( d u m m y ) ; 33 name ( j ) = s t r n c p y ( dummy , l3 ) ; 34 35 // S w a p p i n g t e l e p h o n e numbers 36 l3 =l e n g t h( t e l e p h o n e ( j -1) ) ; 37 l4 =l e n g t h( t e l e p h o n e ( j ) ) ; 38 d u m m y = s t r n c p y ( t e l e p h o n e ( j -1) , l3 ) ; 39 t e l e p h o n e ( j -1) = s t r n c p y ( t e l e p h o n e ( j ) , l4 ) ; 40 t e l e p h o n e ( j ) = s t r n c p y ( dummy , l3 ) ; 41 end 42 end // I n n e r l o o p e n d s 43 end // O u t e r l o o p e n d s
44 // P r i n t i n g a l p h a b e t i c a l l i s t
45 disp( ”CUSTOMER LIST IN ALPHABETICAL ORDER” ) ;
46 for i =1: C U S T O M E R S
47 p r i n t f( ”%−20 s \ t %−10 s \ n ” , name ( i ) , t e l e p h o n e ( i ) ) ;
48 end
Scilab code Exa 8.1 Read a series of words
1 // Exampple 8 . 1 2 // W r i t e a p r o g r a m t o r e a d a s e r i e s o f w o r d s f r o m t e r m i n a l u s i n g s c a n f f u n c t i o n . 3 4 // Read d a t a u s i n g s c a n f f u n c t i o n 5 disp( ” E n t e r t e x t : ” )
6 [ word1 , word2 , word3 , w o r d 4 ]=s c a n f( ”%s %s %s %s” ) ;
7 // P r i n t i n g t h e r e s u l t s
8 p r i n t f( ” word1 = %s\ nword2 = %s\ n ” , word1 , w o r d 2 ) ;
9 p r i n t f( ” word3 = %s\ nword4 = %s\ n ” , word3 , w o r d 4 ) ;
Scilab code Exa 8.2 Read a line of text
1 // Example 8 . 2
2 // W r i t e a p r o g r a m t o r e a d a l i n e o f t e x t c o n t a i n i n g a s e r i e s o f −
3 // w o r d s f r o m t h e t e r m i n a l .
4
Scilab code Exa 8.3 Copy one string into another 1 // Example 8 . 3 2 // W r i t e a p r o g r a m t o c o p y o n e s t r i n g i n t o a n o t h e r and c o u n t t h e number 3 // o f c h a r a c t e r s c o p i e d . 4 5 // Read d a t a u s i n g s c a n f f u n c t i o n 6 disp( ” E n t e r a s t r i n g : ” ) 7 [ s t r i n g 2 ]=s c a n f( ”%s” ) ; // Read s t r i n g 8 l =l e n g t h( s t r i n g 2 ) ; // Compute t h e l e n g t h 9 s t r i n g 1 = ’ ’ ; // s t r i n g 1 i s empty 10 for i =1: l 11 s t r i n g 1 = s t r i n g 1 + part( string2 , i ) ; 12 end 13 // P r i n t i n g t h e r e s u l t s 14 p r i n t f( ” %s\ n ” , s t r i n g 1 ) ; 15 p r i n t f( ” Number o f c h a r a c t e r s = %d\ n ” ,l ) ;
Scilab code Exa 8.4 Display the string under various format specifications
1 // Exampple 8 . 4 2 // W r i t e a p r o g r a m t o s t o r e t h e s t r i n g ” U n i t e d Kingdom ” i n t h e a r r a y c o u n t r y − 3 // and d i s p l a y t h e s t r i n g u n d e r v a r i o u s f o r m a t s p e c i f i c a t i o n s . 4
5 6 c o u n t r y = ’ U n i t e d Kingdom ’ ; 7 p r i n t f( ” \ n ” ) ; 8 p r i n t f( ” ∗ 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 ∗ \ n ” ) ; 9 p r i n t f( ”−−−−−−−−\n ” ) ; 10 p r i n t f( ” %15s \ n ” , c o u n t r y ) ; 11 p r i n t f( ” %5s \ n ” , c o u n t r y ) ; 12 p r i n t f( ”%15 . 6 s \ n ” , c o u n t r y ) ; 13 p r i n t f( ”%− 1 5 . 6 s \ n ” , c o u n t r y ) ; 14 p r i n t f( ”%15 . 0 s \ n ” , c o u n t r y ) ; 15 p r i n t f( ”%. 3 s \ n ” , c o u n t r y ) ; 16 p r i n t f( ”%s\ n ” , c o u n t r y ) ; 17 p r i n t f( ”−−−−−−−−\n ” ) ;
Scilab code Exa 8.5 Program using for loop
1 // Example 8 . 5 2 // W r i t e a p r o g r a m u s i n g f o r l o o p t o p r i n t t h e f o l l o w i n g o u t p u t : 3 // C 4 // CP 5 // . . . . 6 // . . . . 7 // CProgrammimg 8 // CProgrammimg 9 // . . . . 10 // . . . . 11 // CPr 12 // CP 13 // C 14 s t r i n g 1 = ’ CProgramming ’ ;