Examen UPCT informatica 1er curso mecanica

  • Published on
    09-Nov-2015

  • View
    212

  • Download
    0

Embed Size (px)

Transcript

<ul><li><p>Pgina 1 de 6 </p><p>GRADO EN INGENIERA MECNICA INFORMATICA APLICADA (508101004) CONVOCATORIA FEBRERO 2012 (Jueves 2 de Febrero, 2012) </p><p>APELLIDOS: GRUPO: </p><p>NOMBRE: DNI: </p><p>PUNTUACIN OBTENIDA EN CADA PREGUNTA NOTA FINAL </p><p>E1: E2: E3: E4: E5: </p><p>PRIMER EJERCICIO (E1) medio punto cada enunciado (hasta 2 puntos) </p><p>Escriba las salidas que, por pantalla, ofrecern los siguientes fragmentos de cdigo </p><p> #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; } </p><p>123 </p><p> #include int main(void) { char c[100] = "1234567890"; short i; for(i = 0 ; c[i] ; i++); printf("%hd\n", i); return 0; } </p><p>10 </p></li><li><p>Pgina 2 de 6 </p><p> #include void funcion(short*, short*); int main(void) { short a = 5, b = 2; short *p = &amp;a, *q = &amp;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; } </p><p>2 --- 5 </p><p> #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; } </p><p>0 </p></li><li><p>Pgina 3 de 6 </p><p>SEGUNDO EJERCICIO (E2) (2 puntos) </p><p>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. </p><p>Escriba el cdigo de una funcin, cuyo prototipo debe ser </p><p> short golbach(short); </p><p> que reciba como parmetro un entero y devuelva: </p><p> Un valor falso si resulta que el entero recibido es impar, o es menor o igual que 2. </p><p> Un valor verdadero si el entero recibido es par mayor que 2. </p><p>Y la funcin deber mostrar por pantalla un par de nmeros primos cuya suma sea igual al entero recibido como parmetro de entrada. </p><p>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. </p><p> short golbach(short a) { short i; if(a </p></li><li><p>Pgina 4 de 6 </p><p>TERCER EJERCICIO (E3) (2 puntos) </p><p>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. </p><p>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. </p><p>Decimos que dos polinomios son semejantes si ambos tienen la misma parte literal. As, los polinomios </p><p>() = </p><p>=1 y () = </p><p>=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, () = </p><p>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 (). </p><p>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. </p><p>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: </p><p>short semejanzaPolinomios(double *p, double *q, short d); </p><p> short semejanzaPolinomios(double *p, double *q, short d) { short i; for(i = 0 ; i &lt; d ; i++) { if((p[i] &amp;&amp; !q[i]) || (!p[i] &amp;&amp; q[i])) { return 0; } } return 1; } </p></li><li><p>Pgina 5 de 6 </p><p>CUARTO EJERCICIO (E4) (2 puntos) </p><p>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. </p><p>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). </p><p>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. </p><p>Por ejemplo, si la fila 3 de la matriz tiene los valores: </p><p>valor 123 332 612 1302 12 1 23 -343 -23232 </p><p>ndice 0 1 2 3 4 5 6 7 8 </p><p>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. </p><p>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: </p><p>short asignaturaMasNumerosa(long matriculacion[_ASIGNATURAS][_ALUMNOS]); </p><p> #define _ASIGNATURAS 200 #define _ALUMNOS 60 short asignaturaMasNumerosa (long matriculacion[_ASIGNATURAS][_ALUMNOS]) { short as, al, asMax, iMax; for(asMax = iMax = 0 , as = 0 ; as &lt; _ASIGNATURAS ; as++) { for(al = 0 ; matriculacion[as][al] != -1 ; al++); if(asMax &lt; al) // Est fuera del for... { asMax = al; iMax = as; } } return iMax; } </p></li><li><p>Pgina 6 de 6 </p><p>QUINTO EJERCICIO (E5) (2 puntos) </p><p>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. </p><p>El prototipo de la funcin deber ser el siguiente: </p><p> short esPalindromo(char*); </p><p>(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.) </p><p> #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; } </p></li></ul>