01: // funzione che restituisce piu' di 1 singolo valore sfruttando il passaggio argomenti per indirizzo
02: #include<stdio.h>
03: #include<stdlib.h>
04:
05: void prodotto_complessi(float, float, float, float, float *, float *);
06:
07: int main(int argc, char **argv){
08: float prima_reale, prima_imm, seconda_reale, seconda_imm; // parte reale e immaginaria dei due numeri complessi da moltiplicare
09: float ris_reale, ris_imm; // parte reale e immaginaria del risultato
10:
11: printf("Inserisci parte reale e immaginaria di un primo numero complesso: ");
12: scanf("%f%f", &prima_reale, &prima_imm);
13:
14: printf("Inserisci parte reale e immaginaria di un secondo numero complesso: ");
15: scanf("%f%f", &seconda_reale, &seconda_imm);
16:
17: prodotto_complessi(prima_reale, prima_imm, seconda_reale, seconda_imm, &ris_reale, &ris_imm); // degli operandi passo il valore, del risultato gli indirizzi
18:
19: printf("(%f%+fi)*(%f%+fi) = %f%+fi\n", prima_reale, prima_imm, seconda_reale, seconda_imm, ris_reale, ris_imm);
20:
21: return 0;
22: }
23:
24: // prendo in ingresso parte reale e immaginaria di due numeri
25: // voglio calcolare il loro prodotto e restituirlo
26: // PROBLEMA: il risultato sara' comunque costituito da 2 valori, ma return permettge di restituirne uno solo, come risolvo?
27: // SOLUZIONE: prendo in ingresso anche l'indirizzo di due variabili in cui andare a depositare il risultato
28:
29: void prodotto_complessi(float ar, float ai, float br, float bi, float *rr, float *ri)
30: {
31:
32: *rr = ar*br - ai*bi; // memorizzo il risultato all'indirizzo puntato da rr
33: *ri = ar*bi + br*ai; // memorizzo il risultato all'indirizzo puntato da ri
34:
35: } // return non necessario, la funzione termina qui
36:
37:
Se avete commenti o osservazioni su questa pagina
mandate un messaggio di posta elettronica a bertoƶƶi@ce.unipr.it
mandate un messaggio di posta elettronica a bertoƶƶi@ce.unipr.it