Mon programme ne veut pas fonctionner

zinebe96 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour, voila le programme qui:
1/renvie la longueur du plus long mot d'une phrase donnée.
2/renvoie les mots composant une phrase dans un tableau de pointeurs sur char réservant dynamiquement l'emplacement en mémoire pour les chaînes et qui revoie le nombre de ces mots.
3/inverse l'ordre des mots en modifiant les pointeurs du tableau.
4/affiche le tableau de chaines de caractères.
5/trie le tableau des chaines par ordre croissant.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define max 50
int plu_long(char *S)
{
    int i=0;
    int k;
    int m=0;
    int nmots=0;
    while(*(S+i)!='\0' && (ispunct(*(S+i))==1||isspace(*(S+i))==1))
    i++;
    while(*(S+i)!='\0')
    {
       k=0;
       while(*(S+i)!='\0' && ispunct(*(S+i))==0 && isspace(*(S+i))==0)
       {
           i++;
           k++;
       } nmots++;
       if(k>m)
        m=k;
       while(*(S+i)!='\0' && (ispunct(*(S+i))==1||isspace(*(S+i))==1))
        i++;
    }
    printf("\nle nombre de mots est %d\n",nmots);
    return m;
}
int repart (char* vect_phrase[],char* phrase)
{
    char *S,*p;
    S=phrase; p=NULL;
    int k,nmots,i;
    nmots=0;
      while((*S)!='\0' && (ispunct(*S)==1 || isspace(*S)==1))
    {S++;}
    while(*S!='\0')
    {
       k=0;
       p=S;
       while(*S!='\0' && ispunct(*S)==0 && isspace(*S)==0)
       {
           S++;
           k++;
       } nmots++;
       vect_phrase[i]=(char*)malloc(k+1);
       if(vect_phrase[i]==NULL)
       {
           printf("\nespace insuffisant\n");
           exit(1);
       }
       strncpy(vect_phrase[i],p,k);
       i++;
       vect_phrase[i][k]='\0';
       while(*S!='\0' && (ispunct(*S)==1 || isspace(*S)==1))
       {S++;}
    }
    for (i=0;i<nmots;i++)
    {
        printf("\n%s\n",vect_phrase[i]);
    }
    return nmots;
    }
    void inverse(char*T[],int n)
    {
        int i,j ;
        char* d ;
        j=n-1;
        for(i=0 ;i<n; i++)

        {

           while(i<j) {
            d=*(T+i);


*(T+i)=*(T+j);

*(T+j)=d;
            j--;
            }
        }
    }
    char* saisie()
    {
        char *s;
        s=(char*)malloc(80*sizeof(char));
        printf("\ndonnez une phrase\n");
        gets(s);
        return s;
    }
    void affiche(char*T[],int n)
    {
        int i;
        i=0;
        for(i=0;i<n;i++)
        {
            printf("\tmot%d:",i+1);
            puts(*(T+i));
        }
    }
    void tri(char*T[],int n)
    {
        int i,j;
        char *d;
        for(i=1;i<n;i++)
        {
            j=i;
        while(j>0 && strcmp(T[j-1],T[j])>0)
        {
            d=T[j];
            T[j]=T[j-1];
            T[j-1]=d;
            j--;
        }
        }
    }
int main()
{   int choix,x;
    char *phrase, *vect_phras[max]; int N,M;
  do
  {
  do
  {
  phrase=saisie();
  printf("\n\tla phrase saisie est:\n");
  puts(phrase);
  printf("\n tappez:\n1 pour afficher la longueur du plus long mot\n2 pour afficher le nombre de mots\n3 pour inverser le tableau et l'afficher \n4 pour afficher le tableau\n5 pour tier le tableau etl'afficher\n\n");
  scanf("%d",&choix);
  switch(choix)
  {
  case 1:
       M=plu_long(phrase);
       printf("\nla longueur de plus long mot est:%d\n",M);

  break;
  case 2:
      N=repart(vect_phras,phrase);
      printf("\nle nombre de mots est: %d\n",N);
  break;
  case 3:
      inverse(vect_phras,N);
      affiche(vect_phras,N);
  break;
  case 4:
       printf("\n\tle tableau de mots:\n");
  affiche(vect_phras,N);
  break;
  case 5:
       tri(vect_phras,N);
  printf("\n\ttri du tableau de mots\n");
  affiche(vect_phras,N);
  break;
  default:
      printf("\nchoix non conforme\n");
  break;

  }
  }while(choix!=1 && choix!=2 && choix!=3 && choix!=4 && choix!=5);
  printf("\n tappez:\n1 pour continuer\n2 pour quitter\n");
  scanf("%d",&x);
  }while(x!=2);

    return 0;
}


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

1 réponse

NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
"Mon programme ne veut pas fonctionner"
Et avec plus d'information ?
0
zinebe96 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
??
0
NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
en quoi ton programme ne fonctionne pas ?
0
zinebe96 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
quand je compile on m'affiche que le programme a cesser de fonctionner et il y' en a aucune erreur
0
NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
As-tu essayé en pas à pas ?
0