begin process at 2012 02 11 20:08:22
  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

creation de plusieur tableau [ par foxwar ] Bonjour, j'aimerai cree un programme ki permet de cree plusieur tableau du different taille et les afficher g ecirt ce programme mai je c pa ce k'il sizeof pour determiner automatiquement la taille d'un tableau [ par Chatbour ] Salut à tous et à toutes, je me remets a C++ après une longue pause, donc soyez indulgents ^^ je me demande pourquoi ce code donne un résultat faux 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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 0,811 sec (3)

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