Déjà, tu ne peux pas le faire sans déterminer les dimensions de la matrice que tu veux, ainsi que l'élément qui sera sur la diagonale après ce n'est plus qu'une question de rangement :
Pour un vecteur de taille S, on prend une matrice NxM, ou N = S / 2 on coupe donc le vecteur en 2 : la première partie pour la première ligne de la matrice, la 2ème partie pour compléter les autres lignes à l'envers.
ça nous donne donc pour chaque ligne :
Code C/C++ :
n = v_size / 2;
m = v_size / 2; // pour une matrice carrée
v1 = //v de 0 à n-1
v2 = //v de n à v_size
for (int i = 0 ; i < m ; i++)
{
for (count = 0 ; count < i ; count++)
{
line.push_back( v2[i - count - 1]);
}
for (int j = 0 ; j < n - count ; j++)
{
line.push_back( v1[j]);
}
l_matrix.push_back( line);
}
Avec ça tu devrais pouvoir te débrouiller, notamment pour permettre à l'utilisateur de choisir la taille finale de la matrice voulue...