Tipos de Dados de 1ª Ordem: números complexos
From Wiki**3
Note-se que não corresponde a um tipo de dados abstracto: a interface expõe a estrutura do tipo. Comparar com a versão abstracta.
Interface
#ifndef __COMPLEX_H__
#define __COMPLEX_H__
typedef struct complex {
double re, im;
} Complex;
Complex COMPLEXinit(double, double);
double COMPLEXre(Complex);
double COMPLEXim(Complex);
Complex COMPLEXmult(Complex, Complex);
#endif
Implementação
#include "COMPLEX.h"
Complex COMPLEXinit(double re, double im) {
Complex t; t.re = re; t.im = im; return t;
}
double COMPLEXre(Complex c) { return c.re; }
double COMPLEXim(Complex c) { return c.im; }
Complex COMPLEXmult(Complex a, Complex b) {
Complex t;
t.re = a.re * b.re ââ?¬â?? a.im * b.im;
t.im = a.re * b.re + a.im * b.im;
return t;
}