salut !
j'aimerais savoir comment utiliser les pointeurs sous C#, en fait ce que je voudrais faire, c'est de créer un arbre binaire ? est ce que je peux faire la création de cet arbre comme en C ? si oui comment manipuler les pointeurs ?
merci !
salut !
j'aimerais savoir comment utiliser les pointeurs sous C#, en fait ce que je voudrais faire, c'est de créer un arbre binaire ? est ce que je peux faire la création de cet arbre comme en C ? si oui comment manipuler les pointeurs ?
merci !
les pointeurs en C#, notion interessante ma foi
en mode unsafe surement !!!
Mais comme je sens que tu vas me dire que tu ne sais pas ce qu'est le mode unsafe, je te propose dors et déja une réponse ==> Prends un bon bouquin ou un tutoriel et regarde un peu les bases de C#....
Et après, on pourra reparler de pointeur![]()
J'ajouterais en tant que gros consommateur de pointeur en C que en C# tu ne dois pas trop te préocupper de ca.
C# gere tres bien les références aux objets (Trop bien parfois ! : mais c'est en autre débat )
Donc si tu veux faire un arbre binaire je dirais qu'il te suffit de définir une classe feuille contenant elle meme une FeuilleA et FeuilleB sur une classe Feuille et le tour est joué !
Et si tu veux parcourir cet arbre, tu peux utiliser une List<Feuille> (le sujet été débatu il y a qq jours)
salut !
j'ai reussi a utiliser les pointeurs ! j'aimerais savoir maintenant comment faire pour utliser les allocations dynamiques de la memoire ! genre malloc en C ?
Pourquoi vouloir à tout prix utiliser des pointeurs pour gérer un arbre binaire ?
Exercice ?
Contrainte technique ?
Ou bien parce que tu es habitué au C ?
Car on manipule rarement les pointeurs en C# (unsafe). Pour du traitement d'images je peux comprendre, mais pour un arbre binaire.
salut !
ben voila c'est pour une application dans le domaine de traitement d'image !
pour l'arbre j'ai pas beaucoup d'idée pour le faire ! je les avais déjà fait avec C et comme j'ai pas trop d'idées sur la facon de les faire en C# ! alors j'essaye de trouver les correspondances entre C et C#
![]()
Que veux tu faire exactement
Car si c'est pour essayer de faire exactement en C# ce qu tu fais en C, autant le faire en C
Si par contre tu souhaite travailler en C# et et que tu souhaite solutionner un problème il vaut peut etre mieux d'abord expliquer précisément ce que tu veux faire plutot que d'essayer de trouver comment reproduire à la lettre en C# ce que tu peux faire en C
salut !
ce que je veux faire exactement c'est de créer un arbre binaire qui contient des entiers, en commençant par ses feuilles ! voila ! en C#
oui je sais ! mais la construction de mon arbre devrait se faire comme ça ! j'ai les feuilles ! je dois les relier jusqu'a atteindre la racine !
Excuse moi mais ce que tu dis ne tiens pas la route !oui je sais ! mais la construction de mon arbre devrait se faire comme ça ! j'ai les feuilles ! je dois les relier jusqu'a atteindre la racine !
Soit ton arbre est constituté et tu veux le parcourir a partir d'une feuille pour atteindre la racine : on ne parle donc pas de construction d'un arbre
Soit ton arbre n'existe pas (j'entends n'a pas de consistance logique) et dans ce cas le lien feuille - racine ne peut etre que totalement aléatoire
Donc avant meme de débatre de pointeur, language etc.. il me semble peut etre plus fondamental de maitriser cette notion d'arbre !!
ben je ne sais pas trop comment te l'expliquer ! ben voila moi j'ai un ensemble d'entiers ! (doivent apparaître dans les feuilles de l'arbre)
maintenant je dois regrouper ces feuilles en suivant une méthode donnée, jusqu'a atteindre la racine ! c'est a la dire la racine n'est pas connu au départ, elle sera calculée !
Exemple :
j'ai l'ensemble des entiers suivant : 1 1 2 4 (doivent apparaître dans les feuilles de mon arbre) c'est la seule chose qui est connu au départ.
maintenant supposons que la méthode dit : si deux éléments sont égaux alors on les regroupe et leurs père sera égal a la somme des deux fils par exemple.
Donc on aura quelque chose :
. . . . . . . 8
. . . . . 4 . . . 4
. . . 2 . . 2
. . 1 . 1
(desole pour les points ! c'est juste pour avoir le schema)
- Donc j'ai regroupé 1 et 1 et leurs pere = 1+1
- ensuite 2 avec 2 et je fais la somme pour avoir le pere
- ainsi de suite jusqu'a atteindre la racine = 8
tu remarques que je ne peux créer la racine "8" si je ne commence pas par traiter les feuilles.
Voila j'espère que c'est plus clair maintenant.
merci pour votre aide.
donc ce que je veux en fait, c'est comment créer l'arbre en C#, pas l'algorithme qui fait les calculs.
Et si tu avais eu
1 1 2 2 4 ?
Que dois tu faire dans ce cas ?
Mais pour repondre a ton exemple, je ferais une classe feuille avec deux reference feuille enfants
Je cree une liste de feuille avec les elements de départ et triée
je parcours la liste du plus petit au plus grand, j'insere des nouvelles feuilles dans la liste le cas echéant en conservant le tri
l'exemple de tout a l'heure c'était juste pour t'expliquer pourquoi je dois commencer ma construction par les feuilles !Et si tu avais eu
1 1 2 2 4 ?
Que dois tu faire dans ce cas ?
pourquoi utilises tu une classe ? j'ai pensé a utiliser une structure feuille qui contient l'élément, un pointeur sur fils gauche et un autre pointeur sur le fils droit, bon au départ pour les feuilles, les deux fils auront "null" je pense que c'est la meme chose non ?Mais pour repondre a ton exemple, je ferais une classe feuille avec deux reference feuille enfants
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 struct feuille { int element; int* fils_gauche; int* fils_droit; }
Tu peux te passer des pointeurs si c'est ça.
En ajoutant éventuellement le noeud parent si cela peut servir.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 class Noeud { private Noeud _filsGauche; private Noeud _filsDroit; private int _element; ... }
Quelqu'un peut il m'expliquer pourquoi il veut à tout prix utiliser les pointeurs ?
j'ai relu tout le fil et je ne comprends rien à son argumentation sur les pointeurs (dans un context C#, j'entends : j'ai la désagreable impression qu'il essaye de plaquer des concepts strictement C en C#).
Il se raccroche à ce qu'il connait je pense. Il n'a probablement pas lu de cours pour apprendre les bases C#, sinon il aurait vu la notion de type référence. Dans le cas présent les pointeurs sont effectivement totalement inutiles.
salut !
Bluedeep même pour les autres aussi ! je tiens a vous dire qu'aucune chose ne tombe comme ça du ciel ! mais toute chose s'apprend ! il est vrai que je suis novice en C# ! mais je pense que tout un chacun peut apprendre en pratiquant ! donc ce n'est pas parce que je ne suis pas professionnel en C# alors je ne fais pas du traitement d'image ou autre ! je suis humain comme vous je pense, je réfléchis, je cherche , j'essaye de comprendre et je finis par apprendre !
PS : une chose que je déteste le plus c'est d'entendre quelqu'un me critiquer ou me répondre a quelque chose sans me convaincre !
Partager