begin process at 2010 03 12 22:23:39
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

C ANSI allocation dynamique de tableau


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

C ANSI allocation dynamique de tableau

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ée 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


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,154 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales