tableau, liste chainée, procédure...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Pierre
Messages : 244
Inscription : ven. 23/janv./2004 20:29
Localisation : 77 (Région parisienne)

tableau, liste chainée, procédure...

Message par Pierre »

1) bon alors comment j'échange des données entre 2 procédures seulement (ou plus si je veut)?
les données: tableaux, listes chainées
parce que j'ai regardé shared, global ok pour les variables mais pour les tableaux, les listes chainées

2) ça existe les listes chainées a 2 dimensions? (je me suis encore jamais servi des listes chainées)

tiens, c'est la 1ére fois que je poste dans une section débutant!
(remarque, je suis débutant quand ça m'arrange!)

merci pour les réponses (et merci de ne pas rigoler pour mes questions)
Image
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

1) les tableau et liste chainée sont alloués dynamiquement donc global
2) non ça n'existe pas

:)
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

...(je me suis encore jamais servi des listes chainées)
Ben tu devrais essayer, parce que c'est super pratique, et on ne peut pas faire plus simple!

Chris :)
Pierre
Messages : 244
Inscription : ven. 23/janv./2004 20:29
Localisation : 77 (Région parisienne)

Message par Pierre »

Merci :P :)

donc je vais me farcir encore des tableaux... ...sinon mon idée:
je lis mon fichier, dès que je suis a la fin d'une ligne je met un caractère spécial et je dirais a mon programme que ce caractère signifie un passage au début de la ligne d'en dessous...
avez vous bien compris mon explication?
bonne ou mauvaise idée?
Image
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Si les lignes dont tu parles sont celles de ton fichier, il suffit d'appeler ReadString(), et chaque ligne est lue l'une après l'autre.

Chris :)
Pierre
Messages : 244
Inscription : ven. 23/janv./2004 20:29
Localisation : 77 (Région parisienne)

Message par Pierre »

je me suis mal exprimé,
j'ai un tableau a 2 dimensions:
tab(y,x)
Y: c'est le numéro de la ligne
X: dans mon prog je stocke tous les caractères de la ligne 1 par 1 dans X
si je veux remplacer ça par des listes chainées, mon idée:
dès que j'arrive a la fin d'une ligne je passe a celle d'en dessous (quand je stocke mes données)(dans le tableau du dessus si j'arrive a la fin de X, je met +1 a Y)
donc si dans les listes chainées c'est pas comme mon tableau a 2 dimensions et ben dès que j'arrive a la fin d'une ligne et ben je met un caractère qui voudra dire que c'est la fin de la ligne,
donc quand je regarde ce que contient ma liste chainée tout est en 1 seule ligne (mes caractères sont séparés) donc quand je regarde ce que contient ma liste chainée, dès que j'arrive a mon caractère qui indique la fin de ligne et ben je sais qu'après c'est la ligne d'en dessous
j'ai toujours du mal a m'expliquer... :mad:
pis pour ceux qui comprennent pas je ferais p'têtre un exemple ce week-end
mais je pense pas que c'est une super bonne idée...
Image
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

Salut Pierre
mais je pense pas que c'est une super bonne idée...
ouais moi non plus :P

et puis il faudrait savoir si tes "lignes" ont toujours le meme nombre de caractères ou pas forcement
en tout cas savoir si toutes les lignes sont de la meme longueur que la 1ere ligne

et j'entrevois un peu (faut décrypter quoi :lol: ) ce que tu veux faire
tu ferais mieux nd'y aller cash avec les pointeurs et les accès mémoire.

genre, en gros :

*MemoireTampon = AllocateMemory( TailleDeMonFichier )
ReadFile( 0, "MonFichier" )
ReadData( *MemoireTampon, TailleDeMonFichier )

et ensuite qqchose comme çà :

MaValeur.b = PeekB( *MemoireTampon + IndexMemoire )

enfin çà se discute, çà dépend de ton truc...
Image
Pierre
Messages : 244
Inscription : ven. 23/janv./2004 20:29
Localisation : 77 (Région parisienne)

Message par Pierre »

bah en fait je vais rêflèchir a ça parce que la y a mon lit qui m'appelle
donc je vais trouver une solution (j'en ferais part demain)
Image
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Ce que tu voudrais, c'est un truc dans ce genre là ?

Code : Tout sélectionner

NewList MaListe.s(); Crée une nouvelle liste

;- On va faire une liste avec 10 elements, chaque éléments contiendra une ligne
For Ligne = 0 To 9 ; On ajoute une ligne
  Chaine.s = "" ; Vide la chaine
  AddElement(MaListe()); Ajoute un element à MaListe()
  
  ;- Toute cette partie ne sert qu'à construire des chaines.
  ;- elle est inutile dans le cas ou tu lis les lignes
  r = Random(20)+1
  For i = 0 To r ;i représente "un certain nombre" de caractère par ligne
    C = Random(25)+65 
    MonCaractere.s = Chr(C)
    Chaine.s + MonCaractere+"," ;Ajoute le caractère à la chaine
  Next
  Chaine = Left(Chaine,Len(Chaine)-1); vire la virgule à la fin
  ;-
  
  MaListe() = Chaine; Attribue la valeur de chaine à l'élément
  
Next ; et rebelote, jusqu'à la fin

;- Controle
i = 1
ForEach MaListe()
  Debug "Chaine "+Str(i)+" = "+ MaListe()
  i + 1
Next
Bon, là, je crée les chaines. mais j'aurais aussi pu aller les chercher dans un fichier, ou dans des datas.

Je sais pas trop si j'ai bien compris. :?

Chris :)
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

ou un truc dans ce genre :

Code : Tout sélectionner

Structure blabla
  Line.l
  Content.s
EndStructure

NewList List.blabla()

OpenFile(0, "blablabla.txt")
Repeat
  AddElement(List())
  t + 1
  List()\Line = t
  List()\Content = ReadString()
Until Eof(0)

ForEach List()
  Debug "Ligne " + Str(List()\Line) + " : " + List()\Content
Next
Pierre
Messages : 244
Inscription : ven. 23/janv./2004 20:29
Localisation : 77 (Région parisienne)

Message par Pierre »

Salut,
ouais, bon, si je met en mémoire des lignes n'ayant pas les mêmes longueurs (je me comprend)
il faudrait que je stocke la longueur de chaque ligne, donc je vais faire en sorte que ces lignes soit toutes de même longueurs
sinon, Merci a vous pour ces réponses
Image
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

ce serait abusé de dire que je te connais bien pierre
mais je suis sûr que tu va faire 10 x trop compliqué...
:roll:

c'est quoi le fichier que tu veux charger ?
un format à toi ? une map pour un jeu ? un fichier de preferences ?

si tu veux dis moi exactement ce que tu cherches à faire et je t'aiderai :P
Image
Pierre
Messages : 244
Inscription : ven. 23/janv./2004 20:29
Localisation : 77 (Région parisienne)

Message par Pierre »

non, la c'est pas compliqué ce que je fait:
j'ai un fichier texte contenant ça (pour l'instant, c'est pour tester) :
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
0 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 0
0 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 0
0 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 0
0 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 0
0 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 0
1 espace = 0
1 chiffre = 1 numéro de sprite
les chiifres peuvent aller de 0 a 999 (3 chiffres)(j'ai pas besoin de plus que ça!)
donc avec mon code je récupère ce qu'il y a dans le fichier (je prend les chiffres du fichier 3 par 3)
ça donne:
sprite numéro:
001
002
...
et je met ces chiffres dans un tableau, et j'affiche (j'explique pas ce que je fait pour afficher, pas besoin, c'est bien comme ça!(puis y en a trop a expliquer!))
c'est clair les explications?
Image
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Par curiosité, le partage de donnée entre processus, c'est entre un programme Pure Basic et un ????

:)
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

@pierre

donc tu peux avoir un fichier comme çà si je comprends bien :
1 2 3 4 5 6 7 8 9 0 111 226 3 4 5 6 7 8 9 0
0 9 8 7 6 5 440 3 2 1 1 2 3 4 5 6 7 8 9 0
0 999 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 831 9 0
0 9 8 7 6 5 4 33 2 1 1 200 3 4 5 6 7 8 9 0
0 9 8 7 6 5 4 369 2 1 100 2 3 4 541 6 7 8 9 0
0 9 800 7 655 5 4 3 2 1 1 2 3 4 5 6 7 8 9 0
les lignes ont leur importance ou à la limite toutes les lignes pourraient etre collées sur la meme ?
Image
Répondre