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 de caractères


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de chicabonux
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    329
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Mai 2007
    Messages : 329
    Par défaut tri de caractères
    Bonjour,

    Ce programme effectue le tri de caractères saisis par l'utilisateur
    La saisie des caractères renvoie une erreur de Microsoft . Je ne comprends pas pourquoi ?

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    #include<stdio.h>
    #include<string.h>
     
    int main()
    {
    	int I,J,K,N,CMP;
    	char T[100],X;
     
    	/*saisie du nombre de caractères à trier*/
    	printf("combien y a-t-il de caracteres a trier ? :");
    	scanf("%d",&N);
     
    	/*saisie des caractères*/
    	printf("entrez les caracteres\n");
    	for(I=0;I<N;I++)
    	{
    		printf("T[%d]=",I);
    		scanf("%d",&T[I]);
    	}
     
    	/*boucle de tri*/
    	for(I=0;I<N-1;I++)
    	{
    		X=T[I];
    		K=I;
     
    		for(J=I+1;J<N;J++)
    		{
    			CMP=strcmp(X,T[J]);
    			if(CMP>0)//si X est plus grand que T[J] alors CMP>0
    			{
    				X=T[J];
    				K=J;
    			}
    		}
    		if(K!=i)
    		{
    			T[K]=T[I];
    			T[I]=X;
    		}
    	}
     
    	/*affichage du résultat*/
    	printf("\nle tri donne : \n");
     
    	for(I=0;I<N;I++)printf("T[%d]=%c\n",I,T[I]);
     
    	return 0;
    }
    Je pense que c'est cette partie qui est incriminée mais je ne vois pas pourquoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /*saisie du nombre de caractères à trier*/
    	printf("combien y a-t-il de caracteres a trier ? :");
    	scanf("%d",&N);
     
    	/*saisie des caractères*/
    	printf("entrez les caracteres\n");
    	for(I=0;I<N;I++)
    	{
    		printf("T[%d]=\n",I);
    		scanf("%c",&T[I]);
    	}

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Vao,

    Déjà, ça ne doit pas compiler : tu utilises I et i, qui pour le C ne sont pas la même chose.

    Ensuite, pourquoi faire une entrée caractère par caractère plutôt que simplement lire une chaîne ?

    Et habituel : main() n'est pas une forme valide de cette fonction.

  3. #3
    Membre éclairé Avatar de chicabonux
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    329
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Mai 2007
    Messages : 329
    Par défaut
    Dans mon programme j'ai bien mis I dans les T[] mais il semble que quand je colle dans le forum ça change automatiquement le I en i ?

    Ensuite dans la compilation ça me met T[o]=T[1]= et ça me met le rapport d'erreur quand je tape entrée ?

  4. #4
    Membre émérite
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Par défaut
    strcmp ça sert à comparer des chaines de caractères (tableau de char à zero terminal) pas des charactères individuels (char)

  5. #5
    Membre éclairé Avatar de chicabonux
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    329
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Mai 2007
    Messages : 329
    Par défaut
    En fait le problème a l'air de venir de la saisie des données
    Voilà ce que la compilation me donne :

    Ce n'est pas normal que ça m'affiche T[o]=T[1]?
    Fichiers attachés Fichiers attachés

  6. #6
    Membre éclairé Avatar de chicabonux
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    329
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Mai 2007
    Messages : 329
    Par défaut
    En fait je dois réécrire le programme suivant en l'adaptant pour des chaînes de caractères (le programme pour les nombres fonctionne convenablement)

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    #include<stdio.h>
    #include<string.h>
     
    main()
    {
    	int i,j,k,n;
    	float t[100],x;
     
    	printf("combien y a-t-il de nombres a trier ? : ");
    	scanf("%d",&n);
     
    	printf("entrer les nombres :\n");
    	for(i=0;i<n;i++)
    	{
    		printf("t[%d]=",i);
    		scanf("%f",&t[i]);
    	}
     
    	for(i=0;i<n;i++)
    	{
    		x=t[i];
    		k=i;
    		for(j=i+1;j<n;j++)
    			if(x>t[j])
    			{
    				x=t[j];
    				k=j;
    			}
    			if(k!=i)
    			{
    				t[k]=t[i];
    				t[i]=x;
    			}
    	}
     
    	for(i=0;i<n;i++)printf("t[%d]=%f\n",i,t[i]);
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ordre tri sur caractère tchèque
    Par shadeoner dans le forum Oracle
    Réponses: 1
    Dernier message: 29/11/2007, 19h53
  2. Tri chaine caractère et insertion
    Par Maillon dans le forum Linux
    Réponses: 1
    Dernier message: 16/11/2007, 12h41
  3. [hibernate] tri sur caractères spéciaux
    Par Fr@ncky dans le forum Hibernate
    Réponses: 4
    Dernier message: 11/09/2007, 16h50
  4. [SQL2K]URGENT: récupérer jeu de caractères et ordre de tri ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 26/04/2005, 11h43
  5. [ORDER BY]tri sur le dernier caractère d'un champ
    Par Tan dans le forum Langage SQL
    Réponses: 3
    Dernier message: 03/05/2004, 14h39

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