Tableau multidimensionnel passer en parametre de fonction

Fermé
dx3d Messages postés 68 Date d'inscription dimanche 6 septembre 2009 Statut Membre Dernière intervention 19 juillet 2017 - 16 avril 2015 à 21:42
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 17 avril 2015 à 14:03
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 :

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:

1 réponse

[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
17 avril 2015 à 00:22
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 :
extraire_ligne1_dedoublonnee(tab, taille, nouv_tab);


PS : J'en suis à 26h sans sommeil

Tu joues à quoi ?

Dal
0
dx3d Messages postés 68 Date d'inscription dimanche 6 septembre 2009 Statut Membre Dernière intervention 19 juillet 2017
17 avril 2015 à 02:45
Il me reste un mois pour mes partiels, du coup je no-life sur mes cours en ce moment ! Mais je vais me coucher la, j'en peux plus ... Je te répond demain à tes questions et merci déjà pour les indications que tu m'as donné!
0
dx3d Messages postés 68 Date d'inscription dimanche 6 septembre 2009 Statut Membre Dernière intervention 19 juillet 2017
17 avril 2015 à 12:53
Bonjour Dal, donc pour expliqué un peu mon problème, on est censé crée un algo qui 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.

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.
0
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
Modifié par [Dal] le 17/04/2015 à 14:10
on est censé crée un algo qui

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
0