Considera la siguiente función:
/* @pre v.size()>0 * @post el primer componente del resultado es el valor maximo de v, * el segundo componente del resultado es el valor minimo de v */ pair<int, int> max_min2(const vector<int>& v) { pair<int, int> p; p.first = v[0]; p.second = v[0]; int i = 1; while (i < v.size()) { if (v[i] > p.first) { p.first = v[i]; } else if (v[i] < p.second) { p.second = v[i]; } ++i; } return p; }
Ahora responde a las siguientes preguntas
Pregunta 1
Escribe el invariante del bucle del código max_min2
.
Pregunta 2
Demuestra que si se cumple la precondición, después de ejecutar las inicializaciones, se cumple el invariante.
Pregunta 3
Demuestra que si se cumplen la condición de entrada en el bucle y el invariante, y se ejecuta el cuerpo del bucle, entonces se vuelve a cumplir el invariante.
Pregunta 4
Demuestra que si se cumple el invariante, pero no la condición de entrada, entonces se cumple la postcondición.
Pregunta 5
Demuestra que el bucle acaba. Es decir, dame la función cota y demuestra sus propiedades.
Observación
El fichero a enviar debe ser un .tar
dentro del cual haya un fichero de texto respuestas.txt
con las respuestas a las preguntas. (El veredicto del Jutge siempre será verde, porque las respuestas se evaluarán manualmente.)
Input
Output