Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails)

#1 Le 11/02/2014, à 22:30

temps

[résolu] Comment lire un tableau dans un tableau en C

Bonjour,
j'ai une liste de 128 tableaux de tailles différentes,
selon la valeur d'une variable, je dois aller lire le contenue de tel ou tel tableau.
j'ai donc créé un tableau contenant le nombre de tableau

int placement[NumDeTab] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128};

ensuite j'ai créé un tableau pointeur contenant chacun de mes tableaux

int *tab[] = {tab1jo17, tab2jo17, tab3jo17, tab4jo17, tab5jo17, tab6jo17, tab7jo17, tab8jo17, tab9jo17, tab10jo17, tab11jo17, tab12jo17, tab13jo17, tab14jo17, tab15jo17, tab16jo17, tab17jo17, tab18jo17, tab19jo17, tab20jo17, tab21jo17, tab22jo17, tab23jo17, tab24jo17, tab25jo17, tab26jo17, tab27jo17, tab28jo17, tab29jo17, tab30jo17, tab31jo17, tab32jo17, tab33jo17, tab34jo17, tab35jo17, tab36jo17, tab37jo17, tab38jo17, tab39jo17, tab40jo17, tab41jo17, tab42jo17, tab43jo17, tab44jo17, tab45jo17, tab46jo17, tab47jo17, tab48jo17, tab49jo17, tab50jo17, tab51jo17, tab52jo17, tab53jo17, tab54jo17, tab55jo17, tab56jo17, tab57jo17, tab58jo17, tab59jo17, tab60jo17, tab61jo17, tab62jo17, tab63jo17, tab64jo17, tab65jo17, tab66jo17, tab67jo17, tab68jo17, tab69jo17, tab70jo17, tab71jo17, tab72jo17, tab73jo17, tab74jo17, tab75jo17, tab76jo17, tab77jo17, tab78jo17, tab79jo17, tab80jo17, tab81jo17, tab82jo17, tab83jo17, tab84jo17, tab85jo17, tab86jo17, tab87jo17, tab88jo17, tab89jo17, tab90jo17, tab91jo17, tab92jo17, tab93jo17, tab94jo17, tab95jo17, tab96jo17, tab97jo17, tab98jo17, tab99jo17, tab100jo17, tab101jo17, tab102jo17, tab103jo17, tab104jo17, tab105jo17, tab106jo17, tab107jo17, tab108jo17, tab109jo17, tab110jo17, tab111jo17, tab112jo17, tab113jo17, tab114jo17, tab115jo17, tab116jo17, tab117jo17, tab118jo17, tab119jo17, tab120jo17, tab121jo17, tab122jo17, tab123jo17, tab124jo17, tab125jo17, tab126jo17, tab127jo17, tab128jo17};

ensuite j'ai essayé à l'aide d'une boucle for de lire les données, de tel ou tel tableau selon la variable, mais sans succès

tab[i][j]

est-ce que quelqu'un sait comment procéder ?

Cordialement

Dernière modification par temps (Le 11/02/2014, à 23:28)


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination

Hors ligne

#2 Le 11/02/2014, à 22:56

Braun

Re : [résolu] Comment lire un tableau dans un tableau en C

Bonsoir,
Si je comprends la "variable" est un indice et tu vas lire dans le tableau maître la valeur contenue dans sa case indicée cette valeur est elle-même l'adresse de base d'un tableau d'entiers...
Normalement tu devrais pouvoir faire un premier test en fixant l'adresse de base d'un de tes tableaux d'entiers et en lisant les données y incluses...
Mais je vois un autre problème du fait que la taille des tableaux secondaires n'est pas constante...

Hors ligne

#3 Le 11/02/2014, à 23:28

temps

Re : [résolu] Comment lire un tableau dans un tableau en C

Merci pour la réponse qui m'a bien aidé,
je faisais une erreur dans le raisonnement logique.
Je ne fixais pas le tableau comme, il faut.
je poste en résolu et voici le code

int i, j, *p;


   for (i = boucle; i > 1; i--)
{
   for (p = table[i], j = boucle; j < placement[i]; j++)

ote1 = ote * 0.00001 * p[j];

J'ai utilisé table car j'utilise tab ailleurs dans le code et cela provoquais un core dumped sans rien signaler à la compilation.
En d'autres mots, j'ai remplacé tab par table, par rapport à mon premier post

Quelques explications,
la variable qui indique quel tableau doit être lu, se nomme boucle, dans ce cas là je doit lire le tableau à l'envers, et le int lu dans le tableau doit être divisé par 0.00001 (pour avoir un int dans tableau et multiplié par ote qui est la valeur totale. Je n'ai pas mis l'accolade de fermeture qui se trouve bien plus bas dans le traitement du signal

En plus simple au début le problème c'est que je  sélectionnais mal le pointeur dans le tableau de pointeurs

La technique fonctionne, mais je pointe mal encore, j'ai vérifié le résultat attendu et c'est pas ça.
Je donnerai le bon code quand j'aurai corrigé. Le but est de fixer le pointeur sur un tableau en fonction d'une variable, ensuite de lire les valeur de ce tableau pour leur faire subir un trairement

Cordialement

Dernière modification par temps (Le 12/02/2014, à 00:08)


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination

Hors ligne

#4 Le 12/02/2014, à 23:01

temps

Re : [résolu] Comment lire un tableau dans un tableau en C

Bonjour,
Le code fonctionne très bien quand j'incrémente :

int i, j, *p;


   for (i = 0; i < boncompte; i++)
{
   for (p = table[boncompte], j = 0; j < placement[i]; j++)

ote1 = ote * 0.00001 * p[j];

La variable est boncompte

Mais je galère toujours quand je dois décrémenter, je dois faire une erreur logique et je ne vois pas ou.

Je reviendrai poster quand j'aurai trouvé. En tout cas les incohérences qui impliquaient des corrections dues à l'utilisation de l'include math ont disparues en utilisant des tableaux et déja rien que le fait d'utiliser pour les parties qui incrémentent des tableaux l'application est beaucoup plus rapide. Visiblement mon P.C. n'aime pas faire des calculs, imité oui il est très rapide, mais pas calculer.

J'en suis à me demander si je ne vais créer un nouveau tableau de pointeur à l'ordre inversé et utiliser une incrémentation pour décrémenté ?
genre
int *pinverse;
et placementinverse[]

J'essaie encore un peu en utilisant la logique ensuite j'attaque la logique inverse

Cordialement

Dernière modification par temps (Le 12/02/2014, à 23:17)


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination

Hors ligne

#5 Le 12/02/2014, à 23:27

temps

Re : [résolu] Comment lire un tableau dans un tableau en C

Bonsoir,
J'ai trouvé l'erreur logique, voici le code pour décrémenter

int i, j, *p;


   for (i = boucle; i > 0; i--)
{
   for (p = table[boucle], j = 0; j < placement[i]; j++)

ote1 = ote * 0.00001 * p[j];

Cordialement


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination

Hors ligne

#6 Le 12/02/2014, à 23:42

telliam

Re : [résolu] Comment lire un tableau dans un tableau en C

ça serait pas plutot :

   for (p = table[i], j = 0; j < placement[i]; j++)

"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#7 Le 13/02/2014, à 00:32

temps

Re : [résolu] Comment lire un tableau dans un tableau en C

Bonsoir,
Merci, je teste demain, il est tard.
J'ai pu remarqué qu'il y avait une légère asymétrie pas très gênante sur une valeur, mais je pensais chercher à corriger dans le code plus tard et corriger.

l'application passe de 12ko à presque 50ko avec des tableaux à la place de la fonction math mais elle est bien plus rapide, et les courbes sont exactes sans déformations ou autres effets à corriger.
Cordialement


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination

Hors ligne

#8 Le 13/02/2014, à 23:25

temps

Re : [résolu] Comment lire un tableau dans un tableau en C

Bonsoir,
Et voici et voilou

En remplaçant boucle par i, cela donne un effet psychédélique.

En fait, je ne sais pourquoi il apparaît un simple effet de décalage qui n'est pas vraiment gênant.
Par rigueur et plaisirs du temps perdu, j'ai cherché à obtenir une symétrie, et j'ai trouvé comment ,voici le code.

int i, j, *p;


   for (i = boucle-1; i+1 > 0; i--)
{
   for (p = table[boucle-1], j = 0; j < placement[i]; j++)

ote1 = ote * 0.00001 * p[j];

Je décale la décrémentation en écrivant boucle-1 et je rattrape la valeur perdue en écrivant i+1

Cordialement


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination

Hors ligne

#9 Le 14/02/2014, à 00:08

telliam

Re : [résolu] Comment lire un tableau dans un tableau en C

pourquoi pas un simple
for (i = boucle -1 ; i>=0; i--)

avec p = table[boucle-1], tu pointes toujours sur la derniere case de ton 1er tableau
tu es sur que c'est ce que tu vx?


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#10 Le 14/02/2014, à 00:25

temps

Re : [résolu] Comment lire un tableau dans un tableau en C

Bonsoir,
Le code que j'ai indiqué fonctionne très bien sur ma 13.10, j'essaierai sur d'autre P.C. et plus tard je l’intégrerai dans le deb SDL pour pouvoir tester sous la 12.04.

Je décrémente bien, pour incrémenter depuis le début, je n'ai pas de problèmes même si à un moment j'ai eu un doute quand j'ai attaqué la décrémentation.

En cas de doute, j'ai mis le deb Lm3jo.deb en ligne à l'instant en utilisant ce code.

La particularité de cette nouvelle version de Lm3jo,
1- elle n'utilise plus la fonction math mais un tableau de tableaux
2- elle reprend une valeur de jo plus cohérente à 33, la valeur à 17 n'était là que pour compenser un peu les déformations des opérations.
En d'autres mots, nous obtenons un son bien meilleur, qui si nous étions resté à 17 en tableau le son serait devenue légèrement déformé (légère dissonance)

Cordialement

Dernière modification par temps (Le 14/02/2014, à 00:53)


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination

Hors ligne

#11 Le 14/02/2014, à 09:09

telliam

Re : [résolu] Comment lire un tableau dans un tableau en C

Il tourne peut être mais il ne fait pas ce que tu demandais dans ton 1er post.


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#12 Le 14/02/2014, à 14:08

temps

Re : [résolu] Comment lire un tableau dans un tableau en C

Bonjour,

Il tourne peut être mais il ne fait pas ce que tu demandais dans ton 1er post

Qu'est-il entendu ?

J'ai écris en premièeres lignes

temps a écrit :

j'ai une liste de 128 tableaux de tailles différentes,
selon la valeur d'une variable, je dois aller lire le contenue de tel ou tel tableau.

et le code va bien chercher le contenu de tel ou tel tableau en fonction d'une variable.
En exemple si la variable est 80, c'est bien le tableau 80 qui est lu.
Il est vrai que selon, j'avais besoin de lire le tableau dans tel sens ou tel sens et plutot qu'ajouter 128 tableaux aux valeurs inversé, j'ai ajouté un code qui utilise les tableaux déja existants.
Du fait que le contenu des tableau est différent, il m'a été facile de vérifier et le code fonctionne au moins sur mon P.C et déja 2 amis qui ont testés aussi.

Cordialement


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination

Hors ligne

#13 Le 14/02/2014, à 14:23

pires57

Re : [résolu] Comment lire un tableau dans un tableau en C

hey, c'est pas de l'ASM que tu fait hein, pas la peine de tester sur 50pc, le code ne change pas d'un pc a l'autre, il peut éventuellement changer en fonction de l'OS ou d’architecture spécifique utilisant des API spécifique (RTOS ou autre)


Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.

Hors ligne

#14 Le 15/02/2014, à 00:17

telliam

Re : [résolu] Comment lire un tableau dans un tableau en C

temps a écrit :

Bonjour,

Il tourne peut être mais il ne fait pas ce que tu demandais dans ton 1er post

Qu'est-il entendu ?

J'ai écris en premièeres lignes

temps a écrit :

j'ai une liste de 128 tableaux de tailles différentes,
selon la valeur d'une variable, je dois aller lire le contenue de tel ou tel tableau.

et le code va bien chercher le contenu de tel ou tel tableau en fonction d'une variable.
En exemple si la variable est 80, c'est bien le tableau 80 qui est lu.
Il est vrai que selon, j'avais besoin de lire le tableau dans tel sens ou tel sens et plutot qu'ajouter 128 tableaux aux valeurs inversé, j'ai ajouté un code qui utilise les tableaux déja existants.
Du fait que le contenu des tableau est différent, il m'a été facile de vérifier et le code fonctionne au moins sur mon P.C et déja 2 amis qui ont testés aussi.

Cordialement

dans ton code tu prendras toujours la mm case du 1er tableau c'est a dire table[boucle-1], dans le code que tu nous montre boucle ne varie pas donc c'est toujours la mm entrée que tu prends.
seul la 2eme dimension varie entre 0 et placement[x].
Si c'est ça que tu veux faire pas de pb, mais ton 1er poste laissait a penser que tu voulais parcourir table[ x ][ j ] avec x allant de boucle-1 à 0 et j allant de 0 à placement[ x ]


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#15 Le 16/02/2014, à 02:47

temps

Re : [résolu] Comment lire un tableau dans un tableau en C

Bonjour,
Effectivement dans le cas de mon appli le besoin est de partir toujours de la même case, soit la première sans lire la dernière soit l'avant dernière et remonter jusqu'à la première (effet tableau).
Cordialement


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination

Hors ligne

Haut de page ↑