Universidad Carlos III de Madrid

Grado en Ing. Telemática/Sist. Audiovisuales/Sist. de Comunicaciones

Arquitectura de Sistemas

Septiembre 2012 - Enero 2013

8. Autoevaluación automática

Comprueba con estas preguntas si has entendido este documento

  1. Se desea convertir una función que devuelve la suma de dos enteros en una función que devuelve la suma y en un parámetro adicional, la resta. Selecciona el prototipo adecuado.

    • int sum_subs(int a, int b, int subs);

    • int *sum_subs(int a, int b, int *subs);

    • int sum_subs(int a, int b, int *subs);

    • void sum_subs(int a, int b, int subs);

    • void sum_subs(int a, int b, int *subs);

  2. Se desea usar la función multiple, que multiplica dos enteros y devuelve en un parámetro adicional su multiplicación. Esta función supone que la variable resultado ya existe, es decir, NO hace un malloc internamente. Selecciona cómo realizar la llamada a dicha función SIN usar malloc en el programa llamante.

    • int a=5,b=6,resultado;
      resultado=multiple(a,b);

    • int a=5,b=6,*resultado;
      multiple(a,b,resultado);

    • int a=5,b=6,resultado;
      multiple(a,b,&resultado);

    • int a=5,b=6,resultado;
      multiple(a,b,*resultado);

    • int a=5,b=6,*resultado;
      multiple(a,b,&resultado);

  3. Se desea usar la función multiple, que multiplica dos enteros y devuelve en un parámetro adicional su multiplicación. Esta función supone que la variable resultado ya existe, es decir, NO hace un malloc internamente. Selecciona cómo realizar la llamada a dicha función usando malloc en el programa llamante.

    • int a=5,b=6,resultado;
      resultado=(int)malloc(1);
      multiple(a,b,resultado);

    • int a=5,b=6,*resultado;
      resultado=(int *) malloc(sizeof(int));
      multiple(a,b,resultado);

    • int a=5,b=6,*resultado;
      resultado=(int *) malloc(sizeof(int));
      multiple(a,b,&resultado);

    • int a=5,b=6,resultado;
      resultado=(int) malloc(sizeof(int));
      multiple(a,b,*resultado);

    • int a=5,b=6,*resultado;
      resultado=(int *)malloc(sizeof(int));
      multiple(a,b,*resultado);

  4. Se desea implementar la función multiple, que multiplica dos enteros y devuelve en un parámetro adicional su multiplicación. Esta función supone que la variable resultado ya existe, es decir, NO hace un malloc internamente. Selecciona el código adecuado para dicha función.

    • void multiple(int a, int b, int *result)
      {
       result=a*b;
      }

    • void multiple(int a, int b, int *result)
      {
       return a*b;
      }

    • void multiple(int a, int b, int result)
      {
       result=a*b;
      }

    • void multiple(int a, int b, int *result)
      {
       &result=a*b;
      }

    • void multiple(int a, int b, int *result)
      {
       *result=a*b;
      }

  5. Se desea definir una función, que dado un número de alumnos, devuelva un vector de enteros inicializado a cero. Seleccione el código adecuado.

    • void set_up(int number_students, int *vector)
      {
       *vector = (int *) calloc (number_students,sizeof(int));
      }

    • void set_up(int number_students, int *vector)
      {
       *vector = (int *) calloc (number_students*sizeof(int));
      }

    • int *set_up(int number_students)
      {
       int *vector = (int *) calloc (number_students,sizeof(int));
       return &vector;
      }

    • int *set_up(int number_students)
      {
       int *vector = (int *) calloc (number_students,sizeof(int));
       return vector;
      }

    • int *set_up(int number_students)
      {
      int *vector = (int *) calloc (number_students*sizeof(int));
      return vector;
      }
      	      

  6. Se desea definir una función, que dado un número n, devuelva en un vector que se le pasa como parámetro los n primeros números naturales, comenzando por el cero. La función deberá reservar espacio para dicho vector. Seleccione el código adecuado.

    • void first_n(int number, int **vector)
      {
          int i;
          *vector = (int *)malloc (number * sizeof(int));
          for (i = 0;i < number; i++) {
              (*vector)[i]=i;
          }
      }

    • void first_n(int number, int *vector)
      {
          int i;
          vector = (int *) malloc (number*sizeof(int));
          for (i = 0;i <= number; i++)
          {
             vector[i]=i;
          }
      }

    • void first_n(int number, int *vector)
      {
          int i;
          vector = (int *)malloc(number, sizeof(int));
          for (i = 0; i < number; i++)
          {
              vector[i]=i;
          }
      }

    • int *first_n(int number)
      {
          int i;
          int *vector = (int *)malloc(number * sizeof(int));
          for (i = 0;i < number; i++) {
              vector[i]=i;
          }
          return vector;
      }