Μπλεγμένα  DO loops

Ας υποθέσουμε ότι έχουμε το παρακάτω απλό πρόγραμμα:

      program test
      parameter (m=4)
      dimension ib(m),ie(m),is(m),i(m)
      data ib/1,1,1,1/
      data ie/3,4,-3,2/         
      data is/1,2,-2,1/
      write(*,*) 'Enter a number >=1,and <=',m
      read(*,*)n
      if (n.gt.m) stop
      if (n.lt.1) stop
      call  donest(ib,ie,is,n,i)
      end

Θέλουμε να κατασκευάσουμε την subroutine donest(ib,ie,is,n,i) έτσι ώστε να υλοποιεί μεταβλητό αριθμό μπλεγμένων DO-loops. Για παράδειγμα εάν θέσουμε  n=2  θα πρέπει να πάρουμε την έξοδο που θα έδινε ο κώδικας:

  Ισοδύναμος Κωδικας                                                                Έξοδος
      DO 1 I1=IB(1),IE(1),IS(1) 
        DO 2 I2=IB(2),IE(2),IS(2) 
           WRITE(*,*)I1,I2 
 2      CONTINUE 
 1    CONTINUE
1 1
1 3
2 1
2 3
3 1
3 3
Αντίστοιχα εάν θέσουμε  n=3  θα έχουμε:

 Ισοδύναμος Κωδικας                                                                Έξοδος
      DO 1 I1=IB(1),IE(1),IS(1) 
        DO 2 I2=IB(2),IE(2),IS(2) 
          DO 3 I3=IB(3),IE(3),IS(3) 
             WRITE(*,*)I1,I2,I3 
 3        CONTINUE 
 2      CONTINUE 
 1    CONTINUE
 1 1  1  
  1 1 -1   
 1 1 -3  
1 3  1 
1 3 -1 
1 3 -3 
2 1  1 
2 1 -1 
2 1 -3 
... 
3 1 -3

 

Αντιστοίχως για n=4 κοκ.

Sample Solution