lainlain
Messages postés7Date d'inscriptionmardi 28 janvier 2003StatutMembreDernière intervention 5 septembre 2003
-
5 sept. 2003 à 16:35
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
6 sept. 2003 à 15:20
Salut tout le monde!
Je me suis lancé dans un projet de programme qui traîte toutes les opérations matricielles (enfin celle qu'on a vue en cours...)
Je fais ceci dans le cadre d'un travail de maturité (c'est un truc Suisse... Pour passer ses exams de bac, il faut faire le gros truc...), et je me suis lancé dans la programmation... A la base j'avais jamais programmé, mais j'ai pas mal vite appris... Il me manque quand meme beaucoup de savoir en la matière...
Bon, pour en revenir à mon travail, normalement je dois faire afficher les résultat en décimales ou en fractions...
Il me faut un petit coup de pouce, surtout pour la création d'une matrice quelconque qui doit être fait dans une classe... J'ai déjà fait qquelque chose, mais j'arrive pas à créer un tableau matriciel dynamique (avec lignes et colonnes... style tableau[][] j'arrive seulement comme ça tableau[]...)
Si jamais, je peux transmettre les bases de mon travail...
blopera
Messages postés10Date d'inscriptionsamedi 23 août 2003StatutMembreDernière intervention20 décembre 2004 5 sept. 2003 à 17:41
slt,
ta matrice peut-être vue comme un tableau à deux dimensions, te permettant de gérer facilement les lignes/colonnes (tableau[i][j]) ou comme un tableau à une dimension dans lequel tu doit gérer toi même l'accès à la ième colonne (tableau[i + nbcolones*j]).
En fonction de ton choix, BruNews conseille plutôt un tableau à une dimension...( pour des raisons d'accès au memory manager), perso, je pense que ça dépend des cas...
Bref pour un tableau à 1 dim:
int *tab;
tab = (int*)malloc(nblignes*nbcolonnes*sizeof(int));
et pour un tableau à 2 dim:
int **tab;
tab = (int**)malloc(nblignes*sizeof(int*));
for(int i=0; i!=nbcolonnes;i++)
tab[i] = (int*)malloc(nbcolonnes*sizeof(int));
n'oublie pas de désallouer et de vérifier les retours d'allocation...
si tu as besoin de plus d'aide, je veux bien regarder ton code...
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 5 sept. 2003 à 17:59
Effectivement on evite ainsi le malloc en boucle:
int *tab;
tab = (int*)malloc(nblignes*nbcolonnes*sizeof(int));
mais rien n'empeche de s'en servir en 2 dimensions:
int **idxtab = (int**) tab;
Et on se sert de idxtab en 2 dimensions.
Ensuite on fera aussi enorme benef en sortie:
free(tab); // 1 seule fois !!!
va bon ?
BruNews, ciao...
lainlain
Messages postés7Date d'inscriptionmardi 28 janvier 2003StatutMembreDernière intervention 5 septembre 2003 5 sept. 2003 à 20:21
Merci!
Mais pourquoi je peux pas créer un tableau dynamique à 2 dimensions? J'ai eu des erreurs à la compilation en essayant... J'ai été obligé de créer un tableau à 1 dimension. Je saurai comment faire même avec 1 dimension, mais je préférerai pour des raisons pratiques et pour que mon prof comprenne plus facilement pouvoir créer un tableau à 2 dimension.