Inverser un tableau [Résolu/Fermé]

Signaler
Messages postés
120
Date d'inscription
samedi 1 mars 2008
Statut
Membre
Dernière intervention
18 août 2010
-
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
-
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!
A voir également:

5 réponses

Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 752
Salut,
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 ;)
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
120
Date d'inscription
samedi 1 mars 2008
Statut
Membre
Dernière intervention
18 août 2010
3 >
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016

ok,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.
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 752 >
Messages postés
120
Date d'inscription
samedi 1 mars 2008
Statut
Membre
Dernière intervention
18 août 2010

Ton programme a un petit problème pour l'inversion des éléments car tu commences ta boucle for à 1.
Or en C le premier indice est 0.
for(i=0;...)
De plus, je ne vois pas l'intérêt d'initialiser ton tableau, si tu refais des scanf derrière.
Sinon, n'oublie pas que le prototype de main est :int main(void) s'il ne reçoit pas de paramètres.
Bien sûr, il ne faut pas oublier le return 0; final.
Cdlt
Messages postés
120
Date d'inscription
samedi 1 mars 2008
Statut
Membre
Dernière intervention
18 août 2010
3 >
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016

T'as tout a fait raison mon cher!!!En fait, c'est en rédigeant le code que je me suis trompeé. Sinon ça va. J'en profite pour te souhaiter une bonne et heureuse année 2009 au cotes des tiens bien sur.
Messages postés
14
Date d'inscription
mercredi 22 août 2012
Statut
Membre
Dernière intervention
20 octobre 2013

#include <stdio.h>
#include <conio.h>
/* By: Abed OUBARI - CNESTEN MAROC - oubari@cnesten.org.ma */
main()
{
/* Déclarations */
int T[50]; /* tableau donné */
int N; /* dimension */
int I,J; /* indices courants */
int AIDE; /* pour l'échange */

/* Saisie des données */
printf("Dimension du tableau (max.50) : ");
scanf("%d", &N );
for (I=0; I<N; I++)
{
printf("Elément %d : ", I);
scanf("%d", &T[I]);
}
/* Affichage du tableau */
printf("Tableau donné : \n");
for (I=0; I<N; I++)
printf("%d ", T[I]);
printf("\n");
/* Inverser le tableau */
for (I=0, J=N-1 ; I<J ; I++,J--)
/* Echange de T[I] et T[J] */
{
AIDE = T[I];
T[I] = T[J];
T[J] = AIDE;
}
/* Edition des résultats */
printf("Tableau résultat :\n");
for (I=0; I<N; I++)
printf("%d ", T[I]);
printf("\n");
getch();
}
UTILISE CE PRINCIPE TRES FACILE TOUJOURS EN ECHANGEANT LE PREMIER AVEC LE LAVANT DERNIER LE FOR PARTANT JUSKA TAILLE-1 AVEC LE J AINSI DE SUITE
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 752
Bonjour,

Merci d'éviter l'usage des majuscules sur le forum. Cela revient à crier...
De plus, tu remontes sur un post datant de 5 ans.
Sinon l'algorithme que tu emploies est correct. En revanche, pour le code, 2 choses à dire :
1. Le prototype de main() est : int main(void) et non main()
Donc, il faut terminer son main() par return 0;
2. getch() n'est pas standard.
Messages postés
116
Date d'inscription
samedi 20 décembre 2008
Statut
Membre
Dernière intervention
22 janvier 2012
11
tiens voila mon idee :
main()
{
int tableau[n], debut = 0 , fin = n - 1, temp;//temp est une case temporaire pour faire l'echange
....
while(debut < fin)
{
temp = tableau[debut];
tableau[debut] = tableau[fin];
tableau[fin] = temp;
debut++;
fin--;
}
...
}
Messages postés
120
Date d'inscription
samedi 1 mars 2008
Statut
Membre
Dernière intervention
18 août 2010
3
pas mal, je vais essayer pour voir si ça peut marcher! merci pour ton aide.
Messages postés
116
Date d'inscription
samedi 20 décembre 2008
Statut
Membre
Dernière intervention
22 janvier 2012
11
j'ai oublie de mettre : #define n 10 en haut
sinon tu peux modifier la taille du tableau comme tu veux
Messages postés
120
Date d'inscription
samedi 1 mars 2008
Statut
Membre
Dernière intervention
18 août 2010
3
excuse-moi mon cher, mais je doute fort que ça puisse marcher.Je crois qu'il me faudrait plutot deux tableau pour faire ça.
Messages postés
116
Date d'inscription
samedi 20 décembre 2008
Statut
Membre
Dernière intervention
22 janvier 2012
11
*
mais je doute fort que ça puisse marcher
salut sabetodo
pour sa marche a merveille
Messages postés
4
Date d'inscription
jeudi 11 décembre 2008
Statut
Membre
Dernière intervention
21 décembre 2008
4
je pense ke fiddy a donné la meillieur method