Title: Examen Final
Course: 2025 - LI - Programacion Estructurada 1-1 y 1-2

Preguntas del examen final de Programación Estructurada.

Feedback shared by this category's questions, if right: Su respuesta es correcta.
Feedback shared by this category's questions, if partly right: Su respuesta es parcialmente correcta.
Feedback shared by this category's questions, if wrong: Su respuesta es incorrecta.

Q: Defina la estructura general de un programa en lenguaje C arrastrando y colocando el término correspondiente en la posición que considere correcta.

 [...] y [...] globales

 main ( lista de parámetros ) {

   variables locales

   [...]

 }

 [...] función ( lista de parámetros ) {

   variables locales

   [...]

 }

(Seleccione y arrastre el cuadro de respuesta que crea correcto en la posición que considera debe ir, puede haber cuadros de respuestas de más)
Also offered: instrucciones; conjunto de instrucciones; instrucciones fundamentales; void; int
A: declaraciones; definiciones; cuerpo del programa; tipo devuelto; secuencia de sentencias

Q: Relacione los conceptos con las definiciones correspondientes, puede haber respuestas de más.
- int | Tipo de dato.
- Punto y coma | Indica el fin de una sentencia.
- Bloque | Conjunto de sentencias con ; después de cada una de ellas que van encerradas entre llaves.
- continue | Palabra clave.
- Comentario | Texto que explica una instrucción o una función.
Also offered: Instrucción que indica un salto a la siguiente sentencia.; Palabra reservada.; Tipo primitivo.

Q: Relacione los conceptos con las definiciones correspondientes, puede haber respuestas de más.
- Orden de formato para números enteros con signo. | %d
- Orden de formato para números enteros sin signo. | %u
- Orden de formato para cadenas. | %s
- Se utiliza como prefijo con los tipos e, E, f, g y G, para especificar que los datos son de tipo long double. | L
- Carácter de barra invertida para salto de línea. | \n
- Carácter de barra invertida para tabulación horizontal. | \t
- Carácter nulo. | \0
- Formato de juego de inspección para aceptar determinados caracteres. | %[ ]
- Orden de formato que imprime una cantidad variable de números reales con dos decimales. | %0.2f
- Orden de formato para leer caracteres hasta encontrar un carácter de salto de línea. | %[^\n]
Also offered: %8i; %10.2g; \r; \o; %[^caracteres]

Q: Relacione los conceptos con las definiciones correspondientes, puede haber respuestas de más.
- Es la indicación de un proceso, el cual puede involucrar una o más acciones. | Estructuras secuenciales
- Se basan en la evaluación de expresiones lógicas a través del uso de los operadores de relación y operadores lógicos. | Estructuras selectivas
- Ejecutan acciones, sentencias o procesos de forma iterativa mientras se cumpla o hasta que deje de cumplirse una condición particular. | Estructuras repetitivas
- Indica la acción repetitiva de una secuencia mientras una condición sea cumplida. La secuencia se ejecuta por lo menos una vez. | Estrcutura do - while
- Esta estructura indica la elaboración de un proceso de acuerdo a una expresión que se evalúa denominada expresión condicional. | Estructura if - else
Also offered: Estructura while; Estructura switch - case; Estructura for; Operador ternario

Q: Analice cuidadosamente el siguiente código de programa para convertir grados Centígrados a Fahrenheit.

 °F = 9/5  °C  +  32

 #include "stdio.h"

 main () {

   float f, c;

   printf("Grados Celsius: ");

   scanf("%f", &c);

   f = 9 / 5 * c + 32;

   printf("Grados Farenheit: %8.2f \n", f);

 }

¿Cuál será el resultado obtenido al correr el programa, teniendo como datos: 21.666?
- 53.67
- 71
- 0
- Error de compilación
- No corre
A: 53.67

Q: Dada la longitud de cada uno de los lados de un triángulo, definir si es: Equilátero (tres lados iguales), Isósceles (dos lados iguales) o Escaleno (tres lados diferentes). El siguiente programa en lenguaje C muestra la solución del problema aplicando lógica inversa.

Seleccione y arrastre el cuadro de respuesta que crea correcto en la posición que considera debe ir, puede haber cuadros de respuestas de más.

#include "stdio.h"

main () {

  int a, b, c;
  scanf("%i", &a);      // lado a
  scanf("%i", &b);      // lado b
  scanf("%i", &c);      // lado c

  if ( [...] [...] [...] [...] [...] )
    puts("Es Escaleno");
  else
    if ( [...] [...] [...] [...] [...] )

      puts("Es Isosceles");
    else
      puts("Es Escaleno");
}
Also offered: (a == c); (a == b); (b == c); (a == c); (a == b)
A: (a != b); &&; (a != c); &&; (b != c); (a != b); ||; (a != c); ||; (b != c)

Q: Hacer un programa que lea un número entero N y calcule el resultado de la siguiente serie:

\( Y = 1 - \frac{1}{2} + \frac{1}{3} - \frac{1}{4} + \frac{1}{5} - \frac{1}{6} + ••• ± \frac{1}{N} \)

#include "stdio.h"

main () {
  int i, n;
  [...];
  [...];
  printf ("Valor limite: ");
  scanf ("%d", &n);
  for (i=1; i<=n; i++) {
    if ([...]) {
      y [...] [...];
      [...];
    }
    else {
      y [16]] [...];
      [...];
    }
  }
  printf ("\nEl resultado es: %f\n", y);
}

Para un valor de n = 5, el resultado sería: [...]

(Seleccione y arrastre el cuadro de respuesta que crea correcto en la posición que considera debe ir, puede haber cuadros de respuestas de más)
Also offered: 2.2833; 0.2833; -0.7833; int y = 0; int b = 1; b == 1; b = 0; i % 2 == 0; -=; b = 1; b == false; b == 0
A: float y = 0; bool b = true; b == true; +=; (float) 1/i; b = false; (float) 1/i; b = true; 0.7833

Q: Hacer un programa que calcule la potencia n de x, para cualquier valor entero positivo de n sin usar el archivo de cabecera math.h.  y = x^n

A continuación se presenta la función pow() para calcular la potencia usando recursividad.

// Cálculo de la Potencia sin usar MATH.H

 float pow (float [...] , int [...] ) {
   float [...] [...] [...] ;
   if ( [...] [...] 1 )
     return ( [...] * pow( [...] , [...] ) );
   return ( 1 );
 }

(Seleccione y arrastre el cuadro de respuesta que crea correcto en la posición que considera debe ir, puede haber cuadros de respuestas de más).
Also offered: y; ==; x-1; r-1; >
A: x; n; r; =; x; n; =>; r; x; n-1

Q: Cuando en una fórmula tenemos la expresión:

y = \( e^{-x} \)

La forma correcta de representarlo en lenguaje C corresponde a:
- y = 1/exp(x);
- y = pow(e, -x);
- y = exp(-x);
- y = e*-x;
A: y = 1/exp(x);

Q: Sea la matriz A de orden m x n, desarrolle un programa estructurado y modular que lea los elementos de la matriz A y calcule su transpuesta (A^T).

Después debe calcular la multiplicación de la matriz original A, por su transpuesta (R = A * A^T).

Ejemplo:

                       a_11        a_12       a_13       a_14

            A =      a_21        a_22       a_23       a_24

                       a_31        a_32       a_33 a_34

            a_11       a_21       a_31

A^T =     a_12       a_22       a_32

            a_13       a_23       a_33

            a_14       a_24       a_34

                       r_11        r_12       r_13

            R =      r_21        r_21       r_23

                       r_31        r_32       r_33

A continuación se muestran la función que calcula la transpuesta de la matriz A de orden m x n, y la función que calcula la multiplicación de la matriz A por su transpuesta A^T.^

(Seleccione y arrastre el cuadro de respuesta que crea correcto en la posición que considera debe ir, puede haber cuadros de respuestas de más).

 void transponer_matriz (int m, int n, int matriz[][MAX], int matrizT[][MAX]) {
   int i, j;
   for( i = 0 ; i < [...] ; i++ ) {
     for( j = 0 ; j < [...] ; j++ ) {
       matrizT [...] = matriz [...];
     }
   }
 }

 void multiplica_matrizT (int m, int n, int matriz1[][MAX], int matriz2[][MAX], int matriz3[][MAX]) {
   int i, j, k;
   for( i = 0 ; i < [...] ; i++ ) {
     for(j = 0 ; j < [...] ; j++ ) {
       matriz3[ i ][ j ] = [...];
       for( k =0 ; k < [...] ; k++ ) {
         matriz3 [ i ][ j ] = matriz3 [ i ][ j ] + matriz1 [...] * matriz2 [...];
       }
     }
   }
 }
Also offered: n; [ i ][ j ]; [ k ][ i ]; m; [ j ][ k ]
A: m; n; [ j ][ i ]; [ i ][ j ]; m; m; 0; n; [ i ][ k ]; [ k ][ j ]

Q: El siguiente es el código desordenado en lenguaje C de la búsqueda binaria, indique cual es la secuencia correcta.

a) | ultimo   =   puntomedio - 1;
b) | else
c) | if ( A[puntomedio] == b )
d) | ultimo   =   n;
e) | if ( A[puntomedio] > b )
f) | primero    =   puntomedio + 1;
g) | posición   =   puntomedio;
h) | encontrado   =   1;
i) | while (( encontrado == 0 ) && ( primero <= ultimo ))  {
j) | if ( encontrado == 1 )
k) | else
l) | puntomedio   =  ( primero + ultimo ) / 2;
m) | encontrado   =   0;
n) | posicion   =   -1;
o) | }
p) | else
q) | primero   =   0;
- c, a, b, l, m, i, d, j, q, g, e, o, k, n, f, p, h (m, q, s, r, c, d, g, l, a, h, b, n, t, o, p, e, j, k, i, f)
- c, q, d, i, m, g, l, b, h, a, n, k, f, o, p, e, j
- m, q, d, i, c, h, b, e, a, k, n, p, o, j, f, l, g
- m, q, c, d, g, l, a, h, b, n, o, p, e, j, k, i, f
- m, q, d, i, l, c, h, b, e, a, k, f, o, j, g, p, n
A: m, q, d, i, l, c, h, b, e, a, k, f, o, j, g, p, n

Q: La siguiente macro contiene un error, indique cual es:

#define radianes  (ang)    (ang)*PI/180.0
- Hay un espacio en blanco entre la palabra radianes y el parámetro (ang).
- Le falta el punto y coma al final.
- Las macros deben escribirse siempre con mayúsculas.
- En la definición de la macro, ang debe ir sin paréntesis.
A: Hay un espacio en blanco entre la palabra radianes y el parámetro (ang).

Q: Sea el arreglo a de longitud n, compuesto por los siguientes elementos:

a = {1, 2, 3, 5, 6, 7, 9, 10, 12, 15, 25, 30}

Se desea eliminar un número del arreglo. (En el ejemplo es el 5).

a = {1, 2, 3, 6, 7, 9, 10, 12, 15, 25, 30}

La función de aplicación general para eliminar un elemento del arreglo se muestra a continuación:

Donde:

a   Es el arreglo.

n   Es el número de elementos del arreglo.

b   Es el número que se va a eliminar del arreglo.

Seleccione y arrastre el cuadro de respuesta que crea correcto en la posición que considera debe ir, puede haber cuadros de respuestas de más.

int eliminarElemento (int b, int n, int a[ ]) {
  int i = 0, k = 0;
  while (( [...] ) && ( [...] )) {
    i++;
  }
  if ( [...] ) {
    printf("El valor %5i no está en el arreglo", b); }
  else
    for (k=i; k < n-1; k++) {
      [...] = [...];
  }
  return n-1;
}
Also offered: b == a[i]; k < n; i == n; a[k-1]
A: i < n; b != a[i]; i > n; a[k]; a[k+1]

Q: Utilizando programación estructurada y modular (funciones), desarrolle un programa en C que calcule el valor numérico de un polinomio de grado k, de acuerdo a la siguiente expresión:

                      k

(a + b)^k =  Σ \( \frac{\frac{k!}{(k-j)!}}{j!} a^{(k-j)} b^j \)

                    j = 0

Donde:

Σ es la sumatoria desde que  j = 0  hasta k.

Por lo que deberá calcularse como una serie o sumatoria con contador j y límite=k.

a y b   Son dos valores numéricos cualquiera para calcular el polinomio.

k   Es el grado del polinomio.

Teniendo el programa principal y las funciones para calcular el factorial (factorial())y la potencia (pow()), la función para calcular la fórmula anterior, podría resolverse de la siguiente manera:

(Seleccione y arrastre el cuadro de respuesta que crea correcto en la posición que considera debe ir, puede haber cuadros de respuestas de más).

float polinomio (int k, float a, float b) {
  float y=0;
  int j;
  for (j=0; j<=k; j++) {
    y += ((float) ([...]/[...])/[...])*[...]*[...];
  }
  return (y);
}
Also offered: pow(a,b); factorial(b); pow(j,k); factorial(j-k)
A: factorial(k); factorial(k-j); factorial(j); pow(a,k-j); pow(b,j)