Sie sind auf Seite 1von 5

INTRODUCCIÓN A LA PROGRAMACIÓN 1.

CURSO 2005/2006
PRIMER CONTROL – I.T.I.G. 1/12/2005

TEORÍA

Se desea construir un procedimiento para descomponer un número en sus factores primos. Para ello se le pasará el
número a descomponer y el procedimiento deberá devolver los factores primos y los exponentes correspondientes en una
tabla[2, MAX ] de enteros ( 1ª fila el factor y 2ª fila el exponente) y el número de factores primos distintos

Por ejemplo:
Si el número es 144, la descomposición deberá ser 2^4*3^2
Si el número es 1024, la descomposición deberá ser 2^10
Si el número es 97, la descomposición deberá ser 97 180 2
Si el número es 180, la descomposición será 2^2*3^2*5 90 2
Si el número es 54, la descomposición será 2*3^3 45 3
15 3
En el caso de 180 la matriz a devolver será:
5 5
• 2 • 3 • 5 • • 1
• 2 • 2 • 1 • •
Notas:
• Para resolver el problema no hace falta calcular cuando un número es primo.
• El número de factores primos se supone menor o igual que MAX
APELLIDOS NOMBRE GRUPO
mero

TEORÍA

cons MAX : …
tipos Tt : tabla [2,MAX]
proc examen ( ent nro : entero; sal t : Tt, n:entero
var
base, exp: entero
principio
____________
____________
____________
mientras _________________
si ______________
_____________________________
_____________________________
| otras:
si ________________
guardar (_________________)
otras :
nula
fsi
_______________
_______________
fsi
fmientras
guardar (__________________)
fin
proc guardar (________________________________________)
prin
______________________
______________________
______________________
fin
INTRODUCCIÓN A LA PROGRAMACIÓN 1. CURSO 2005/2006
PRIMER CONTROL – I.T.I.G. 1/12/2005

APELLIDOS NOMBRE GRUPO


mero

PRÁCTICAS

Cuestión 1 (1 punto)
Dado el siguiente programa en C, indique cuál es la salida por pantalla:

#include <stdio.h>
void main(void)
{
int x,y;
x=5;
y=3;
if(x%2)
y=x*2;
if(y>5)
y++;
else
y=x*3;
printf("y vale: %d\n",y);
}

Salida: ___________________________________________________________

Cuestión 2 (1,5 puntos)


Escriba qué mostraría por la salida estándar el siguiente programa:

#include <stdio.h>
void main (void)
{
int a = 9, b=3, c=1;
int *p1, *p2, *p3;

p1=&a;
p2=&b;
p3=&c;
*p2=*p1;
*p3=c-1;
a=a+1;
printf (“a=%d b=%d c=%d *p1=%d *p2=%d *p3=%d\n”,
a, b, c, *p1, *p2, *p3);
}

Salida: ___________________________________________________________

Cuestión 3 (1 punto)
Sean las siguientes definiciones y declaraciones:

typedef int R1[20]; R2 r, *pr;
typedef enum {uno, dos, tres} R2 ; TR2 tr;
typedef R1 TR2[20]; float x;

Sea el siguiente prototipo:


void func (int , TR2, float *);

Indique si las siguientes llamadas son o no correctas, justificando la respuesta.

a) func (tr[2][1], tr, &x);


b) func (tr[2], tr, &x);
c) func (tr[0][0], tr, &5.1);

Cuestión 4 (1,5 puntos)


1. Defina un tipo Ts para una tabla que permita almacenar 9x9 elementos de tipo entero. Declare una tabla s de tipo Ts
2. Escriba un bucle for que cuente el número de elementos múltiplos de 3 de la fila i-ésima de la matriz s
3. Escriba una posible declaración de una función f que multiplique por un valor entero dado los elementos de una fila
de una tabla de tipo Ts

Cuestión 5 (1 punto)
Escriba el siguiente bucle for utilizando la instrucción while. Suponga la variable i ya declarada (int i;)

for(i=2828; i>=0; i= i-28)


printf("%d", i);

Cuestión 6 (1,5 puntos)


Tres segmentos pueden formar un triángulo escaleno si los tres segmentos tienen distinta longitud y la suma de cualquier
par de ellos es mayor que el tercero. Escriba una expresión lógica en C que devuelva cierto si tres segmentos de longitudes
a, b y c pueden formar un triángulo escaleno siguiendo el razonamiento anterior.
APELLIDOS NOMBRE GRUPO
mero

Cuestión 7 (2,5 puntos)


En matemáticas dada una matriz cuadrada 4 X 4 se define la diagonal principal como los valores de la matriz que ocupan
la misma fila y la misma columna. Y la diagonal secundaria se define por los elementos cuyo índice fila y columna suman
la dimensión + 1, en este caso 5. (En C la suma sería la dimensión – 1)

Por ejemplo dada la matriz

1 2 3 4
5 6 7 8
1 2 3 4
5 6 7 8

La diagonal principal está formada por los elementos {1,6,3,8} y la diagonal secundaria por {4,7,2,5}.

a) Completa el código que se da para imprimir la media de los valores por columna desde la diagonal secundaria inclusive
hacia abajo. Es decir, para la matriz anterior el programa debe imprimir

la media de la columna 0 es: 5.000000 5/1


la media de la columna 1 es: 4.000000 (2+6)/2
la media de la columna 2 es: 5.666667 (7+3+7)/3
la media de la columna 3 es: 6.000000 (4+8+4+8)/4

for _______________________________________
{
____________________________________

for________________________________________

__________________________________________

printf("________________________________________________
}

b) Completa el código que se da para imprimir la media de los valores por fila desde la diagonal principal inclusive hasta
la última columna. Es decir, para la matriz anterior el programa debe imprimir

la media de la fila 0 es: 2.500000 (1+2+3+4)/4


la media de la fila 1 es: 7.000000 (6+7+8)/3
la media de la fila 2 es: 3.500000 (3+4)/2
la media de la fila 3 es: 8.000000 8/1

for _______________________________________
{
____________________________________

for________________________________________

__________________________________________

printf("________________________________________________
}

Das könnte Ihnen auch gefallen