Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : C ANSI allocation dynamique de tableau [ Archives / Divers ] (pedu)

mardi 27 mai 2003 à 00:56:57 | C ANSI allocation dynamique de tableau

pedu

Ce petit pro beug en sortie, pourquoi et que faire ?


#include <stdio.h>
#include <stdlib.h>

int (*pi)[1][1]; /* pointeur sur un tableau d'entiers */

void main(void)
{
unsigned int taille; /* taille du tableau (non connue
à la compilation). */
int i, j;
printf("Entrez la taille du tableau : ");
scanf("%u",&taille);
pi = (int (*)[1][1]) malloc(taille * sizeof(int)*1*1);

for(i=0; i<(((int)taille)*1); i++)
{
for(j=0; j<(((int)taille)*1); j++)
{
*(pi[i][j]) = 0;
}
}

for(i=0; i<(((int)taille)*1); i++)
{
for(j=0; j<(((int)taille)*1); j++)
{
printf("%d\t", *(pi[i][j]));
}
printf("\n");
}

/* libere le pointeur */
free(pi);
}

mardi 27 mai 2003 à 12:04:32 | Re : C ANSI allocation dynamique de tableau

payen

tu cherches a faire quoi la???? une allocation dynamique d'un tabeau a 2 dimensions??? Si oui (c'est du C++, il te reste plus qu'a adapter) :

template <class T> T** CIM<T>::Alloue(int nbl,int nbc)
{
const type_info& typeInfo=typeid(T);
const char* nomType=typeInfo.name();

cout << "Type de donnees : " << nomType << endl;
getchar();

if (nbl == 0 || nbc ==0)
return (T **)0;

image = new T * [nbl];
if (image == 0)
{
cout << "Echec lors de l'allocation memoire!!!" << endl;
return (T **)0;
}
for (int i=0;i<nbl;i++)
{
image[i] = new T [nbc];
if (image[i] == 0)
{
for (int j=0;j<i;j++)
{
delete[] image[j];
delete[] image;
cout << "Echec lors de l'allocation memoire!!!" << endl;
return (T **)0;
}
}
}

printf("Allocation memoire de %d octets reussie.\n",nbl*nbc*sizeof(T));

return image;
}

template <class T> void CIM<T>::Desalloue(int nbl)
{
if (image != NULL)
{
for (int i=0;i<nbl;i++)
delete[] image[i];
delete[] image;
image = NULL;

cout << "Desallocation de " << nbl*NBC*sizeof(T) << " octets.\n" << endl;
}
else
cout << "Memoire deja desallouee!!!" << endl;
}

C'est des methodes d'une classe template, faut pas que ca t'effraie : tu t'interesses aux new et aux delete (remplaces par malloc et delete ...)



-------------------------------
Réponse au message :
-------------------------------

> Ce petit pro beug en sortie, pourquoi et que faire ?
>
>
> #include <stdio.h>
> #include <stdlib.h>
>
> int (*pi)[1][1]; /* pointeur sur un tableau d'entiers */
>
> void main(void)
> {
> unsigned int taille; /* taille du tableau (non connue
> à la compilation). */
> int i, j;
> printf("Entrez la taille du tableau : ");
> scanf("%u",&taille);
> pi = (int (*)[1][1]) malloc(taille * sizeof(int)*1*1);
>
> for(i=0; i<(((int)taille)*1); i++)
> {
> for(j=0; j<(((int)taille)*1); j++)
> {
> *(pi[i][j]) = 0;
> }
> }
>
> for(i=0; i<(((int)taille)*1); i++)
> {
> for(j=0; j<(((int)taille)*1); j++)
> {
> printf("%d\t", *(pi[i][j]));
> }
> printf("\n");
> }
>
> /* libere le pointeur */
> free(pi);
> }
>

mardi 27 mai 2003 à 12:05:41 | Re : C ANSI allocation dynamique de tableau

payen

faut a voir declare un **image quelquepart!!!



-------------------------------
Réponse au message :
-------------------------------

> tu cherches a faire quoi la???? une allocation dynamique d'un tabeau a 2 dimensions??? Si oui (c'est du C++, il te reste plus qu'a adapter) :
>
> template <class T> T** CIM<T>::Alloue(int nbl,int nbc)
> {
> const type_info& typeInfo=typeid(T);
> const char* nomType=typeInfo.name();
>
> cout << "Type de donnees : " << nomType << endl;
> getchar();
>
> if (nbl == 0 || nbc ==0)
> return (T **)0;
>
> image = new T * [nbl];
> if (image == 0)
> {
> cout << "Echec lors de l'allocation memoire!!!" << endl;
> return (T **)0;
> }
> for (int i=0;i<nbl;i++)
> {
> image[i] = new T [nbc];
> if (image[i] == 0)
> {
> for (int j=0;j<i;j++)
> {
> delete[] image[j];
> delete[] image;
> cout << "Echec lors de l'allocation memoire!!!" << endl;
> return (T **)0;
> }
> }
> }
>
> printf("Allocation memoire de %d octets reussie.\n",nbl*nbc*sizeof(T));
>
> return image;
> }
>
> template <class T> void CIM<T>::Desalloue(int nbl)
> {
> if (image != NULL)
> {
> for (int i=0;i<nbl;i++)
> delete[] image[i];
> delete[] image;
> image = NULL;
>
> cout << "Desallocation de " << nbl*NBC*sizeof(T) << " octets.\n" << endl;
> }
> else
> cout << "Memoire deja desallouee!!!" << endl;
> }
>
> C'est des methodes d'une classe template, faut pas que ca t'effraie : tu t'interesses aux new et aux delete (remplaces par malloc et delete ...)
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Ce petit pro beug en sortie, pourquoi et que faire ?
> >
> >
> > #include <stdio.h>
> > #include <stdlib.h>
> >
> > int (*pi)[1][1]; /* pointeur sur un tableau d'entiers */
> >
> > void main(void)
> > {
> > unsigned int taille; /* taille du tableau (non connue
> > à la compilation). */
> > int i, j;
> > printf("Entrez la taille du tableau : ");
> > scanf("%u",&taille);
> > pi = (int (*)[1][1]) malloc(taille * sizeof(int)*1*1);
> >
> > for(i=0; i<(((int)taille)*1); i++)
> > {
> > for(j=0; j<(((int)taille)*1); j++)
> > {
> > *(pi[i][j]) = 0;
> > }
> > }
> >
> > for(i=0; i<(((int)taille)*1); i++)
> > {
> > for(j=0; j<(((int)taille)*1); j++)
> > {
> > printf("%d\t", *(pi[i][j]));
> > }
> > printf("\n");
> > }
> >
> > /* libere le pointeur */
> > free(pi);
> > }
> >
>

mercredi 28 mai 2003 à 08:49:47 | Re : C ANSI allocation dynamique de tableau

nEUrOne

pi = (int ***)malloc(taille * sizeof(*pi));

mercredi 28 mai 2003 à 09:48:04 | Re : C ANSI allocation dynamique de tableau

payen

ca c'est vraiment n'importe quoi nEUrOne!



-------------------------------
Réponse au message :
-------------------------------

> pi = (int ***)malloc(taille * sizeof(*pi));



Cette discussion est classé dans : taille, int, tableau, for, pi


Répondre à ce message

Sujets en rapport avec ce message

Tableau [ par druggedsephiroth ] Je comprends vraiment pas, j'ai un tableau:#define taille 8int cache[taille][taille];ensuite au début du soft, dans la procédure main je mets ca: for Help Me [ par manta7 ] Bonjour, j'aimerais coder un fonction qui prend en paramètre un tableau de nombres entiers, et qui recherche, dans ce tableau, la plus grande différen taille tableau [ par MiTcH37 ] J'aimerai savoir comment connaitre la taile d'un tableau, pour ne pas les envoyer comme argument dans une fonction.ex : void fct(int trier[], int tail Création de 2 tableaux dynamik à 2D [ par flopflopp ] Bonjour, je voudrais soumettre un petit problème en C++, j'ai une simple fonction qui crée un tableau dynamique à 2 dimensions, le rempli avec des 1 e Retourner tableau 2d [ par ZogStriP ] J'ai une fonction qui retoure un tableau 2 dimension mais ça ne marche pas :int MultiMatrice(int Matrice1[2][2], int Matrice2[2][2]){ int MatriceRe Problem Affichage de mon Tableau [ par Orezza ] salut à tous, j'ai un blem à l'affichage du tableau. l'utilisateur parametre son tableau, c lui qui l'initilize mais j'arrive pas à afficher apres le prob de tableau lié aux metaballs [ par jfk20004 ] quelqu'un peut il m'expliquer ce que font exactement ici les tableaux . j'aimerais savoir si ce sont les tableaux qui passent des valeurs ou si on pas Taille d'un pointeur ou d'un tableau ( très bizarre ) [ par thristam ] Bonjour à tous,Quand je veux connaitre la taille d'un tableau , je fais :int i[10];coutPas de problème Par contre , si je fais la même chose avec un p tableau [ par imanedaoudi ] Salut,Je veux récuperer le tableaux triée sans faire return, avec ce programme je recupere le tableau non trier ,comment faire pour recuperer le tab t Pb de tableau et de listbox [ par sran_isback ] Bonjour ! j'ai un ptit probléme concernant un tableau a afficher dans une listbox! j'aimerais bien qu'il m'affiche les nombres de 1 à cents mais toute


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,234 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.