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