Bonjour je bloque sur cet exercice j'aimerai avoir des pistes:
voilà ce que j'ai compris. en gros j'ai un tableau vec: 1 4 6 8. Je dois échanger 8 6 4 1. Je sais échanger avec une variable temporaire. Mais je sais juste trier je n'arrive pas à résoudre ce problème j'ai besoin une piste. Ou alors je n'ai pas compris.
Le programme doit permettre de saisir un vecteur de nombres (après avoir saisi sa taille). Le but est ensuite de permuter les éléments (inverser le 1er élément avec la dernier, le 2e avec l'avant dernier, etc). Vous n'avez pas le droit d'utiliser un autre vecteur : l'inversion doit se faire directement dans le même vecteur. Au final, le vecteur inversé sera affiché.
le code que j'ai essayer de faire:
int tailleTableau=5;
int vec[tailleTableau]={1,4,5,16,8};
for(int i=0; i<tailleTableau; i++)
{
sauv=vec[k];
vec[i+1]=vec[i];
vec[i]=sauv;
}
Et bien tu utilise deux variables une qui indice le premier élément (0), la deuxième qui indice de dernier élément (N-1). Ensuite à l'aide de ces deux variable, tu fais l'échange. Ensuite tu incrémentes la première et décrémente la deuxième et tu fais l'échange, et cela jusqu’à la moitié du tableau, qui devrait être quand les deux variables vont ce croiser.
Et bien tu utilise deux variables une qui indice le premier élément (0), la deuxième qui indice de dernier élément (N-1). Ensuite à l'aide de ces deux variable, tu fais l'échange. Ensuite tu incrémentes la première et décrémente la deuxième et tu fais l'échange, et cela jusqu’à la moitié du tableau, qui devrait être quand les deux variables vont ce croiser.
pourquoi on incrémente la première et décrémente la deuxieme ?
pourquoi la moitié du tableau ?
voilà ce que j'ai fais:
for(int k = 0; k < nb ; k++)
{
int sauv = vec[k];
vec[k] = vec[nb - k - 1];
vec[nb - k - 1] = sauv;
}
Le but est ensuite de permuter les éléments (inverser le 1er élément avec la dernier, le 2e avec l'avant dernier, etc).
La première (variable) pointe (ou indice) au début du tableau, la deuxième à la fin du tableau. Quand j'incrémente la première et décrémente la deuxième, la première pointe le deuxième élément et la deuxième l'avant dernier élément. Ainsi de suite...
La moitié, parce que quand les variables arrive à la moitié, elles se croisent, et vont défaire ce que tu a fais. (en fait chacune aura parcourue sa moitié)
EDIT :
Rose93 a écrit:
voilà ce que j'ai fais:
for(int k = 0; k < nb ; k++)
{
int sauv = vec[k];
vec[k] = vec[nb - k - 1];
vec[nb - k - 1] = sauv;
}
Tu as testé ?
Parce que ça marche, mais faut s’arrêter à la moitié du tableau (nb/2) sinon tu défais ce que tu as fait.
En plus, si nb est impair, nb/2 est une division entière et l'élément du centre n'est pas touché.
Je veux dire qu'il ne sera pas permuté avec lui-même.
Et bien c'est parfais, vu qu'il est inutile de permuter l'élément du centre avec lui même!
permuter des élèments
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Bonhomme !! | Jeu de plateforme : Prototype.
Le Tout est souvent plus grand que la somme de ses parties.