[C con Clase] Problemilla con esta definicion de matriz

srd4121 en njit.edu srd4121 en njit.edu
Mar Dic 16 19:29:01 CET 2008


Hola Halowin,

Mensaje citado por: halowin <halowin3 en gmail.com>:

> SP> La función C/C++ para el "seno" es "sin", no "sen".
> SP> Prueba de nuevo. ;-)
> 
> Hola Salvador, excepto ese error de transcripcion, NO funciona:
> 
> float mate[2][2]={ {sin(3.14/4),0},{0,-cos(3.14/4)} };
> 
> Me dice: El elemento inicializador no es constante.
> 

Algunos compiladores son un poco más exigentes con la lista inicializadora. 
Define constantes para los resultados de esas funciones; esto es,

const float seno45 = (float) sin(3.14/4.0);
const float coseno45 = (float) -cos(3.14/4.0);  // no hace falta calcularlo

> Pero si la inicializo como:
> 
> float mate[2][2];
> mate[0][0]=sin(3.14/4);
> mate[0][1]=0;
> mate[1][0]=0;
> mate[1][1]=-cos(3.14/4);
> 
> Asi si funciona.
> 

Técnicamente, esto no es una inicialización, sino una serie de asignaciones, 
que obviamente funcionarán correctamente.

Por cierto, aconsejo usar más de 2 decimales para representar pi y a la hora 
de usar estas funciones matemáticas como seno y coseno.


Espero haber resuelto el problema.

Steven





Más información sobre la lista de distribución Cconclase