begin process at 2012 05 30 14:20:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Base de données

 > 

Autre

 > 

programme ne marcge pas correctement


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

programme ne marcge pas correctement

lundi 26 avril 2010 à 02:57:24 | programme ne marcge pas correctement

hedi2tun

salut à tous!
je réalise un programme en c qui cherche des mots palindromes comme non laval .... j'ai réussi a trouver tous ces palindromes mes parcontre je n'arrive pas à déterminer leurs positions (nombre de lignes )...
alors je vous prie de m'aider !!!
le code de mon programme et le suivant :
Code C/C++ :
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<conio.h>
#include<string.h>

/*  element */

typedef struct element
{ char   palindrome[20];
  int    ligne[500];
  int     nombre;
  struct element *suivant;
}elem;


    /*  liste   */
    
    typedef struct liste
    { int nbre;
      elem *premier ; 
    }liste;
     
     /* initialisation  */
     
    liste init_liste(liste l)
    {  int i;
          liste *L;
          elem  *p;
       L=(liste*) malloc(sizeof(liste));
       if(L )
       {  p=(elem*) malloc(sizeof(elem));
            if(p)
            {
             p->suivant=NULL;
             for(i=0;i<500;i++)
             {p->ligne[i]=0;}
             p->nombre=0;
             strcpy(p->palindrome," ");
             l.premier=p;
             l.nbre=0;
             }
             else
             {
             fprintf (stderr, "Memoire insufisante\n");
             exit (EXIT_FAILURE);
              }
              }
              else
               {
                fprintf (stderr, "Memoire insufisante\n");
                 exit (EXIT_FAILURE);
                  }
  
                   return(l);
    }
    
  liste   ajout_elem(liste l,char  t[20], int  li)
  
  {    elem *p,*r,*q;
      int i;
      q=(elem*) malloc(sizeof(elem));
      p=(elem*) malloc(sizeof(elem));
       r=(elem*) malloc(sizeof(elem));
          for(i=0;i<500;i++)
             {p->ligne[i]=0;}
             p->nombre=0;
             p->suivant=NULL;
             strcpy(p->palindrome," ");
             for(i=0;i<500;i++)
             {r->ligne[i]=0;}
             r->nombre=0;
             r->suivant=NULL;
             strcpy(r->palindrome," ");
              for(i=0;i<500;i++)
             {q->ligne[i]=0;}
             q->nombre=0;
             q->suivant=NULL;
             strcpy(q->palindrome," ");
             
             
    if(p==NULL)
       {printf("\n pas assez de memoire");
        return(l);
        }
        else
        {    if (l.nbre==0)
             { strcpy(p->palindrome,t);
                      
              p->ligne[li]=1;
              p->nombre=1;
              p->suivant=NULL;
              l.premier=p;
              l.nbre++;
               return(l);
               }
             
               else{ 
                    p=l.premier;
                    
               while(p!=NULL){
               if((strcmp(p->palindrome,t))==0 )
               { p->nombre++;
               p->ligne[li]++;
               return(l);
                                   
               }
               r=p;
               p=p->suivant;
    
     }
                         
       if(p==NULL)
       {
       strcpy(q->palindrome,t);                                 
       q->ligne[li]=1;
       q->nombre=1;
       q->suivant=NULL;
       r->suivant=q;
                            
       l.nbre++;
       return(l);
       }
       }
                           
       }
       }
       void affiche_liste(liste l)
       {  elem *p,*q;
       int i,k;
       k=0;
       if(l.nbre==0)
       {printf(" \n liste vide");
       return ;
       }
       else
       {  
       p=l.premier;
       printf("\n les palindromes present dans ce fichier sont");
       while(p!=NULL)
       {printf("\n\t\t\t\t   %s  ",p->palindrome);
       p=p->suivant;}
       printf("\n il sont en nombre de %d ",l.nbre); 
       p=l.premier;
       while(p!=NULL)
       {printf("\n\nle palindrome %s est present %d fois",p->palindrome,p->nombre);
                        
       for(i=0;i<500;i++)
       { if(p->ligne[i]!=0)
       {
       printf("\n %d fois dans la ligne %d   ", p->ligne[i],i);
       k=k+p->ligne[i];}
       }
       p=p->suivant;
       }
       }
       printf("\n le nombre d'occurence total se tous les palindromes est %d",k);
       }

int isPalindrom(char str[])
{
  int l = 0;
  int r = strlen(str)-1;

if(r<=1)
{return 0;}
else{
  while (l<r)
    {
      if (str[l] != str[r])
        return 0;
      l++;
      r--;
    }

  return 1;
}
}


/* nombre de lignes totales*/

int nb_lignes_totales(FILE *p)
{
  int n=0, c;

  while ((c = fgetc(p)) != EOF)
  {
    if (c == '\n')
    {
      n++;
    }
  }
  return n;
}

int  main()
       {
        char nom_fichier[50],T[20],tab[20];
        int n=1, c;
        liste l;
        int i,j,k,li;
        FILE *p;
         l=init_liste(l);
            printf("\n donner le nom de fichier à tester  ");
            scanf("%s",& nom_fichier);  
           l=init_liste(l);
          
            p= fopen(nom_fichier,"r");
               
            if (p == NULL)
              {printf("\n le fichier ne peut pas etre lu: ");
               exit(-1);}
            else    
             { k=nb_lignes_totales(p);
              if(k==0)
              {printf("\n le fiçchier est vide ");}
              else
              {printf("\n le fichier contient %d lignes", k+1);
              }
              }
             fclose(p);
             
              p= fopen(nom_fichier,"r");
              
              while(!feof(p))
               {
               fscanf (p,"%s", &T);
  
               c = (fgetc(p));
                
                if (c == '\n')
                 {
                 n++;
                 }
                 
                if (isPalindrom(T))
                { strcpy(tab,T);
                 l=ajout_elem(l,T, n);
                 
                 }
                }
                 
                 fclose(p);
                 
                 affiche_liste(l);
                 getch();
                 return 1 ;
                 }  

merci de m'indiquer mes erreurs !


Cette discussion est classée dans : nombre, int, liste, elem, if


Répondre à ce message

Sujets en rapport avec ce message

classes imbriquées accès aux infos [ par simo035 ] Bonsoir tous le monde ! Problème de débutant, merci pour vôtre aide. J'ai une classe Liste avec deux classe imbriquées Element et Place. Disons par e probleme avec la fonction glreadpixels [ par sousoi ] je trouve que on peut implimenter l'algo de z buffer avec opengl et recuperer les donnee avec la fonction de opengl "glreadpixels" mais je trouve un interpreteur sql [ par cobutanisme154 ] bonjours tout le monde, j'ai cherché sur ce site et sur google ,mais je n'arrive pas à trouver un interpréteur sql écrit en c.Quand je dis un interpré ajout d'un element à la fin d'une liste chainée [ par beatkof ] bonsoir je voudrai faire une fonction qui ajout un element à la fion d'une liste chainée et je n'y arrive pas voila ma fonction: #include #include s classe matrice [ par monphp ] slt tt le monde, je suis entrain de réaliser un projet concernant le polymorphisme des matrices et des vecteurs. jé realisé alors une matricecaree qui erreur c [ par maha1987 ] Bonjour tout le monde, j'ai ce programme C qui prend des caractères et doit afficher si la chaîne constituée par ces caractères est valide(constituée FONCTION SUR C++ [ par debutanteencplusplus ] SALUT !!! je veux faire une fonction qui teste si un nombre n est ondulant . voila ce que j'ai fait ,mais ça marche pas [color=gray]int est_ondulant Le multithreading et variable générales [ par vbfrance102 ] salut si qlq'un peut m'aider je suis débutant en c et j'essaye de faire une petit jeu qui a 1 threads sous forme de boucle infinie et je veux qu'il m lecture d'un fichier, vitesse d'execution [ par vercd7am ] Bonjour, voulant lire un gros fichier, il y a une question que je me pose pour ne pas faire ramer mon ordinateur et avoir la reponse la plus rapide p Problème générateur de grille de sudoku en C [ par Dovah ] Bonjour, je suis débutant en programmation, et pour m'entraîner j'ai décidé de créer un programme qui génère aléatoirement une grille de sudoku en C


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,184 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales