Difference between revisions of "Tipos de Dados de 1ª Ordem: números complexos"

From Wiki**3

Line 1: Line 1:
Note-se que não corresponde a um tipo de dados abstracto: a interface expõe a estrutura do tipo. Comparar com a [[ADTs de 1ª ordem: números complexos|versão abstracta]].
+
Note-se que não corresponde a um tipo de dados abstracto: a interface expõe a estrutura do tipo. Comparar com a [[ADTs de ordem: números complexos|versão abstracta]].
  
 
== Interface ==
 
== Interface ==
Line 30: Line 30:
 
   Complex '''COMPLEXmult'''(Complex a, Complex b) {
 
   Complex '''COMPLEXmult'''(Complex a, Complex b) {
 
     Complex t;
 
     Complex t;
     t.re = a.re * b.re – a.im * b.im;
+
     t.re = a.re * b.re ââ?¬â?? a.im * b.im;
 
     t.im = a.re * b.re + a.im * b.im;
 
     t.im = a.re * b.re + a.im * b.im;
 
     return t;
 
     return t;
 
   }
 
   }

Revision as of 11:00, 12 November 2008

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;
 }