Accueil > Forum > > > > probleme allocation memoire dynamique
probleme allocation memoire dynamique
mercredi 27 avril 2005 à 11:56:27 |
probleme allocation memoire dynamique

neutrix
|
salut
voila
j'ai besoin d'aide
je dois convertir un nombre en tableau de chiffres 123456 => [1,2,3,4,5,6] jusque la tout va bien ... le probleme est : la reservation memoire dynamique avec les machin calloc malloc ou autres ....
mon nombre peut changer donc le nombre d'element dans le tableau créé varie.
#include <stdio.h> #include <stdlib.h> #include <math.h>
//------------------------------------------------------------------------------ // Fonction calculant le nombre de décimales d'un entier -> marche seulement // avec un nombre inférieur à 1 milliard (long int) // remarque: int s'arrète à 32 000. //------------------------------------------------------------------------------
int calc_nbr_dec(long int nbr1) { int i; i=0; long int q; q=1;
while (q != 0) { q=nbr1/10; nbr1=q; i=i+1; }
return i; }
//------------------------------------------------------------------------------ // Fonction qui extrait les décimales d'un entier et les stocke dans un tableau // 127 -> a[2]=1; a[1]=2; a[0]=7; //------------------------------------------------------------------------------
void extraire_dec(long int nbr2, long int a[]) { int j; //indice du tableau qui débute à 0 long int b; b=nbr2; long int d; d=calc_nbr_dec(nbr2);
for (j = 0 ; j < d ; j++) { a[d-j-1]= b / (pow(10,d-j-1)); b = b - (pow(10,d-j-1)) * ((a[d-j-1])); }
}
void main()
{ long int c[2]; <===== le probleme est ici si je veux le nombre 2459 (4 decimale cela ne va pas) long int nombre; nombre=999; extraire_dec(nombre , c ); printf("le nombre est:%ld\n",nombre); printf("le nbre de decimale est:%ld \n",calc_nbr_dec(nombre)); //printf("la premiere decimale est:%i\n",c[3]); printf("la seconde decimale est:%i\n",c[2]); printf("la troisieme decimale est:%i\n",c[1]); printf("la quatrieme decimale est:%i\n",c[0]);
system("pause");
}
Il est important de comprendre que par des souci de memoire je ne paeux me permettre de fixer le nombre decimale a 10 par exemple, je dois imperativement faire le truc de la memoire dynamique pour gagner de la place
Ce que je dis est peut etre faux, si vous voyez un autre moyen .....
merci beaucoup
|
|
mercredi 27 avril 2005 à 12:18:47 |
Re : probleme allocation memoire dynamique

DARKSIDIOUS
|
Pour utiliser de la mémoire dynamiquement allouée, il faut passer par les pointeurs :
long* c = malloc(sizeof(long) * nb_elements);
// et pour réallouer de la mémoire :
c = realloc(c, sizeof(long) * nb_elements); DarK Sidious
Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
|
|
mercredi 27 avril 2005 à 12:29:10 |
Re : probleme allocation memoire dynamique

luhtor
|
long int ou int c'est pareil. Et int ne s'arrete pas a 32768 mais a +- 2 milliard sur nos pc 32 bit.
Pour allouer ton tableau tu dois faire:
int * c = new int[Nombre de décimal];
et surtout oublie pas après system("PAUSE");
delete[] int;
Pour ta fonction qui retourne le nombre de décimal, tu peux utiliser le logarithme.
int calc_nbr_dec(int nbr1) { if (nbr1==0) return 1;
else
{
nbr1 = (nb1>0)?nbr1:-nbr1; // simplement la valeur absolue
return (int)logf(nbr1) + 1;
}
}
Ca évite les bricoles de boucles :)
|
|
mercredi 27 avril 2005 à 12:30:57 |
Re : probleme allocation memoire dynamique

luhtor
|
Oups pardon c'est pas logf(nbr1) mais log10(nbr1) :)
DarkSidious: pourquoi utiliser malloc alors que new existe ?
|
|
mercredi 27 avril 2005 à 12:40:22 |
Re : probleme allocation memoire dynamique

DARKSIDIOUS
|
ben à la vue du printf, je pensais que c'était du C, mais s'il fait du C++, en effet, il vaux mieux utiliser new ! DarK Sidious
Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
|
|
mercredi 27 avril 2005 à 15:59:55 |
Re : probleme allocation memoire dynamique

dletozeun
|
et surtout ne pas oublier a la fin :
free(c); pour liberer la memoire Ici c'est pas trop grave mais pour de gros tableaux c'est important Enfin ca c'est du C il y a peut etre autre chose en C++
|
|
Cette discussion est classée dans : nombre, long, int, printf, decimale
Répondre à ce message
Sujets en rapport avec ce message
calcul en précision étendue [ par JesusQuintana ]
Bonjours, Je veux programmer en C un ensemble complet de fonctions pour additionner, multiplier des nombres en précision étendue. Les no
mais c'est quoi ce sirque!!!! [ par namgalsipsclar ]
salut! bon, je débute en C , mais là j'ai qqs problèmes a la con : 1_ au moment ou je compile ceci: #include main() { int a; pr
oh non!! [ par bako25 ]
Le prog suivant calcule le nombre des 'e' dans un paragraphe: #include #include<
Windows plante {je sais pas nouveau } pour l'execution du mon code [ par darkwhite ]
Salut a tous Je debute en C, et j'ai commencer a faire un petit programme. A la moitié de la creation je l'essaie mé windows me sort un message derreu
génerateur des nombres aléatoire (GLC) [ par adola2003 ]
bonjour, j`ai un devoir a remettre la semaine prochaine concernant le génerateur des nombres aléatoires LCG avec F<9 (facteur) I<5 (increment) M (modu
fonction en c [ par badsha ]
j'ai un code qui inverse une matrice et je veux l'appliquer sur plusieurs matrices je n'arrive pas à mettre à l'entrée de la fonction des matrices, je
Utilisation de MEX [ par nomadstorm ]
Bonjour, J'ai un programme en C qui fonctionne et je voudrais le faire fonctionner sous MatLab afin de pouvoir traiter immédiatement et rapidement
calcul du nombre de caractere dans un fichier [ par Pitdeboole ]
slt les pro j'ai un peti souci voila ce code est censer creer un fichier puis compte nom le nombre de caractere contenu dans ce fichier y compri les e
programmation C : qui veut bien me donner un coup de pouce [ par dido1441 ]
salut à tous ...j'aimerais bien qu'on maide à corriger set exercice. Voici mon code source [b] #include #include int main() { int i, nbre ;
Problème de code en C [ par Guillaume170194 ]
Bonjour à tous Je ne vois pas le problème que peut avoir le code. Je choisi le niveau mais après cela ne correspond pas. Merci de votre aide Voici l
Livres en rapport
|
Derniers Blogs
[SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|