begin process at 2013 05 24 14:24:38
  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 Tableau à 2 dimension + fonction [ par GrosKiff1994 ] Bonsoir, Je débute en programmation, et je galère avec un simple tableau à 2 dimensions à envoyer dans une fonction pour le mettre à 0. [code=cpp] # besoin d'aide dans programme en c [ par houda986 ] salut; je suis un débutante en programmation et j'ai besoin d'aide pour la résolution d'un programme en C,c'est un programme de tri par base ... j'ai 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 Paramètre de tableau 2D [ par Nairos ] Bonjour, J'ai écris un programme qui déclare, initialise puis affiche un tableau à deux dimensions. Toutefois, je souhaiterais le moduler en plusieurs Problème de mémoire avec un tableau dynamique [ par veler ] Bonsoir à tous, J'apprends actuellement le C et j'ai un petit soucis. J'ai un tableau dynamique à 2 dimensions déclaré dans ma fonction "main". Je s 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


Nos sponsors


Sondage...

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



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

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