Comment trier des chaines de caractère dans un tableau ?

Comment trier des chaines de caractère dans un tableau ? - C - Programmation

Marsh Posté le 24-04-2008 à 13:13:04    

Slt, je suis un débutant en programmation et mon prof me dit d'écrire un programme qui permet de trier une liste de chaine de caractère inserée dans un tableau.Voici un peu ce que j'ai fait mais le compilateur m'indique des erreurs lvalue required.
 
 #include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<stdlib.h>
#include<string.h>
struct etudiant{
    char nom[20];
    char prenom[30];
    int  numero;
 } *ref;
 
void main()
{ clrscr();
  int n,i;
  char *tamp,*tamp1;
  int tamp2,r;
  printf("\n Saisir le nombre des ‚tudiants:" );
  scanf("%d",&n);
 // TYPEDEF struct etudiant etu;
  ref=(struct etudiant *)calloc(n,sizeof(struct etudiant));
  if(ref!=NULL)
   {
    for(i=0;i<n;i++)
   { printf("\n\tSaisie de l'‚tudiant %d",i+1);
     printf("\n NOM:" );
     scanf("%s",&ref[i].nom);
     printf("\n PRENOM:" );
     scanf("%s",&ref[i].prenom);
     printf("\n NUMERO:" );
     scanf("%d",&ref[i].numero);
   }
   for(i=0;i<n;i++)
    { r=strncmp(ref[i].nom,ref[i+1].nom,2);
      if(r>0)
 { tamp=ref[i+1].nom;
   ref[i+1].nom=ref[i].nom;
   ref[i].nom=tamp;
   tamp1=ref[i+1].prenom;
   ref[i+1].prenom=ref[i].prenom;
   ref[i].nom=tamp1;
   tamp2=ref[i+1].numero;
   ref[i+1].numero=ref[i].numero;
   ref[i].numero=tamp2;
 }
   for(i=0;i<n;i++)
    { clrscr();
     printf("\n\n\n\n\n\t\t Etudiant %d",i+1);
     printf("\n %s",ref[i].nom);
     printf("\n %s",ref[i].prenom);
     printf("\n %d",ref[i].numero);
    }
   }
   else
    { printf("\n PAS ASSEZ DE PLACE" ); }
    free(ref);
   getch();
  }

Reply

Marsh Posté le 24-04-2008 à 13:13:04   

Reply

Marsh Posté le 24-04-2008 à 14:51:24    

Fais un effort si tu veux qu'on t'aide.
- Utilise les balises [cpp]
- Indique le message complet du compilo car il doit indiquer le nuéémro de ligne.

Reply

Marsh Posté le 24-04-2008 à 18:40:22    

Ces lignes sont fausses

Code :
  1. ref[i+1].nom=ref[i].nom;
  2.    ref[i].nom=tamp;


 

Code :
  1. ref[i+1].prenom=ref[i].prenom;
  2.    ref[i].nom=tamp1;


 

Code :
  1. ref[i+1].numero=ref[i].numero;
  2.    ref[i].numero=tamp2;


Il faut utiliser strcpy


Message édité par Trap D le 24-04-2008 à 18:40:45
Reply

Marsh Posté le 24-04-2008 à 19:56:03    

Merci pour votre aide .le programme marche avec strcpy.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed