Home Algoritmos y Estructuras de Datos (VJ1215)

Curso 2022/2023

Ejemplo de error en el ejercicio 10.a del tema 1

Piensa qué es lo que está mal en la siguiente solución y qué error podría provocar al ejecutarse.

int contarComunes(const vector<float> & v1, const vector<float> & v2) {

   int contador = 0, i = 0, j = 0;

   while (i < v1.size() && j < v2.size()) {
      if (v1[i] == v2[j]) {
	 contador++;
	 i++;
	 j++;
      }
      if (v1[i] < v2[j])
	 i++;
      else
	 j++;
   }
   return contador;
}
      

Solución

Falta else antes del segundo if. Tras entrar en el primer if, ya no tenemos la garantía de que se cumpla la condición del bucle para acceder a v1[i] y v2[j].