Análisis laboratorio 12 - Vectores (arrays)

Asignatura: Fundamentos de Informática
Especialidad: Electrónica - UPV/EHU
Curso académico: 2013-2014
Profesor: Ismael Etxeberria Agiriano

  1. 12-001:
    Mediante un bucle for copiaremos para i desde n-1 hasta 0 el número de la posición i a la posición i+1.
    En la siguiente figura se muestra un vector de 10 números reales (en el ejercicio son enteros). Representamos en azul el número y en rojo el índice.

    En la siguiente figura se ilustra el proceder, expresando en negro el orden de copia.

    n será 9 y copiaremos:
    Nótese que si en vez de copiar de derecha a izquierda lo hiciéramos de izquierda a derecha tendríamos que andar guardando el número sobre el que vamos a escribir cada vez, siendo un algoritmo más pesado.
  2. 12-002:
    El algoritmo más razonable consiste en:
  3. 12-003:
    Este ejercicio aborda el problema de ir generando una lista ordenada a medida que añadimos elementos a un vector.
    Como la lista ya está ordenada el algoritmo más sencillo (no el más eficiente) consistirá en buscar secuencialmente el índice del primer elemento superior al número a introducir.
    Si se estudia el programa dado lo que se hará es desplazar todos los números a la derecha partir de esta posición para hacerle sitio, copiando en el hueco resultante.
  4. 12-004:
    Antes de nada habrá que verificar si el vector tiene más de dos elementos (n > 2) ya que en caso contrario el resultado no tiene mucho sentido. Si es así devolveremos -1 (arbitrariamente).
    Un posible algoritmo consistira en guardar el índice del elemento mayor y el menor, sumar todos y al finalizar descontar estos dos elementos extremos.
    Así, inicializamos el índice del mayor y del menor a 0 (el primer elemento) y la suma de elementos al primero. Recorreremos el vector de 1 a n-1 buscando el índice de elementos menores que el menor o mayores que el mayor y sumando los elementos.
    El resultado final será:
      (suma - v[mayor] - v[menor]) / (n - 2)
    

  5. 12-005:
    Es un error común confundir la cantidad de números primos buscados, n con el número mayor primo buscado.
    La función que calcule los n primeros números primos tendrá dos parámetros: el vector de números primos (con al menos n celdas reservadas) y el número de primos a calcular, n.
    void Primos (int v[], int n);
    
    Un algoritmo posible es ir probando números i incrementalmente desde 2 hasta encontrar n números primos, que responde a un esquema do-while.
    Llevaremos en j la cuenta de cuántos números primos llevamos encontrados, en un principio 0.
    Para cada nuevo i recorreremos todos los primos encontrados de 0 a j-1; si no encontramos ningún divisor guardarmos i en la última posición (j) e incrementaremos j.