Sunteți pe pagina 1din 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


E1:

E2:

E3:

NOTA FINAL
E4:

PRIMER EJERCICIO (E1)

E5:

medio punto cada enunciado (hasta 2 puntos)

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

#include <stdio.h>
#include <ctype.h>
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 <stdio.h>
int main(void)
{
char c[100] = "1234567890";
short i;
for(i = 0 ; c[i] ; i++);
printf("%hd\n", i);
return 0;
}

10

Pgina 1 de 6

#include <stdio.h>
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);

2 --- 5

return 0;
}
void funcion(short* x, short* y)
{
*x ^= *y;
*y ^= *x;
*x ^= *y;
return;
}

#include <stdio.h>
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;
}

Pgina 2 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 <= 2 || a % 2) return 0;
for(i = 2 ; i < a ; i++)
{
if(esPrimo(i) && esPrimo(a i))
{
printf("%hd = %hd + %hd\n", a, i, a i);
return 1;
}
}
return 0;
}

Pgina 3 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 4 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

23

-343

-23232

ndice

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 5 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 <string.h>
#include <ctype.h>
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;
}

Pgina 6 de 6

S-ar putea să vă placă și