Examen Final - 75.42. Taller de programación I

Cátedra: Veiga
Fecha: 1er Cuatrimestre 2008
Día: 22/07/2008
Tema: 3

Esta página está incompleta; podés ayudar completando el material.

Enunciado

  1. Describa el proceso de transformación Fuente-Ejecutable.
  2. Describa la función utilizada para lanzar un nuevo thread. Incluya la descripción del uso y significado de sus parámetros.
  3. Escribir un programa ANSI C que admita una cadena de 3 caracteres por linea de comandos e imprima los resultantes de todas las permutaciones posibles. Ej. MiPrograma ABC debe imprimir ABC, ACB, BAC, BCA, CAB, CBA.
  4. Escriba el .H correspondiente a una biblioteca que exporta:
    1. Una variable de tipo entero largo con signo llamada CodError
    2. Una función F que toma un puntero a un arreglo de 3 enteros y retorna un caracter
    3. Una función G que toma un puntero a un puntero a caracter y no devuelve nada
  5. Escriba un programa que envie un datagrama de 20 bytes 'A' al puerto 202 del equipo 200.49.224.251.
  6. Defina el operador» de forma que cargue, desde consola, el contenido de una lista de STL. El proceso debe terminar cuando el ingreso es nulo.
  7. ¿Que propósito tiene la función htons?
  8. Utilizando templates defina las clases necesarias para que el siguiente código sea válido:
Matriz<char> M;
M[1][2]='a';
M[1][1]=M[2][1];
  1. Explique el motivo por el cual se utiliza la palabra const después de la declaración del operador >. De un breve ejemplo que demuestre que es imprescindible.
  2. Escriba una rutina (para el ambiente gráfico Windows o Linux) que pinte un rectángulo rojo de la 1/3 parte del alto y ancho de la ventana.

Resolución

Punto IV

#ifndef __BIBLIOTECA_H__
#define __BIBLIOTECA_H__
 
extern long int CodError;
extern char F(int(*arreglo)[3]);
extern void G(char**);
 
#endif

Punto VI

template <typename T>
istream& operator>>(istream& is, list<T>& lst)
{
    T obj;
    is>>obj;
    while(obj)
    {
        lst.push_back(obj);
        is>>obj;
    }
    return is;
}

Punto VIII

template<typename T>
class Matriz
{
      T* matriz;
      int _file, _row;
 
public:
 
       Matriz(int i=3, int j=3)
       {
             _file = i; _row = j;   
             matriz = new T[_file*_row];
       }
       ~Matriz()
       {
             delete[] matriz;   
       }
       T* operator[](int i)
       {
             return &matriz[i*_row];                  
       }
       Matriz& operator=(const Matriz& m)
       {
               if(this==&m)
                    return *this; 
               assert(_row==m._row && _file==m._file);
               for(int i=0;i<_file*_row;i++)  
                       matriz[i]=m.matriz[i];
               return *this;     
       }       
};

Discusión

Si ves algo que te parece incorrecto en la resolución y no te animás a cambiarlo, dejá tu comentario acá.
materias/75/42/final_003_20080722_3.txt · Última modificación: 2009/01/09 22:54 por dani1482
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia: CC Attribution-Noncommercial-Share Alike 3.0 Unported


Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki