perchè per d hai fatto ricorso all'allocazione dinamica della memoria mentre per b e c no?
Devo riguardare bene la teoria perchè no, non so proprio rispondere a questa domanda.
Posto intanto la traccia dell'esercizio:
"provate a scrivere da voi e a eseguire un programma, costituito dalla SOLA funzione main, che faccia le seguenti cose:
dichiari due array di uguale capienza e un puntatore, tutti dello stesso tipo;
dichiari, in aggiunta, UNA SOLA variabile intera con visibilità estesa a tutta la funzione main;
inizializzi il puntatore in maniera tale da indirizzare il doppio della capienza di ciascuno dei due array;
usi un ciclo for (della prima specie) per inizializzare il contenuto del primo array con valori opportuni letti da tastiera;
usi un ciclo for (della seconda specie) per inizializzare ordinatamente il contenuto del secondo array con valori opposti a quelli del contenuto del primo;
usi un ciclo do per inizializzare ordinatamente la prima metà dei valori puntati dal puntatore con le somme dei contenuti dei due array;
usi un ciclo while per inizializzare ordinatamente la seconda metà dei valori puntati dal puntatore con le differenze dei contenuti dei due array;
usi il ciclo che ritenete più idoneo (ma UNO SOLO) per scrivere ordinatamente sul canale di output i contenuti dei due array e quelli puntati dal puntatore;
Quel che si dovrà vedere saranno quaterne di due numeri tra loro opposti seguiti da zero e dal doppio del primo numero, per ogni valore digitato da tastiera, che dovrà coincidere (come è evidente) col primo numero di ogni quaterna. "