Ejercicios de programación de primero del grado de ingeniería

Publicado el 14.01.2024 a las 21:20

Ejercicios de programación de primero del grado de ingeniería

  1. Vigilando números

  2. Columna de matriz con mayor número de pares

  3. ¿Cómo fuerzo a que los usuarios consuman la última versión de mi aplicación Angular desplegada?

Ejercicios de programación de primero del grado de ingeniería

De raspar los formatos con una cuchilla de afeitar a estudiar programación en primero de ingeniería industrial.


El hijo de unos vecinos ha comenzado este año con la carrera de grado de ingeniería industrial.


Tiene una asignatura de programación en el primer año.

Me parece una idea fantástica que enseñen programación aunque no te vayas a dedicar a ello.


Cuando yo estudié ingeniería no se tocaba la programación en toda la carrera, es más, ni se nos mencionaba que existía.

Eran otros tiempos, con decirte que los dibujos los hacíamos con escuadra, cartabón y Rotrings del 0.2, 0.4 y 0.8


Qué recuerdos... ir a los exámenes de dibujo y ver a la mayoría cargados con los paralés (yo me apañaba con escuadra y cartabón).


Y cuando se te derramaba la tinta por debajo de la regla? Ojú qué coraje!

Si tenías suerte y no era mucho podías raspar con una cuchilla de afeitar y disimular la erosión del formato con una tiza.


Bueno, dejo las historias de abuelo cebolleta.


El caso es que el hijo de mis vecinos me ha estado preguntando acerca de unos ejercicios que no comprendía sobre unos algoritmos de programación.


Usan MATLAB.


Yo nunca he tocado MATLAB, así que me ha tocado familiarizarme con su sintaxis.


Te dejo la plantilla de sintáxis de Matlab que dejan en el examen.


Los algoritmos que piden no son complicados, lo que me parece sensato si estos alumnos no se van a dedicar a la programación.


Te dejo un examen de programación del primer año de ingeniería industrial.


Los resuelvo a continuación.

Escribe un programa que lea números hasta que se introduzca un número que se haya introducido previamente.

El enunciado dice así:

Escribe un programa que lea números hasta que se introduzca un número que se haya introducido previamente. En ese momento el programa debe parar y mostrar la suma de los valores introducidos (salvo el último valor, que coincidía con uno previo). Por ejemplo, si se introducen la secuencia de números: 2, 6, -3, 5, 2 el programa debe parar porque el último valor leído se había introducido con anterioridad. El programa debería mostrar el valor 10 (2 + 6 + -3 + 5).

La solución en Matlab sería:


numbers = [];
no_repated = true;
    while no_repated
        input_num = input('Escribe un número: ');
        
        for i = 1:length(numbers)
            if numbers(i) == input_num
                no_repated = false;
                break;
            end
        end
        
        numbers = [numbers, input_num];
    end
    
result = sum(numbers) - input_num;
    
disp('La suma de los valores introducidos es: ');
disp(result);
      

Realiza una función que reciba como parámetro una matriz de enteros y devuelva el índice de la primera columna de la matriz que contenga más números pares que los contenidos en la siguiente columna de la matriz.

El enunciado dice así:

Realiza una función que reciba como parámetro una matriz de enteros y devuelva el índice de la primera columna de la matriz que contenga más números pares que los contenidos en la siguiente columna de la matriz. Si ninguna columna verifica esta condición se debe devolver -1. Por ejemplo, dada la matriz mostrada más abajo, habría que devolver el índice 2, porque la columna 2 contiene 3 números pares, un número superior al número de pares de la columna 3 (1).

| 5 | 2 | -9 | 1 | 21 | 8 |

| 11 | 32 | 18 | 2 | 7 | 9 |

| 1 | 2 | 9 | 4 | 32 | 18 |


La solución en Matlab sería:

function result = get_first_column_with_most_pairs(matrix)
    [rows_length, columns_length] = size(matrix);
    
    index = -1;
    
    for col = 1:(columns_length - 1)
        pairs_now = sum(mod(matrix(:, col), 2) == 0);
        pairs_next = sum(mod(matrix(:, col + 1), 2) == 0);
        
        if pairs_now > pairs_next
            result = col; 
            break; 
        end
    end
end
      

Escribe una función que dado un archivo devuelva la matriz que representa dicho archivo

El enunciado dice así:

Un archivo de texto representa una matriz indicando su tamaño y los índices y valores en los que la matriz tiene un valor distinto de cero. El formato es:

Número_filas Número_columnas

fila columna valor

fila columna valor


Por ejemplo, dado el archivo de texto:

5 5

1 3 7

4 2 8

3 3 1


El archivo representa la matriz:

0 0 7 0 0

0 0 0 0 0

0 0 1 0 0

0 8 0 0 0

0 0 0 0 0


Escribe una función que dado el nombre de un archivo con el formato comentado, devuelva la matriz que representa el archivo. En caso de que no pueda abrirse el archivo se devolverá una matriz vacía. Escribe también un programa principal que solicite del teclado un nombre de archivo, invoque a la función y muestre en la pantalla la matriz contenida en el archivo.


La solución a la primera parte sería:

function matrix = read_matrix_in_file(file_name)    
  matrix = [];
        
  file = fopen(file_name, 'r');
            
  % Verificar si el file se abrió correctamente
  if file == -1
    disp('No se pudo abrir el file.');
    return;
  end
            
  file_size = fscanf(file, '%d %d', 2);
  rows = file_size(1);
  columns = file_size(2);
            
  matrix = zeros(rows, columns);
            
  while true
    data = fscanf(file, '%d %d %f', 3);
                            
    if isempty(data)
      break;
    end
                
    row = data(1);
    column = data(2);
    value = data(3);
    matrix(row, column) = value;
  end
            
  fclose(file);
end
      

La solución a la segunda parte:

file_name = input('Escribe el nombre del archivo: ');
matrix_read = read_matrix_in_file(file_name);

if isempty(matrix_read)
    disp('La matrix del archivo es: ');
    disp(matrix_read);
else
    disp('No se pudo leer la matriz del archivo');
end
      

Hasta luego 🖖