Cpsc 203 – 500 final exam spring 2005 no calculator is allowed!! Uin: Full Name: Score Possible Points




Yüklə 44.92 Kb.
tarix28.02.2016
ölçüsü44.92 Kb.
CPSC 203 – 500 FINAL EXAM

Spring 2005


NO CALCULATOR IS ALLOWED!!


UIN:
Full Name:

Score Possible Points
Part One 30 pts
Part Two 20 pts
Part Three 15 pts
Part Four 15 pts
Part Five 20 pts

Total 100 pts



PART ONE (10*3 points). Some questions have MORE THAN ONE answer.

Circle ALL the correct answers!

1. Which of the following are valid variable names for Fortran 90? A, D


a. INCOME b. TWO FOLD c. TAX-RT d. PI e. 2X

2. Given the values of A = 28.0, B = 53.0, C = -18.0, D = 64.6, E = 37.5, and K = 45,

Which of the following equations are true? A
a. SQRT(ABS(A-B)) == 5.0 b. ABS(E-D*2.0) == 54.2

c. NINT(D) == 64 d. MIN (A,B,C,D,E) == 64.6


3. Given the values of the following variables, which of the followings are FALSE? A


I = 7, J = 10, K = 3, L = 18, M = 9, N =6
a. I .LT. K .AND. L .EQ. M + N b. .NOT. (J .GT. L – N)

c. L – 5 .GT. N + M .OR. I .NE. J d. I + J .GT. K * 5 .AND. L * 2 .GT. M

e. .NOT. (I*J .LT. K) .AND. (L *M .GT. N * K)

4. What is the length of the array specified by the following declaration: B


INTEGER, PARAMETER :: a = -10

INTEGER, PARAMETER :: b = 10

LOGICAL, DIMENSION (a:b-a*2) :: a
a. 40 b. 41 c. 50 d. 51 e. none of the above

5. With the following declaration, which is true? A

REAL, ALLOCATABLE, DIMENSION(:)::A
A. The rank of the array A is 2.


  1. It is known as a deferred shape array.

  2. It is called dynamic memory allocation.

  3. The size and rank of the array is specified during execution.

a. B, C b. A, B, C c. B, C, D d. All of the above e. None of the above

6. What is output by the following code? (a)
INTEGER:: i, j, output
Do i = 1, 3

Do j = 1, 3

If ( i == j) CYCLE

output = j ** i

write(*,*) output

End Do


End Do

a. 2 3 1 9 1 8 b. 1 1 2 8 3 9 c. 1 4 27 d. 1 2 3 1 4 9 1 8 27

7. Which of the following expression are TRUE (or legal) in Fortran? Assume the ASCII collating sequence. (b)

(1) 'ABC' > 'abc'

(2) ACHAR(65) // ACHAR(67) // ACHAR (69) == 'ACE'

(3) ACHAR( IACHAR('j') +5) == 'o'

(4) '12345' == 12345
a. (1), (2) and (3) b. (2) and (3) c. (3) and (4) d. All of above
8. What is output by the following code? (c)
PROGRAM test

IMPLICIT NONE

REAL, DIMENSION(3) :: data =(/5,10,15/)

REAL :: fun1

INTEGER :: i=size(data)

write (*,*) fun1(data,i)

END PROGRAM test

REAL FUNCTION fun1(x,a)

IMPLICIT NONE

INTEGER, INTENT(IN):: a

REAL, INTENT(IN), DIMENSION(a) :: x

INTEGER:: i

Do i=1, a

fun1 = fun1 + x(i)

End Do

END FUNCTION fun1



a. 10 b. 20 c. 30 d. 40



  1. Given CONST= 3856.7569, VALUE= -187.325, BALNC= 62543.14 and the program segment below, what is output ? (b represent blank) (c)

WRITE(*,1000) CONST, VALUE, BALNC

1000 FORMAT (3X, F7.2, 5X, F6.1, 5X, F6.0)


a. bbb3856.756bbbbb-187.32bbbbb62543.1

b. 3856.76bbbbb-187.3bbbbb62543.

§c. bbb3856.76bbbbb-187.3bbbbb62543

§d. bbb3856.7569bbbbb-187.325bbbbb62543.14


10. An input data file input.dat contains the following values:

10 20 30 40

11 13 15 17

2 4 6 8

1 5 10 15

what is output by following code? (assume that file is opened on i/o unit 1 and arr is defined as 4x4 integer array) (a)
Do i=1,3

Read (1,*) ( arr (i,j), j=1,3 )

End do

write (*,*) ( ( arr(i,j), i=1,3 ), j=1,3 )


a. 10 11 2 20 13 4 30 15 6

b. 10 20 30 11 13 15 2 4 6

c. 10 20 30 40 11 12 15 17 2 4 6 8

d. 10 20 30 40 11 13 15 17 2




PART TWO (4*5 points). Short Answers.
11. ____________________ are common functions that are built directly into the Fortran language.
Intrinsic functions

12. Given real :: array(10,20,30,40)

What is the linear storage element for array(5,6,11,4)?

3x10x20x30 + 10x10x20 +5x10 +5 = 20055

13. When do we need to use ALLOCATA/DEALLOCATE for array ?
When real/virtual memory is limited and we need big arrays at different times during execution of a program.

14. Write benefits of using external procedures such as subroutines or function subprograms.

Independent testing of a subtask

Reusable code

Isolation from unintended side effects

PART THREE (15 points). Complete program.
15. The value for  can be determined by the series equation:

 = 4 * (1 – 1/3 + 1/5 – 1/7 + 1/9 – 1/11 + 1/13 ... )

Write a program to calculate the value of  using the formula above until the term 1/99 is reached.

PROGRAM test

IMPLICIT NONE

REAL:: pi, sum=1

INTEGER:: i

DO i = 1, 49

sum = sum + (-1)**i * 1.0/((i*2)+1)

END DO


write (*,*) 'pi=', 4* sum

END PROGRAM test



PART FOUR (15 points). Complete program.

16. Write a complete binary search program that does 1) to 5). Also answer to the question 6).

  1. Reads integer numbers from input.dat file which contains 11 integers (see below).

  2. Stores the numbers into array ARR(11).

  1. Receives any number, NUM from user input (use READ statement).

  2. Searches array ARR whether the NUM is contained at the array or not (use binary search) .

  3. If the input number NUM is in the list ARR then write the index of array and steps, if not write “not exist”.

  1. Let's assume the searching number is 7, then what will be the index and how many steps are needed to find the number ?


input.dat: 1 3 5 7 8 9 11 13 15 17 19
PROGRAM bsearch

IMPLICIT NONE

INTEGER :: num, i=1, j=11, k, steps = 0

INTEGER, DIMENSION(11) :: ARR

OPEN (UNIT=99, FILE='input.dat', STATUS='OLD', ACTION='READ')

READ(99,*) (arr(i), i=1,11)

WRITE(*,*) 'Input a number to search: '

READ(*,*) num

DO

steps = steps+1



k = (i+j)/2

IF(num == arr(k))then

WRITE(*,*) 'Index = ', k

Exit


end if

IF (num < arr(k)) THEN

j=k

ELSE


i=k

END IF


IF(i+1 == j) then

if(arr(j) == num) then

WRITE(*,*) 'Index = ', j

else if(arr(i) == num) then

WRITE(*,*) 'Index = ', i

else


WRITE(*,*) 'The number', num, 'is not in the array.'

end if


Exit

end if


END DO

WRITE(*,*) 'Total comparisons: ', steps

CLOSE(99)

END PROGRAM bsearch


(6) ANSWER : index = 4, steps = 3

PART FIVE (20 points). Complete program.
Write a complete program that performs the following:

  1. OPEN 3 files, DATA1.DAT, DATA2.DAT, and OUTPUT.DAT, using unit numbers 100, 200, and 300, respectively. You must specify the STATUS and ACTION for OPEN statement.

  2. The input data files, DATA1.DAT and DATA2.DAT, consist of a student name per record in columns 11-30. Each file is in alphabetical order by name. The number of records for each file is unknown, but is less than 1000 records.

  3. Read the input data files and merge to a new file, OUTPUT.DAT, in alphabetical order. At the end of the output file print the number of records processed.

  4. If the output file already exists, the program should overwrite the file.

  5. CLOSE all files before ending the program.

PROGRAM part5

IMPLICIT NONE

INTEGER:: num=1, err1=0, err2=0

CHARACTER(len=20):: name1, name2

OPEN (UNIT=100, FILE='DATA1.DAT', STATUS='OLD', ACTION='READ')

OPEN (UNIT=200, FILE='DATA2.DAT', STATUS='OLD', ACTION='READ')

OPEN (UNIT=300, FILE='OUTPUT.DAT', STATUS='REPLACE', ACTION='WRITE')

READ (100,10, IOSTAT=err1) name1

READ (200,10, IOSTAT=err2) name2

10 FORMAT (11T, A20)

DO WHILE (err1==0 .OR. err2==0)

IF (err1==0 .AND. (name1

WRITE (300, *) num, name1

READ (100,10, IOSTAT=err1) name1

ELSE IF (err2==0) THEN

WRITE (300, *) num, name2

READ (200,10, IOSTAT=err2) name2

END IF

num = num+1



END DO

WRITE (300, *) ‘The number of records processed: ’, num


CLOSE (UNIT=100)

CLOSE (UNIT=200)

CLOSE (UNIT=300)

END PROGRAM part5







Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azrefs.org 2016
rəhbərliyinə müraciət

    Ana səhifə