Tableau multidimensionnel passer en parametre de fonction
dx3d
Messages postés
72
Statut
Membre
-
[Dal] Messages postés 6373 Statut Contributeur -
[Dal] Messages postés 6373 Statut Contributeur -
Bonjour, donc je rencontre un problème, j'ai un tableau multidimensionnel de taille t[7][2], il contient deux lignes avec des entiers, j'ai besoin de faire une fonction qui va extraire les entiers de la première ligne seulement dans une nouvelle liste en ignorant les éléments qui se répète.
J'ai fais comme cela :
en gros j'aimerais pouvoir faire un simple
x=algoOne(tab[7][2], taille);
et avoir un x qui pointe vers une liste qui contiendrai les éléments non répété de la première ligne du tableau ...
Au vu de mes tests je sais que je me trompe mais je bloque en ce moment et toutes aide est la bienvenue.
PS : J'en suis à 26h sans sommeil donc si je suis complétement à côté de la plaque hésité pas à me le dire avec si possible quelques indications pour me remettre dans le droit chemin ! :p
J'ai fais comme cela :
int algoOne(int **tab, int taille){
int i,j,newTaille=1;
for (i=1;i<taille;i++){
for (j=0;j<newTaille;j++){
if (tab[i][0]==tab[j][0]) break;
}
if (j==newTaille) { tab[newTaille++][0] = tab[i][0]; }
return *tab[0];
en gros j'aimerais pouvoir faire un simple
x=algoOne(tab[7][2], taille);
et avoir un x qui pointe vers une liste qui contiendrai les éléments non répété de la première ligne du tableau ...
Au vu de mes tests je sais que je me trompe mais je bloque en ce moment et toutes aide est la bienvenue.
PS : J'en suis à 26h sans sommeil donc si je suis complétement à côté de la plaque hésité pas à me le dire avec si possible quelques indications pour me remettre dans le droit chemin ! :p
A voir également:
- Tableau multidimensionnel passer en parametre de fonction
- Tableau word - Guide
- Fonction si et - Guide
- Tableau ascii - Guide
- Remettre parametre usine pc - Guide
- Trier un tableau excel - Guide
1 réponse
Salut dx3d,
Si tu dois créer "une nouvelle liste", tu dois allouer de l'espace pour un nouveau tableau où tu vas mettre tes valeurs extraites du premier et dédoublonnées. Non ? Là, tu écrases ton tableau bi-dimensionnel.
Tu devrais laisser le soin à la fonction appelante d'allouer la mémoire pour cette nouvelle liste, et de la libérer une fois qu'elle n'en a plus besoin.
Ta fonction a un nom qui ne dit pas ce qu'elle fait. Moi, je trouve cela gênant.
Je ne comprends pas ton algorithme dans ta fonction. Peux-tu l'expliquer en français ?
en gros j'aimerais pouvoir faire un simple
x=algoOne(tab[7][2], taille);
Non, je dirai plutôt :
PS : J'en suis à 26h sans sommeil
Tu joues à quoi ?
Dal
Si tu dois créer "une nouvelle liste", tu dois allouer de l'espace pour un nouveau tableau où tu vas mettre tes valeurs extraites du premier et dédoublonnées. Non ? Là, tu écrases ton tableau bi-dimensionnel.
Tu devrais laisser le soin à la fonction appelante d'allouer la mémoire pour cette nouvelle liste, et de la libérer une fois qu'elle n'en a plus besoin.
Ta fonction a un nom qui ne dit pas ce qu'elle fait. Moi, je trouve cela gênant.
Je ne comprends pas ton algorithme dans ta fonction. Peux-tu l'expliquer en français ?
en gros j'aimerais pouvoir faire un simple
x=algoOne(tab[7][2], taille);
Non, je dirai plutôt :
extraire_ligne1_dedoublonnee(tab, taille, nouv_tab);
PS : J'en suis à 26h sans sommeil
Tu joues à quoi ?
Dal
Exemple :
Tableau[7][2] :
| 1 | 3 | 1 | 2 | 0 | 2 | 2 |
| 2 | 1 | 1 | 1 | 0 | 2 | 3 |
On voudrait mettre ce tableau en paramètre et recevoir comme réponse :
TableauElement[taille] : | 1 | 3 | 2 | 0 | <- les éléments de la première ligne en ignorant les éléments dupliquer.
ce n'est pas un algorithme que tu dois faire, mais un programme en langage C (qui suppose que tu aies au préalable conçu un algorithme adéquat).
retournera la liste des numéros d'un tableau multidimensionnel d'entier. On voudrait donc faire en sorte de donner un tableau multidimensionnel en paramètre de la fonction, et qu'elle nous retourne une liste des éléments contenu dans la première ligne du tableau sans prendre en compte les éléments qui se répète.
oui, cela, tu l'avais déjà expliqué, et j'ai très bien compris l'énoncé.
ce que je te demandais, c'était : "Je ne comprends pas ton algorithme dans ta fonction. Peux-tu l'expliquer en français ?", c'est à dire la suite d'opérations logiques permettant d'aboutir au résultat souhaité (ce n'est ni l'énoncé, ni le code C lui même, qui vient une fois que tu as conçu clairement ton algorithme) que tu veux exprimer à travers ton code.
Exemple :
Tableau[7][2] :
| 1 | 3 | 1 | 2 | 0 | 2 | 2 |
| 2 | 1 | 1 | 1 | 0 | 2 | 3 |
On voudrait mettre ce tableau en paramètre et recevoir comme réponse :
TableauElement[taille] : | 1 | 3 | 2 | 0 | <- les éléments de la première ligne en ignorant les éléments dupliquer.
Super ! Un exemple :-)
Donc, prends une feuille de papier et un crayon, et écrit ton algorithme en français permettant d'extraire dans un nouveau tableau, les valeurs extraites du premier et dédoublonnées.
Ensuite, implémente le en C, avec ce jeu de test, et vérifie qu'il passe le test.
Avec çà et les indications données en https://forums.commentcamarche.net/forum/affich-31845240-tableau-multidimensionnel-passer-en-parametre-de-fonction#1 tu devrais t'en sortir.
Dal