FANDOM


Programación en Lenguajes Estructurados


1 Observa el siguiente código y responde a las siguientes cuestiones:

int n, i, x = 1, y = 0;
for(i = 8; i > 0; i-=2)
    x *= i;

for(i = 1; i < 10; i+=2)
    y += i;
cout << x << y;


a) ¿Qué hace el fragmento de código mostrado? ¿Qué resultado muestra en pantalla?
b) Sustituye los bucles “for” por bucles “while”.
c) Sustituye los dos bucles por uno solo.

2 Crea una función que calcule el mcm y otra para el mcd de dos números.

int mcm(int a, int b);
int mcd(int a, int b);

3 Vamos a participar en el desarrollo de un programa de ajedrez y se nos pide que diseñemos
funciones para determinar si el movimiento de una ficha es válido.  Crea una función para el
alfil y otra para la torre.

bool movimientoAlfil(int f1, int c1, int f2, int c2);
bool movimientoTorre(int f1, int c1, int f2, int c2);


4 Necesitamos una función que devuelva el dígito enésimo de un número, para lo cual recibirá
como parámetro el número en cuestión y la posición del dígito a extraer.

int digito(int num, int pos);

Soluciones

1.a

Multiplica todos los pares entre 8 y 2: 8*6*4*2
Suma todos los impares comprendidos entre 1 y 9: 1+3+5+7+9

1.b

        i = 8;
        while(i > 0)
        {
                x *= i;
                i-=2;
        }

        i = 1;
        while(i < 10)
        {
                y += i;
                i+=2;
        }

1.c

for(i = 1; i < 10; i++)  // 1,2,3,4,5,6,7,8,9
{
        if(i%2 == 0) // Es par
                x *= i;
        else // es impar
                y += i;
}

2

int mcm(int a, int b)
{
        int res, m;
        if(a > b) // el mayor es a
                m = a;
        else    // El mayor es b
                m = b;

        res = m;
        while(res % a != 0 || res % b != 0)
                res++;

        return res;
}

int mcd(int a, int b)
{
        int res, m;
        if(a < b) // el menor es a
                m = a;
        else    // El menor es b
                m = b;

        res = m;
        while(a % res != 0 || b % res != 0)
                res--;

        return res;
}

3

bool movimientoTorre(int f1, int c1, int f2, int c2)
{
        return (f2 == f1 || c2 == c1);
}

bool movimientoAlfil(int f1, int c1, int f2, int c2)
{
        return (abs(f2-f1)==abs(c2-c1));
}

4

int digito(int n, int p)
{
        int d;
        while(p != 0)
        {
                d = n % 10;
                n /= 10;
                p--;
        }
}

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.