Documente Academic
Documente Profesional
Documente Cultură
GRUPO:
NOMBRE:
DNI:
E2:
E3:
NOTA FINAL
E4:
E5:
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
(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);
Un valor falso si resulta que el entero recibido es impar, o es menor o igual 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
(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);
Pgina 4 de 6
(2 puntos)
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
(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