begin process at 2012 02 12 08:48:26
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > ARBRE QUELCONQUE

ARBRE QUELCONQUE


 Information sur la source

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Application Classé sous :arbre Niveau :Débutant Date de création :03/03/2006 Date de mise à jour :08/03/2006 08:14:38 Vu :4 567

Auteur : Haykel2006

Ecrire un message privé
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Bien tout simplement ce code permet la création d'un arbre qulconque avec un nombre maximum de 3fils. Ensuite il calcule la somme des tous les noeuds

Source

  • /*************************************Arbre Binaire**********************************************/
  • #include<stdio.h>
  • #include<conio.h>
  • #include<malloc.h>
  • struct noeud
  • { int val ;
  • noeud *fg ;
  • noeud *fd ;
  • } ;
  • typedef noeud* arbre ;
  • //***********************************************************
  • arbre inserer ( arbre T , int e )
  • { noeud *P ;
  • if ( T == NULL )
  • { P = (noeud*) malloc (sizeof(noeud)) ;
  • P->val = e ;
  • P->fg = NULL ;
  • P->fd = NULL ;
  • T = P ;
  • }
  • else
  • { if (T->val < e)
  • T->fd = inserer (T->fd , e) ;
  • else
  • T->fg = inserer (T->fg , e) ;
  • }
  • return(T) ;
  • }
  • //************************************************************
  • void affiche ( arbre T )
  • { if (T!= NULL)
  • { affiche(T->fg) ;
  • printf(" %d",T->val) ;
  • affiche(T->fd) ;
  • }
  • }
  • //*************************************************************
  • arbre creation()
  • {
  • arbre A=NULL;int Num;
  • printf(" Donner les numeros <Taper 0 pour terminer> : \n" ) ;
  • printf(" * Le 1ere numero: " ) ;
  • scanf("%d",&Num) ;
  • while ( Num != 0 )
  • { A = inserer(A,Num) ;
  • printf(" * element suivant : " ) ;
  • scanf("%d",&Num) ;
  • }
  • return A;
  • }
  • //*************************************************************
  • int somme(arbre A)
  • {int s=0;
  • if(A!=0)
  • {
  • s=A->val+somme(A->fd)+somme(A->fg);//appel recursive
  • }
  • return s;
  • }
  • void liberer(arbre T)
  • { noeud *G , *D ;
  • if (T!=NULL)
  • { G = T->fg ;
  • D = T->fd ;
  • free (T) ;
  • liberer(G) ;
  • liberer(D) ;
  • }
  • }
  • //*****************************************************************
  • void main()
  • { arbre A=NULL ;
  • int Num , s,choix ;
  • A=creation();
  • do
  • { printf("\n\n ****************************************************************** " ) ;
  • printf("\n 0 = Quitter " ) ;
  • printf("\n 1 = Ajouter " ) ;
  • printf("\n 2 = Afficher " ) ;
  • printf("\n 3 = Somme des Noeuds ");
  • printf("\n Donner votre choix : " ) ;
  • scanf("%d",&choix) ;
  • switch (choix)
  • {
  • case 0 :
  • printf("\n \t***...END...*** " ) ;
  • break ;
  • case 1 :
  • printf("\n Donner l'entier à ajouter : " ) ;
  • scanf("%d",&Num) ;
  • A = inserer(A,Num) ;
  • printf(" L'entier a été ajouter. " ) ;
  • break ;
  • case 2 :
  • printf("\n L'arbre est : " ) ;
  • affiche(A) ;
  • break ;
  • case 3:
  • {s=somme(A);printf("somme =%d",s);
  • break;
  • }
  • default :
  • printf("\n Le choix est incorrecte. " ) ;
  • break ;
  • }
  • }
  • while ( choix != 0 ) ;
  • liberer(A) ;
  • getch();
  • }
/*************************************Arbre Binaire**********************************************/

#include<stdio.h>
#include<conio.h>
#include<malloc.h>

struct noeud
{  int val ;
   noeud *fg ;
   noeud *fd ;
} ;
typedef noeud* arbre ;
//***********************************************************
arbre inserer ( arbre T , int e )
{  noeud *P ;
   if ( T == NULL )
   { P = (noeud*) malloc (sizeof(noeud)) ;
     P->val = e ;
     P->fg = NULL ;
     P->fd = NULL ;
     T = P ;
   }
   else
   { if (T->val < e)
	   T->fd = inserer (T->fd , e) ;
     else
	   T->fg = inserer (T->fg , e) ;
   }
   return(T) ;
}
//************************************************************
void affiche ( arbre T )
{ if (T!= NULL)
  {  affiche(T->fg) ;
     printf("  %d",T->val) ;
     affiche(T->fd) ;
  }
}
//*************************************************************
arbre creation()
{
	arbre A=NULL;int Num;
	printf(" Donner les numeros <Taper 0 pour terminer> : \n" ) ;
	printf(" * Le 1ere numero: " ) ;
	scanf("%d",&Num) ;
  while ( Num != 0 )
  { A = inserer(A,Num) ;
    printf(" * element suivant : " ) ;
    scanf("%d",&Num) ;

  }
  return A;
}
//*************************************************************
int somme(arbre A)
{int s=0;
if(A!=0)
{
s=A->val+somme(A->fd)+somme(A->fg);//appel recursive 
}
return s;
}


void liberer(arbre T)
{  noeud *G , *D ;
   if (T!=NULL)
   { G = T->fg ;
     D = T->fd ;
     free (T) ;
     liberer(G) ;
     liberer(D) ;
   }
}

//*****************************************************************
void main()
{ arbre A=NULL ;
  int Num  , s,choix ;
  A=creation();
  do
  { printf("\n\n ****************************************************************** " ) ;
    printf("\n 0 = Quitter " ) ;
	 printf("\n 1 = Ajouter " ) ;
	 printf("\n 2 = Afficher " ) ;
         printf("\n 3 = Somme des Noeuds ");
    
    printf("\n Donner votre choix : " ) ;
    scanf("%d",&choix) ;
    switch (choix)
    {
       case 0 :  
                 printf("\n \t***...END...*** " ) ;
		    break ;

       case 1 : 
                 printf("\n Donner l'entier à ajouter : " ) ;
		           scanf("%d",&Num) ;
                 
                  A = inserer(A,Num) ;
				         printf(" L'entier a été ajouter. " ) ;
                  
			 break ;

	    case 2 :  
                 printf("\n    L'arbre est : " ) ;
		           affiche(A) ;
          break ;
              case 3: 
                     {s=somme(A);printf("somme =%d",s);
break;

}
      
       default : 
                 printf("\n  Le choix est incorrecte. " ) ;
		    break ;
    }
  }
  while ( choix != 0 ) ;

  liberer(A) ;
  getch();
}



 Historique

08 mars 2006 08:14:38 :
j'ai corrigé la fonction somme qui doit retourner un int

 Sources de la même categorie

Source avec Zip Source avec une capture CONTACTS MANAGER par eapaceinfo
Source avec Zip Source avec une capture CONTACTES BOOK par mature
Source avec Zip Source avec une capture [C++/QT] SLIDEALWAYS, RÉALISEZ DES SLIDES POUR VOTRE SITE AV... par doderic
Source avec Zip Source avec une capture MAILLAGE 3D (VTK + QT) par ammoun007
Source avec Zip Source avec une capture CONVHTML : UN UTILITAIRE DE CONVERSION POUR FICHIERS HTML par pgl10

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture SYSTÈME D'ANNULER-REFAIRE PAR ARBRE (TURS) par macsou01
Source avec Zip CODEUR DE HUFFMAN par webis
CALCULETTE (PEUT ÊTRE GRAPHIQUE UN JOURS ^^) par flamt
Source avec Zip Source avec une capture ARBRE AABB par JeanMilost
Source avec Zip Source avec une capture DESSIN D'ARBRES par JCDjcd

Commentaires et avis

Commentaire de AlexMAN le 03/03/2006 16:27:15

//*************************************************************
void somme(Arbre A)
{int s=0;
if(A!=0)
{
s=A->val+somme(A->fd)+somme(A->fg);//appel recursive
}
printf("somme des noeud = %d", s);
}

Ta fonction somme ne renvoie rien (void somme(..)), ce n'est pas possible qu'elle fonctionne la !

int somme(Arbre A)
{
int s = 0;

if(A != 0) {
s = A->val + somme(A->fd) + somme(A->fg);
}

return s;
}

Je crois que tu n'as mm pas pris la peine de compiler ta source (cf void somme(Arbre A) a la place de arbre A).

Commentaire de luhtor le 03/03/2006 16:55:02

C'est normal que sa fonction ne renvoie rien, puisqu'elle affiche le résultat. Mais de tout facon, une fonction qui affiche quelque chose est a bannir totalement et faut bien sur préférer la deuxième version proposée par Alexman.

Commentaire de ncoder le 03/03/2006 19:22:22

LUHTOR ==> Pourquoi une fonction qui affiche quelque chose est a bannir totalment ?

AlexMAN ==> Où est le pb que ça fonction ne renvoie rien ?
Je fais plein de fonctions : void ... (int) !!!
Et yas pas de pb... ?

Thx

Commentaire de AlexMAN le 03/03/2006 19:31:34

void somme(Arbre A)
{int s=0;
if(A!=0)
{
s=A->val+somme(A->fd)+somme(A->fg);//appel recursive
}
printf("somme des noeud = %d", s);
}

Faut bien relire la fonction, Haykel se sert de ce que renvoie la fonction somme, or elle ne renvoie rien, il y a donc bien une couille (pardon :$).

Commentaire de ncoder le 03/03/2006 20:50:29

Ah ok j'avais pas regardé le code juste le commentaire merci

Commentaire de Haykel2006 le 04/03/2006 09:39:58

Merci pour tous vos commantaires, et merci pour les corrections, c'est vraie qu'il y  quelques fautes, mais j'ai laissé une mauvaise copie du code source, (FAUTE DE COPIER COLLER)

Commentaire de nejmd le 22/11/2008 16:04:19

hey est ce que qqun peutm aider a reussir l insertion dans un arbre equilibré

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

créer un arbre à partir d'un fichier word [ par yeager ] Bonjour je suis nouveau et débutant en langage CJe souhaite pouvoir lire un fichier word comportant des informations sur plusieurs livres. A partir de Construction d'un arbre à partir d'une chaine de caractères [ par dahlsimus ] Bonjour, Je souhaite construire un arbre représentant une expression booléenne saisie sous le forme d'une chaîne de caractère (ex: (a+b).C avec + OR e [MFC] Utilisation de la classe CTreeCtrl, niveau dans l'arbre [ par karine3884 ] Bonjour, Je programme sous Visual Studio C++ 6.0. J'utilise un CtreeCtrl pour créer un arbre (une arborescence). J'aimerai ajouter un item au même ni Arbre de Huffman: y'a t-il qq1 pour me corriger?? [ par danje ] Bonjour, Voilà, je viens de faire un arbre de Huffman suivant un tableau de fréquence de répétition de caractère. Mais je crois que mona rbre est faux Problem de 'left operand must be a lvalue" [ par Orezza ] Voila je vous mets le code qui est un code trouver sur ce site mais que j'ai modifié. je ne comprends pas les erreurs de compilations pourriez-vous ra supprimer un mot d'un arbre en C [ par toto000 ] Bonjour, J'ai un arbre ternaire de recherche et je voudrai supprimer un mot dans cet arbre.Voilà ce que j'ai fais mais ça ne marche pas pour tous les Recherce par préfixe [ par toto000 ] Bonjour, J'ai un arbre ternaire de recherche (un dictionnaire) et je voudrai rechercher tous les mots commencants par une certaine expression.Je pense arbre BSP [ par Zyvon ] Je suis en train de coder la gestion d'un niveau avec un arbre bsp et je n'arrive pas à coder une fonctions.Face decoupeface (Face f, const facePrinci arbre bsp [ par Zyvon ] Voila j'ai deja poser ma question sous le graphismemais comme seul Neodante (merci à lui) m'a repondu sans m'aider j'essaye ici...Je suis en train de error LNK2005 que faire ? vite je v me pendre !!!! [ par Milhouse57 ] Voila alors je debute en C++, et je dois faire un projet avec un arbre binaire !! (visual C++ 6.0)Le probleme c que lorsque je build, j'ai toutes les


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 0,764 sec (4)

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