Code tirer d'un algorithme

a marqué ce sujet comme résolu.

Je l’ai dit plus haut que j’ai repris l’étude d’un livre d’algorithme et dans le livre il parlais de la fonction taille(tab) par exemple et vu que j’avais déjà vu std::size() dans la section des tableau j’ai seulement repris cette fonction pour l’employé pour résoudre mon exercice d’algorithme … mais je n’ai pas vu la totalité des tableau j’ai arrêter avant d’arriver à std::array … Mais la je vais reprendre les cours car j’ai fini mon livre d’algo.

Si j’ai bien compris, tu vas à la pêche. Tiens ceci pourrait être utile, donc je le prend …

Si vraiment la fonction doit accepter un nombre variable d’élèves et pour lesquels tu ne connais pas le nombre de notes au départ, il me semble que std::vector<std::vector<double>> serait approprié.

Si en plus le nombre de notes n’est pas le même pour tous les élèves, ça sera encore plus approprié.

On dit toujours que Google est notre ami … mais il faut en user judicieusement.

PierrotLeFou

Non je ne vais pas à la pêche je fais avec ce que j’ai appris pas ce que je n’ais pas appris et std::array je ne l’a pas encore vu, … par contre on vois std::size avant std::array dans le cours de zeste donc voila je n’ai pas été jusqu’au bout des tableaux pour pouvoir utilisé array…

La vous me compliqué avec votre double vector lol… je suis juste au début des tableaux dans zeste donc c’est notion double vector me sont encore inconnue ….

+0 -0

OK. Le cours ici montre std::vector avant std::array, et std::size rapidement après l’introduction du vecteur.

Mais… il ne montre pas type[dim1][dim2], non. Et ta boucle de ta ligne 36 (au dessus) devrait être exprimée exactement comme celle en ligne 11. EX-AC-TE-MENT. (Par contre le test en lignes 16 et 21 est faux: tu t’arrêtes à l’étagère dont le numéro courant doit être inférieur au nombre d’étagères qui est spécifié à partir de la taille de l’étagère dont le numéro est ce numéro courant. Ouch!) Débuggue ou affiche des traces (12 trucs à afficher, c’est vite fait) dans le calcul de la moyenne des moyennes (!), tu vas vite voir que ton parcours n’est pas bon.

J’imagine que tu as essayé et que le compilateur t’a envoyé bouler. Et c’est normal car dans le contexte de paramètre de fonction type[dim1][dim2] ce n’est pas un tableau, c’est un pointeur. Et c’est pour nous protéger que size refuse de l’accepter. Une saleté héritée du C je disais. Ca tombe bien, on a une solution: std::array…

Les solutions:

  1. faire du C comme la moitié du support que tu as trouvé et qui te montre le type[d1][d2] — ce qui est dommage si le but est d’apprendre le C++
  2. utiliser un bon type (array ou vector) — et probablement te poser pour bien comprendre/visualiser ce qu’est un tableau de tableaux, ce qu’exprime tab[i], peu importe le nom donné à i, etc.

En effet, ton exo exige un tableau de tableaux, ou équivalent. Du coup, "je suis juste au début des tableaux dans zeste donc c’est notion double vector me sont encore inconnue …. ", il y a comme un truc qui cloche…

Un tableau à une dimension contient généralement (…) des nombres. Un tableau à deux dimensions contient des tableaux à une dimension dans sa seconde dimension.

int tab1[3];   // contient 3 entiers.
int tab2[4][3];   // Contient 4 tableaux de 3 entiers.

Les vector sont des tableaux extensibles. On n’est pas obligé de leur donner la longueur dès le début.

std::vector<int> tab1;   // vecteur d'entiers à une dimension.
std::vector<std::vector<int>> tab2;   // vecteur d'entiers à deux dimensions (vecteur de vecteurs d'entiers)
+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte