User Tools

Site Tools


in204:tds:sujets:td4:part1

This is an old revision of the document!


Partie I – Manipulations d’itérateurs

TD4

Question n°1

Nous nous intéressons typiquement à la fonction suivante définie sur un tableau dynamique :

#include <vector>       // std::vector
 
template <class T>
int upper(std::vector<T> aVector, const T& theValue)
{
	for (int i = 0; i < aVector.size(); i++)
	{
		if (aVector[i] > theValue)
			return i;
	}
	return -1;
}

Cette fonction retourne l’indice du premier élément du tableau qui est plus grand que theValue.

Question n°1.1

Modifier cette fonction pour qu’elle fonctionne désormais avec des itérateurs et non plus un tableau.

Question n°1.2

Tester cette fonction avec le code suivant :

int testUpper() 
{
	int myints[] = { 10,20,30,30,20,10,10,20 };
	std::vector<int> v(myints, myints + 8);
	std::vector<int>::iterator up = upper(v.begin(), v.end(), 20); 
	std::cout << "first value greater than 20  at position " 
            << (up - v.begin()) << '\n';
	return 0;
}

Question n°2

Dans la STL, de nombreux algorithmes sont fournis dont notamment des algorithmes de tri. Ces algorithmes sont présents dans le fichier d’entête :

#include <algorithm>

Nous trouvons par exemple l’algorithme de tri :

template <class randomAccessIterator>
void sort(randomAccessIterator first, randomAccessIterator last);

ainsi que :

template <class randomAccessIterator>
void sort_heap(randomAccessIterator first, randomAccessIterator last);

qui fournisse un tri rapide et tri sur le tas.

Question n°2.1

Nous souhaitons déterminer la position du premier élément dans notre tableau qui est plus grand que 20 avec d’ordonner le tableau. Ceci correspond au code de la fonction définie à la question 1.2, et nous souhaitons ensuite déterminer la position du premier élément qui est plus grand que 20 après avoir ordonner le tableau.

Modifier le code de la fonction définie à la question 1.2 pour ajouter cette nouvelle opération en appelant soit la fonction sort soit la fonction sort_heap pour effectuer le tri de votre tableau.

in204/tds/sujets/td4/part1.1570557642.txt.gz · Last modified: 2019/10/08 18:00 by bmonsuez