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 :

Exos de C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Je ne vois pas ou est le problème ?
    Le C considère qu'un test

    est juste si a != 0 et faux si a == 0... Regarde ta fonction voyelle et dis moi que tu vois le problème...


    Pour ton exercice sur les tas, ta lecture est bonne par contre pour l'écriture:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
          while(h != NULL)
    Qui a dit que h serait null si le tas était vide?

    On te dit que les fonctions rendent 0 s'ils ont marché et un code d'erreur sinon donc c'est
    removeSmallestFromHeap(h,res) qu'il faudrait tester mais tu ne connais pas les codes d'erreurs donc le code "la pile est vide" ne peut pas être utilisé. Il faut se résoudre de compter les éléments que tu mets dans ton tas pour savoir combien il faut en sortir...

  2. #2
    Inactif
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 72
    Par défaut
    J'ai rajouté un compteur d'éléments

    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
    int triFlots(FILE *flotLecture, FILE *flotEcriture, 
    	     int (*cmp)(const char *s1, const char *s2))
    {
      char ligne[256];
      char *mot;
      Heap *h;
      char *res;
      int nbElts = 0;
     
      if(flotLecture != NULL)
        {
          if(newHeap(&h,cmp))
    	{
    	  fprintf(stderr,"erreur\n");
    	  return 1;
    	}
     
          while(fgets(ligne, sizeof ligne, flotLecture) != NULL)
    	{
    	  if(addToHeap(h,ligne))
    	    {
    	      fprintf(stderr,"erreur\n");
    	      return 1;
    	    }
    	  nbElts++;
    	}
     
          while(nbElts != 0)
    	{
    	  if(removeSmallestFromHeap(h,res))
    	    {
    	      fprintf(stderr,"erreur\n");
    	      return 1;
    	    }
     
    	  fprintf(flotEcriture,"%s",res);
     
    	  nbElts--;
    	}
          freeHeap(&h);
        }
      return 0;
    }

  3. #3
    Inactif
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 72
    Par défaut
    Exercice 5
    Ecrire un programme dans lequel vous utilisez triFlots pour trier l'entrée standart par l'ordre “voyelles-consonnes”, en mettant le résultat sur la sortie standart.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int Tris(FILE *flotLecture, FILE *flotEcriture, 
    	 int (*cmp)(const char *s1, const char *s2))
    {
      return  triFlots(stdin, stdout, 
    		   int (*cmp)(const char *s1, const char *s2)VoyellesConsonnes);
    }


    Exercice 6
    On va maitenant trier un tableau de chaines de caractères .
    Ecrire une fonction

    int triTab(char **tab, int (*cmp)(const char *s1, const char *s2))

    ou tab désigne le premier élément d'une suite de chaines de caratères qu'il fau trier ,la suite se terminant par NULL ,et cmp permet de spécifier la relation d'ordre à utiliser pour le tri.Au sortir de la fonction , la suite désignée par tab sera triée par l'ordre spécifié. Encore, une fois ,vous n'avez pas le droit de réaliser le tri à proprement parler vous-meme,vous devez passer par un tas. La fonction retourne 0 si tout se passe bien un code d'erreur sinon. N'oubliez pas de libérer toutes les ressources intemédiaires quand vous n'en avez plus besoin.

    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
    int triTab(char **tab, int (*cmp)(const char *s1, const char *s2)) 
    {
      Heap h;
      char **p;
      int nbElts = 0;
     
      if(newHeap(&h,cmp))
        {
          fprintf(stderr,"erreur\n");
          return 1;
        }
     
      for(p=tab; p!=NULL; p++)
        {
          if(addToHeap(h,*p))
    	{
    	  fprintf(stderr,"erreur\n");
    	  return 1;
    	}
          nbElts++;
        }
     
      while(nbElts != 0)
        {
          if(removeSmallestFromHeap(h,res))
    	{
    	  fprintf(stderr,"erreur\n");
    	  return 1;
    	}
          nbElts--;
        }
     
      freeHeap(&h);
     
      return 0;
    }

  4. #4
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    C'était noël alors j'ai répondu aux questions, corrigés les erreurs et je vais le faire une dernière fois...

    Ton code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int Tris(FILE *flotLecture, FILE *flotEcriture,
        int (*cmp)(const char *s1, const char *s2))
    {
      return  triFlots(stdin, stdout,
             int (*cmp)(const char *s1, const char *s2)VoyellesConsonnes);
    }
    n'a aucun sens:

    - Ta fonction définit trois paramètres que tu n'utilise pas... flotLecture et flotEcriture sont là pour faire quelque chose?
    - Est-ce que cette ligne te semble logique?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int (*cmp)(const char *s1, const char *s2)VoyellesConsonnes);
    Et ton exercice 6:
    la suite désignée par tab sera triée par l'ordre spécifié
    As-tu vraiment l'impression de trié ton tableau tab??

    Et ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
          if(removeSmallestFromHeap(h,res))
    res n'est même pas défini...

    Jc

Discussions similaires

  1. Besoin d'aide concernant 1 exo
    Par Shakan972 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 29/11/2005, 11h31
  2. [debutant]Avis sur exo Simple.
    Par granquet dans le forum C
    Réponses: 9
    Dernier message: 27/11/2005, 19h49
  3. des exos sur les boocles
    Par zeyd dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 27/11/2005, 18h03
  4. exo base de donnée avec SQL
    Par chti_juanito dans le forum Langage SQL
    Réponses: 3
    Dernier message: 24/11/2005, 16h02

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