Transcript
  • Pgina 1 de 6

    GRADO EN INGENIERA MECNICA INFORMATICA APLICADA (508101004) CONVOCATORIA FEBRERO 2012 (Jueves 2 de Febrero, 2012)

    APELLIDOS: GRUPO:

    NOMBRE: DNI:

    PUNTUACIN OBTENIDA EN CADA PREGUNTA NOTA FINAL

    E1: E2: E3: E4: E5:

    PRIMER EJERCICIO (E1) medio punto cada enunciado (hasta 2 puntos)

    Escriba las salidas que, por pantalla, ofrecern los siguientes fragmentos de cdigo

    #include #include int main(void) { char c[10] = "a1b2c3d."; short i, N; for(i = 0 , N = 0 ; c[i] ; i++) { if(isdigit(c[i])) { N *= 10; N += c[i] - '0'; } } printf("%hd\n", N); return 0; }

    123

    #include int main(void) { char c[100] = "1234567890"; short i; for(i = 0 ; c[i] ; i++); printf("%hd\n", i); return 0; }

    10

  • Pgina 2 de 6

    #include void funcion(short*, short*); int main(void) { short a = 5, b = 2; short *p = &a, *q = &b; funcion(p, q); printf("%hd --- %hd\n", a, b); return 0; } void funcion(short* x, short* y) { *x ^= *y; *y ^= *x; *x ^= *y; return; }

    2 --- 5

    #include short funcion1(short); short funcion2(short); int main(void) { printf("%hd\n", funcion1(5)); return 0; } short funcion1(short a) { return a ? funcion2(a - 1) : 1; } short funcion2(short a) { return a ? funcion1(a - 1) : 0; }

    0

  • Pgina 3 de 6

    SEGUNDO EJERCICIO (E2) (2 puntos)

    La llamada conjetura de Christian Golbach establece que todo nmero par mayor que 2 puede escribirse como suma de dos enteros positivos y primos. Estos dos sumandos pueden ser el mismo nmero primo. Por ejemplo: 4 = 2 + 2; 6 = 3 + 3; 8 = 5 + 3; 10 = 5 + 5, tambin 10 = 3 + 7; 12 = 5 + 7; etc.

    Escriba el cdigo de una funcin, cuyo prototipo debe ser

    short golbach(short);

    que reciba como parmetro un entero y devuelva:

    Un valor falso si resulta que el entero recibido es impar, o es menor o igual que 2.

    Un valor verdadero si el entero recibido es par mayor que 2.

    Y la funcin deber mostrar por pantalla un par de nmeros primos cuya suma sea igual al entero recibido como parmetro de entrada.

    Para la resolucin del ejercicio puede hacer uso de una funcin de prototipo short esPrimo(short); que recibe como parmetro un entero positivo y devuelve un valor verdadero o falso en funcin de que el entero recibido sea primo o compuesto. No se le pide que defina esa funcin esPrimo(): ya se la supone declarada y definida.

    short golbach(short a) { short i; if(a

  • Pgina 4 de 6

    TERCER EJERCICIO (E3) (2 puntos)

    Se supone conocidos los conceptos de polinomio, grado del polinomio, y coeficientes del polinomio. Por ejemplo, si tenemos el polinomio () = 5 4 + 2 3 3 , entonces su grado es 4 (el mayor exponente de sus trminos), y sus coeficientes son 5, 2, 0, 3 y 0: los coeficientes del trmino 2 y el llamado trmino independiente (correspondiente a 0) son cero.

    Llamamos parte literal de un polinomio al conjunto formado por los exponentes de los trminos cuyos coeficientes son distintos de cero. Por ejemplo, para el polinomio () = 2 6 + 5 2 1, la parte literal es el conjunto {6, 2, 0}, que son las potencias de los trminos del polinomio con coeficiente distinto de cero.

    Decimos que dos polinomios son semejantes si ambos tienen la misma parte literal. As, los polinomios

    () =

    =1 y () =

    =1 sern semejantes si cuando es cero, entonces tambin lo es ; y cuando es distinto de cero, entonces tambin es distinto de cero. Por ejemplo, () =

    4 3 3 + 7 es semejante al polinomio (), y los polinomios () y () no lo son: el literal de () y () es {4, 3, 1}, que es distinto al antes mostrado para ().

    Para codificar un polinomio en un programa podemos utilizar un array, donde cada posicin recoge un coeficiente: array[0] ser el trmino independiente; array[i] ser el coeficiente del trmino de exponente i. Un polinomio declarado como un array de dimensin 10 podr ser de hasta grado 9.

    Se le pide que escriba el cdigo de una funcin que reciba como parmetros dos arrays declarados de la misma dimensin y como tercer parmetro esa dimensin comn de ambos arrays. La funcin deber devolver un valor falso si ambos polinomios no son semejantes, y deber devolver un valor verdadero si s son semejantes. El prototipo de esa funcin deber ser:

    short semejanzaPolinomios(double *p, double *q, short d);

    short semejanzaPolinomios(double *p, double *q, short d) { short i; for(i = 0 ; i < d ; i++) { if((p[i] && !q[i]) || (!p[i] && q[i])) { return 0; } } return 1; }

  • Pgina 5 de 6

    CUARTO EJERCICIO (E4) (2 puntos)

    Identificamos a cada alumno de un colegio mediante un nmero correlativo, que se le asigna el da de su ingreso en la institucin educativa, y que codificamos con un valor de tipo long int.

    Hemos creado una matriz con tantas filas como asignaturas se impartan en ese colegio (indicado con el literal definido _ASIGNATURAS), y con tantas columnas como posibles alumnos pueden matricularse en cada asignatura (indicado con la macro _ALUMNOS).

    Cada fila recoger el cdigo de cada uno de los alumnos matriculados en la asignatura correspondiente a esa fila. Como no todas las asignaturas tienen el mismo nmero de alumnos, cada fila recoge, en su primera y sucesivas columnas, los cdigos de sus alumnos matriculados; y cuando no hay ms alumnos se inserta el valor 1: a partir de ese valor todos los dems valores carecen de significado.

    Por ejemplo, si la fila 3 de la matriz tiene los valores:

    valor 123 332 612 1302 12 1 23 -343 -23232

    ndice 0 1 2 3 4 5 6 7 8

    Se entiende que la asignatura que corresponde a esa fila tiene 5 alumnos matriculados, y que los valores ubicados en las posiciones 6, y siguientes no significan nada. Se supone que los datos estn bien introducidos, y que toda fila tiene un valor 1 indicando el final de la lista de alumnos matriculados.

    Se le pide que escriba el cdigo de una funcin que reciba como nico parmetro la matriz de matriculaciones de los alumnos por asignaturas y devuelva el ndice de la fila que corresponda a la asignatura con mayor nmero de alumnos matriculados. El prototipo de la funcin puede ser:

    short asignaturaMasNumerosa(long matriculacion[_ASIGNATURAS][_ALUMNOS]);

    #define _ASIGNATURAS 200 #define _ALUMNOS 60 short asignaturaMasNumerosa (long matriculacion[_ASIGNATURAS][_ALUMNOS]) { short as, al, asMax, iMax; for(asMax = iMax = 0 , as = 0 ; as < _ASIGNATURAS ; as++) { for(al = 0 ; matriculacion[as][al] != -1 ; al++); if(asMax < al) // Est fuera del for... { asMax = al; iMax = as; } } return iMax; }

  • Pgina 6 de 6

    QUINTO EJERCICIO (E5) (2 puntos)

    Escriba el cdigo de una funcin que reciba como nico parmetro una cadena de texto y que devuelva un valor verdadero si el texto que codifica la cadena es un palndromo.

    El prototipo de la funcin deber ser el siguiente:

    short esPalindromo(char*);

    (Un palndromo es una cadena de texto que se lee igual de derecha a izquierda como de izquierda a derecha, sin considerar los espacios, signos de puntuacin o acentos. Por ejemplo: Reconocer, A cavar a Caravaca, Dabale arroz a la zorra el abad: entrada sin acentos, 1234321.)

    #include #include short esPalindromo(char* c) { char c2[strlen(c)]; short i, j; for(i = 0 , j = 0 ; c[i] ; i++) { if(isalnum(c[i])) { c2[j++] = tolower(c[i]); } } c2[j] = 0; for(i = 0 , j = strlen(c2) - 1 ; c2[i] ; i++ , j--) if(c2[i] != c2[j]) return 0; return 1; }


Recommended