Inverser un tableau
Résolu
Bonjour,
salut les gars!!je voulais inverser le contenu d'un tableau de telle sorte que le premier élément soit le dernier et le dernier soit le premier.Je sais que le tri serait la méthode idéale, mais je l'ai essaye dans u premier temps et je suis bloque! J'aimerais que qqn me donne juste des astuces pour y parvenir!
salut les gars!!je voulais inverser le contenu d'un tableau de telle sorte que le premier élément soit le dernier et le dernier soit le premier.Je sais que le tri serait la méthode idéale, mais je l'ai essaye dans u premier temps et je suis bloque! J'aimerais que qqn me donne juste des astuces pour y parvenir!
Configuration: Windows XP Firefox 3.0.5
5 réponses
-
ContributeurSalut,
Si son programme marche. Pas besoin de deux tableaux ;)
T'inverse le premier élément avec le dernier, puis le second avec l'avant-dernier etc.
Pas besoin de tableau supplémentaire ;)-
salut fiddy, j'ai tenu compte de ce que tu ma dit et je viens de modifier mon prrogramme en utilisant la boucle.Lorsque je le compile, ça marche. mais quand je l'execute il ne m'affiche rien a l'ecran. Voici le code:
#include<stdio.h> main () { int i,tampon=0,tab[6]={6,8,1,2,3,8}; for(i=1;i<6;i++) { scanf("%d",&tab[i]); } for(i=1;i<3;i++) { tampon=tab[i]; tab[i]=tab[5-i]; tab[5-i]=tampon; } for(i=1;i<6;i++) { printf("%d",tab[i]); } }
NB: Étape 0 : on échange t[0] et t[5]
Étape 1 : on échange t[1] et t[4]
Étape 2 : on échange t[2] et t[3] -
Contributeur@SabetodoFaut plutôt s'inspirer du premier programme.
Teste :#include <stdio.h> int main(void){ int tab[]={1,2,3,4,5,6,7,8,9,10}; const size_t n=sizeof tab/sizeof *tab; int debut=0,fin=n-1; int tmp; while(debut<fin){ tmp=tab[debut]; tab[debut]=tab[fin]; tab[fin]=tmp; debut++; fin--; } for(int i=0;i<n;i++) printf("%d ",tab[i]); puts(""); return 0; }
Cdlt -
@fiddyok, je vais le tester. juste une question:il parrait que t'as pas parcouru la tab avant de l'inverser.et j'ai pas trop saisi cette partie de la declaration: 'const size_t n=sizeof tab/sizeof *tab;'
Et qu'est ce que fait cette fonction 'puts'? -
Contributeur@Sabetodoil parrait que t'as pas parcouru la tab avant de l'inverser.
En fait, j'initialise le tableau, puis avec la boucle while j'inverse le premier élément avec le dernier etc.
const size_t n=sizeof tab/sizeof *tab;'
Le const permet de spécifier au compilateur que cette variable ne changera pas. C'est une bonne habitude à prendre. De plus, cela pourra permettre certaines optimisations.
Le size_t, c'est tout simple, c'est le type renvoyé par l'opérateur sizeof.
sizeof tab va te renvoyer taille globale du tableau (soit taille d'un int * nombre d'éléments du tableau).
Donc en divisant par sizeof *tab (ou sizeof(int)) on obtient le nombre d'éléments du tableau.
Et qu'est ce que fait cette fonction 'puts'
Le puts() final permet de sauter une ligne avant de quitter le programme. C'est plus propre.
Tu peux faire printf("\n"); si tu préfères. -
@fiddyok,merci beaucoup pour ce que t'as fait. Je viens d'analyser ton code et je crois que marche.mais je l'ai pas encore compilé. Par contre j'ai fait ceci et marche tout a fait.
#include<stdio.h> #define n 6 main () { int i,tampon=0,tab[n]={6,8,1,2,3,8}; for(i=1;i<n;i++) { scanf("%d",&tab[i]); } for(i=1;i<n/2;i++) { tampon=tab[i]; tab[i]=tab[n-1-i]; tab[n-1-i]=tampon; } for(i=1;i<n;i++) { printf("%d",tab[i]); } }
Remarque:Dans mon programme j'inverse le premier avec le dernier,le seconde avec l'avant dernier ainsi de suite jusqu'a ce que tout le contenu du tableau soit inverse.
-