. . .
DO I = 1,100
25 CALL UNO(. . .)
. . .
DO J = 1,50
IF(A(I).GT.B(J)) THEN
. . .
GOTO 25
ENDIF
. . .
ENDDO
75 CALL DUE(. . .)
81 ENDDO
. . .
Riscriverla in linguaggio C senza usare i GOTO e le label ed illustrare quali cautele devono essere prese, e perché, nella chiamata di UNO e DUE.
Stabilire quindi il numero delle circonferenze che non si intersecano.
Illustrare l’algoritmo scelto e codificarlo in C.
Per ogni strumento possono esserci una o più righe non necessariamente in ordine, ovvero non necessariamente contigue. Al massimo abbiamo 100 strumenti distinti.
Produrre un file di output contenente, per ogni strumento, ed in ordine di codice, il valor medio delle misure relative.
Illustrare l'algoritmo scelto e codificarlo in C.
Il seguente programma utilizza le istruzioni malloc e free per caricare in un vettore un numero arbitrario di valori letti da terminale.
Per alcune istruzioni del programma sono date quattro possibilità. Marcarle nell'apposito spazio con:
In taluni casi ci puo' anche essere più di una possibilità corretta.
Spiegare l'algoritmo di funzionamento del programma.
| #define DIMENSIONE_INIZIALE=100; | |
| #define DIMENSIONE_INIZIALE 100 | |
| #define DIMENSIONE_INIZIALE 100; | |
| #define DIMENSIONE_INIZIALE=100 | |
| #INCLUDE <stdio.h> | |
| #INCLUDE "stdio.h" | |
| #include <stdio.h> | |
| #include "stdio.h" | |
| int main () { | |
| double *p, *old, dato; | |
| int size=DIMENSIONE_INIZIALE, letti, i=0; | |
| int size=dimensione_iniziale, letti, i=0; | |
| int size=DIMENSIONE_INIZIALE, letti=0, i; | |
| int size=dimensione_iniziale, letti=0, i; | |
| p = (double *) malloc( DIMENSIONE_INIZIALE * sizeof( double ) ); | |
| p = malloc( DIMENSIONE_INIZIALE * sizeof( double ) ); | |
| p = (double *) malloc( DIMENSIONE_INIZIALE * double ); | |
| p = malloc( DIMENSIONE_INIZIALE * double ); | |
| while ( scanf("%lf",&dato)!=EOF ) | |
| while ( scanf("%lf",&dato)!=EOF ); | |
| while ( scanf("%lf",dato)!=EOF ) | |
| while ( scanf("%lf",dato)!=EOF ); | |
| { | |
| letti++; | |
| if ( letti<size ) | |
| if ( letti>size ) | |
| if ( letti>=size ) | |
| if ( letti<=size ) | |
| { | |
| old=p; | |
| p= (double *) malloc( 2*size*sizeof(double) ); | |
| for (i=0, i<size, i++) *(p+i)=*(old+i); | |
| for (i=0; i<size; i++) *(p+i)=*(old+i); | |
| for (i=0, i<size, i++) p[i]=old[i]; | |
| for (i=0; i<size; i++) p[i]=old[i]; | |
| size*2; | |
| size*=2; | |
| size=2; | |
| size=size*2; | |
| free(old); | |
| } | |
| p[letti-1]=dato; | |
| p[letti]=dato; | |
| p[letti-1]=&dato; | |
| p[letti]=&dato; | |
| } | |
| return 0; | |
| } |