IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

tri d'un tableau


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de dyala
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    81
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 81
    Par défaut tri d'un tableau
    salut tout le monde
    j'ai fait deux methodes de tris la premiere tri a bulle et la 2 eme par selection il y a aucun probleme au niveau de compilation mais il fait rien
    tri a bulle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    #include<stdio.h>
     
    void main()
    			  { int t[8],i,j,x;
    			  int  c=1;
    			  for(i=0;i<8;i++)
    			  scanf("%d/n",&t[i]);
    			  for (i=0;i<8 && c;i++)
    			  c=0 ;
    			  for(j=1;j<8-i;j++)
    			  if (t[j]<t[j-1])
    			  {x=t[j-1];
    			  t[j-1]=t[j];
    			  t[j]=x;
    			  c=1;}
    				  for(i=0;i<8;i++)
    				  printf("%d",t[i]);}
    par selection:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
      # include<stdio.h>
     
    			  void main()
    			  { int t[8],i,j,x,min,k;
    			  printf("donnez les valeurs de tableau");
    			  for(i=0;i<8;i++)
    				scanf ("%d",&t[i]);
    			  for (i=0;i<8;i++)
    			  min=t[i];
    			  k=i;
     
    			  for(j=1+i;j<8;j++)
    			  if (t[j]<min)
    			  {min=t[j];
    			  k =j;};
    			  if(k!=i){x=t[i];
    				t[i]=min;
    				t[k]=x;}
     
    			  for(i=0;i<8;i++)
    			  printf("%d",t[i]);
    je pense que le proleme est au niveau de permutation
    merci d'avance

  2. #2
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Bonjour,

    dans le premier comme dans le deuxième, je pense qu'il te manque une accolade ouvrante juste après la deuxième boucle "for (i=...", accolade qu'il faut bien sûr fermer après avoir permuter les valeurs.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  3. #3
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Ton code est tellement mal indenté et les {} placés n'importe où que tu ne peux pas t'y retrouver. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    void main()  // int main(void)
    {
      int t[8],i,j,x;
      int  c=1;
      for(i=0;i<8;i++)  scanf("%d/n",&t[i]);
      for (i=0;i<8 && c;i++)  c=0 ; // bizarre non ?
      for(j=1;j<8-i;j++)
        if (t[j]<t[j-1])
        {
           x=t[j-1];
           t[j-1]=t[j];
           t[j]=x;
           c=1;
        }
      for(i=0;i<8;i++)  printf("%d",t[i]);
    }

  4. #4
    Membre confirmé Avatar de dyala
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    81
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 81
    Par défaut
    pour les accolades j'ai ajouté une apre for et l'autre apres la permutation mais le probleme reste tjr
    pour:c=0 j'ai essayé d'utiliser une variable booleéne sous forme une variable entiére et ca pour verifier que le tableau n'est pas trié !

  5. #5
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    j'ai essayé d'utiliser une variable booleéne sous forme une variable entiére et ca pour verifier que le tableau n'est pas trié !
    OK
    Reste logique dans l'utilisation de ta variable : je recommence tant qu'il n'est pas trié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    do
    {
        c=0 ;
        for(j=1;j<8;j++)
           if (t[j]<t[j-1])
           {
                x=t[j-1];
                t[j-1]=t[j];
                t[j]=x;
                c=1;
           }
    } while(c!=0) ;

  6. #6
    Membre confirmé Avatar de dyala
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    81
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 81
    Par défaut
    j'ai essaye ex :
    létat du vecteur au debut est 4 2 3 1 il m'affiche 4 2 3 1

  7. #7
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    létat du vecteur au debut est 4 2 3 1 il m'affiche 4 2 3 1
    Je suis sceptique . Montre exactement le code que tu as utilisé pour ce brillant résultat

  8. #8
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    dyala :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(j=1+i;j<8;j++)
    			  if (t[j]<min)
    			  {min=t[j];
    			  k =j;};
    diogene :
    Ton code est tellement mal indenté et les {} placés n'importe où que tu ne peux pas t'y retrouver.
    Si tu t'obstines à ne pas suivre les conseils,on perd notre temps. Débrouilles toi !

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Par défaut
    Bonsoir dyala
    Je crois que tu as simplement oublié les {} de la boucle principale de ton tri par sélection:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    		for (i=0;i<8;i++){
    			min=t[i];
    			k=i;
    			for (j=1+i; j<8; j++) {
    				if (t[j]<min) {
    					min=t[j]; 
    					k =j;
    				};
    			}
    
    			if(k!=i){
    				x=t[i];
    				t[i]=min;
    				t[k]=x;
    			}
    		}

Discussions similaires

  1. Tri d'un tableau en 2D
    Par sniperseb dans le forum C
    Réponses: 4
    Dernier message: 05/01/2006, 16h33
  2. Réponses: 6
    Dernier message: 16/09/2005, 10h30
  3. tri d'un tableau à 2 dimensions
    Par dede92 dans le forum C
    Réponses: 4
    Dernier message: 19/02/2005, 18h29
  4. [langage] Probleme de tri d'un tableau de tableau
    Par Ludo167 dans le forum Langage
    Réponses: 1
    Dernier message: 25/08/2004, 10h32
  5. [] Tri d'un tableau par ordre alphabétique
    Par cafeine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/09/2002, 08h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo