Accueil > Forum > > > > C ANSI allocation dynamique de tableau
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
Livres en rapport
|
Derniers Blogs
ETENDRE LE TEAM WEB ACCESS DE TFS 2012 - STEP 0ETENDRE LE TEAM WEB ACCESS DE TFS 2012 - STEP 0 par Philess
L'extensibilité du Team Web Access
Le Web Access (site d'équipe) de Team Foundation Server a été complètement réécrit dans la version 2012 avec pas moins de 400.000 lignes de JavaScript. Ce nouveau modèle a été pensé pour offrir de grandes...
Cliquez pour lire la suite de l'article par Philess SIMULER FACILEMENT L'ENVOI DE MAILSIMULER FACILEMENT L'ENVOI DE MAIL par JeremyJeanson
il m'a été demandé, à plusieurs reprises, comment je faisais pour simuler l'envoi de mail lors de mes démos de Workflow Foundation. Ma solution est plutôt simple : j'utilise la configuration par défaut du SmtpClient et j'oriente les mails vers un dossier ...
Cliquez pour lire la suite de l'article par JeremyJeanson VOTEZ POUR LE TOP 10 DES INFLUENCEURS SHAREPOINT FRANCOPHONES !VOTEZ POUR LE TOP 10 DES INFLUENCEURS SHAREPOINT FRANCOPHONES ! par Patrick Guimonet
Si ce n'est déjà fait (comme plus de 600 personnes déjà), il est encore temps de voter pour le concours TOP 10 des influenceurs SharePoint francophones ! Il est organisé par harmon.ie et accessible ici : http://harmon.ie/top-...
Cliquez pour lire la suite de l'article par Patrick Guimonet [CONF'SHAREPOINT] DERNIER RAPPEL ! :-)[CONF'SHAREPOINT] DERNIER RAPPEL ! :-) par Patrick Guimonet
La Conf'SharePoint en chiffres c'est : 3 jours de SharePoint ! 4 parcours et 60 sessions 17 partenaires représentant toutes les fac...
Cliquez pour lire la suite de l'article par Patrick Guimonet
Forum
PB PACMAN C++PB PACMAN C++ par garfield95
Cliquez pour lire la suite par garfield95
Logiciels
Easy-Planning (4.5.0.11)EASY-PLANNING (4.5.0.11)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté a... Cliquez pour télécharger Easy-Planning CVEasy (3.1.0.51)CVEASY (3.1.0.51)PHMSD-CVEasy est un logiciel d'aide à la rédaction de CV d'une simplicité déconcertante.
PHMSD-C... Cliquez pour télécharger CVEasy LettresFaciles 2011 (8.6.0.31)LETTRESFACILES 2011 (8.6.0.31)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011 sDEVIS-FACTURES vlPRO (8.4.2.62)SDEVIS-FACTURES VLPRO (8.4.2.62)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO Devis-Factures PHMSD (2.1.0.11)DEVIS-FACTURES PHMSD (2.1.0.11)Configuration minimale
Nécessite Windows™ 2000, XP, Windows 7, 8, Vista (Service Pack à... Cliquez pour télécharger Devis-Factures PHMSD
|