Soluzione esercizio 1

In questo frammento il ciclo su J deve ricominciare da capo (dopo aver eseguito nuovamente la chiamata ad UNO) fin tanto che tutti i B(J) sono maggiori o uguali di un certo A(I).

Una possibile soluzione del problema consiste nell'inserire il ciclo su j all'interno di un ciclo do-while. Nel caso che si verifichi la condizione a[i]>b[j] il ciclo su j termina in modo anomalo e si può controllare il verificarsi o meno di questo fatto nella condizione del while.

. . .
for ( i=0; i<100; i++ ) {
   do {
      uno(. . .);
      . . .
      for ( j=0; j<50; j++ ) {
         if ( a[i]>b[j] ) {
            . . .
            break;
         }
         . . .
      } 
   } while (j<50);
   due(. . .);
} 
. . .

Per quanto riguarda le cautele nella chiamata di uno e due, bisogna ricordarsi che, mentre in FORTRAN tutti gli argomenti sono passati per referenza, in C essi sono passati per valore. Quindi se le subroutine FORTRAN alterano il valore di alcuni argomenti, le analoghe funzioni C dovranno avere come argomento dei puntatori, eventualmente creati a partire da variabili ordinarie usando l'operatore & (indirizzo di).