Segundo parcial ICom-2001

Nota: Respete los prototipos de las funciones (en serio).

  1. Utilizando la siguiente estructura de datos:

    typedef struct
    {
      int orden;
      double *coeficiente;
    } Polinomio;

    (Recuerde que un polinomio de orden n tiene n+1 coeficientes: c[0] ... c[n] que corresponden a las potencias x^0 ... x^n)
    implemente las siguientes funciones:
    1. /* crea y retorna un nuevo Polinomio */
      Polinomio * creaPolinomio(int orden);
    2. /* asigna el n_ésimo coeficiente del Polinomio */
      void setCoef(int n, double c, Polinomio * P);
    3. /* retorna el n_ésimo coeficiente del Polinomio */
      double getCoef(int n, Polinomio * P);
    4. /* especializa el polinomio en x usando:
      ((...((c[n]*x+c[n-1])*x+c[n-2])*x+ ...+c[1]*x)+c[0]) */
      double especializa( double x, Polinomio * P );
    5. /* suma dos Polinomios retorna un nuevo Polinomio con el resultado */
      Polinomio * sum( Polinomio *p1, Polinomio *p2);
    6. /* multiplica dos Polinomios y retorna un nuevo Polinomio con el resultado */
      Polinomio * mult( Polinomio *p1, Polinomio *p2);
    7. /* deriva un Polinomio retornando un nuevo Polinomio con el resultado */
      Polinomio * deriv( Polinomio *p );
    8. /* libera la memoria asociada con el polinomio */
      void destruyePolinomio( Polinomio *p );

  2. Dadas las siguiente estructura de datos:

    typedef struct
    {
      unsigned char R, G, B;
    } RGB;

    typedef struct
    {
      int ancho, alto;
      RGB **pixel;
    } ImagenRGB;

    typedef unsigned char Gris;

    typedef struct
    {
      int ancho, alto;
      Gris **pixel;
    } ImagenGris;


    implemente las siguientes funciones:
    1. /* crea y retorna una nueva ImagenRGB */
      ImagenRGB * creaImagenRGB( int ancho, int alto );
    2. /* crea y retorna una nueva ImagenGris */
      ImagenGris * creaImagenGris( int ancho, int alto );
    3. /* asigna el pixel de la fila y columna dadas */
      void setPixelRGB( ImagenRGB *im, int fila, int columna, RGB * pix );
    4. /* asigna el pixel de la fila y columna dadas */
      void setPixelGris( ImagenGris *im, int fila, int columna, Gris * pix );
    5. /* retorna el pixel de la fila y columna dadas */
      RGB * getPixelRGB( ImagenRGB *im, int fila, int columna );
    6. /* retorna el pixel de la fila y columna dadas */
      Gris getPixelGris( ImagenGris *im, int fila, int columna );
    7. /* libera la memoria asociada con la imagen im */
      void destruyeImagenRGB( ImagenRGB * im);
    8. /* libera la memoria asociada con la imagen im */
      void destruyeImagenGris( ImagenGris * im);
    9. /* convierte un pixel RGB en uno Gris usando la fórmula:
         Gris = 0.299*R+0.587*G+0.114*B */
      Gris RGBtoGris( RGB * pix );
    10. /* transforma la imagenRGB en una nueva ImagenGris */
      ImagenGris * transforma( ImagenRGB * im );