youssefmahdia
Messages postés25Date d'inscriptiondimanche 30 mars 2008StatutMembreDernière intervention12 juin 2011
-
19 avril 2008 à 10:44
cs_jfrancois
Messages postés482Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention 5 décembre 2009
-
19 avril 2008 à 13:39
bonjour les amis,
j'ai un problème en C, en fait, je veux créer un tableau à deux dimensions dont une est variable.
voila, je veux obtenir quelque chose qui ressemble à ça:
tab[????][???]={{0},{11,12,13,14},{22,23,24,25,26,27,28},{33,34,35,336,37,38,39,40,41,42},{55,56,57,58,59,60,61,62,63,64,65,67,68,69,70},,,,,}
en fait, si vous avez remarqué, je veux que chaque sous tableau contient 4*(son indice).
j'ai essayé avec for, switch, pourtant, j'ai pas arrivé.
voila, merci pour vos aides.
cs_jfrancois
Messages postés482Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention 5 décembre 20092 19 avril 2008 à 11:25
Bonjour,
On ne peut pas créer un tableau triangulaire ! Il faut le "linéariser" et créer un indice unique pour accéder à une case mais encore faut-il que la progression de la longueur des lignes soit connue car dans l'exemple proposé, la longueur des lignes ne correspond pas à 4 fois l'indice : 4*0=0 et non 1, 4*1=4 ok, 4*2=8 et non 7, 4*3=12 et non 10, 4*4=16 et non 15.
youssefmahdia
Messages postés25Date d'inscriptiondimanche 30 mars 2008StatutMembreDernière intervention12 juin 2011 19 avril 2008 à 13:04
merci monsieur,
mais pouvez vous m'écrire le programme complet, c'est à dire le remplissage du tableau et son affichage.
j'arrive pas à comprendre le fonctionnement de votre programme.
merci beaucoup
cs_jfrancois
Messages postés482Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention 5 décembre 20092 19 avril 2008 à 13:39
Voilà un exemple qui permet de traiter un tableau statique avec des lignes de longueur quelconque :
#include <stdio.h>
#include <stdlib.h>
int tab
(
int iLigne // E:indice de la ligne (à partir de 0)
,int iColonne // E:indice de la colonne (à partir de 0)
) // S:valeur en (ligne,colonne) ou -1 si erreur
{
// --- Tableau des valeurs (une seule ligne de valeurs
// --- mais traité comme plusieurs pseudo-lignes)
static const int aiValeurs[] =
{
0
,11,12,13,14
,22,23,24,25,26,27,28
,33,34,35,36,37,38,39,40,41,42
,55,56,57,58,59,60,61,62,63,64,65,67,68,69,70
};
// --- Nombre de pseudo-lignes dans le tableau
static const int iNombreLignes = 5;
// --- Tableau des longueurs des lignes
static const int aiLongueurLignes[iNombreLignes] = {1,4,7,10,15};
// --- Tableau des indices des débuts des lignes
// --- (pour un accès rapide à chaque ligne)
static const int aiDebutLignes[iNombreLignes] = {0,1,5,12,22};
// --- Test des indices
if (iLigne < 0 || iLigne >= iNombreLignes)
return -1;
if (iColonne < 0 || iColonne >= aiLongueurLignes[iLigne])
return -1;
// --- Retour de la valeur en (ligne,colonne)
return aiValeurs[aiDebutLignes[iLigne] + iColonne];
}