Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
976 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Tableau dont la taille est paramétrable

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Tableau dont la taille est paramétrable

n°889461
GROFRED
Posté le 03-11-2004 à 13:55:01  profilanswer
 

Je cherche à écrire un programme qui manipule des tableaux à une dimension dont la taille est N. Cette valeur de N est bien évidemment entière mais dépend d'une autre variable notée DA. N est le résultat du calcul suivant:
 
N=720/DA+1
 
La valeur de DA est nécessairement choisie par l'utilisateur du programme de façon à ce que N soit entier (Si DA=0.1 alors N vaut 7201). Je ne souhaite pas que l'utilisateur rentre directement N. J'ai donc écrit ça:
 
/*DEBUT PROG*/
#include <stdio.h>
#include <math.h>
 
//DECLARATION DE DA puis de N
const double DA=0.1;
const int N=720/DA+1;
 
//DECLARATION D'UN TABLEAU TYPE  
double TABLEAU[N]={0};
 
//CORPS DU PROGRAMME
int main(void)
{
...
}
/*FIN PROG*/
 
J'utilisais le compilateur lcc-win32 qui acceptait cette déclaration. J'utilise dorénavant le compilateur Borland C 5.5 (freecommandlinetools) qui est paraît-il plus performant. Ce compilateur ainsi que Visual C++ refuse cette déclaration de N, qualifiée alors par le compilateur d'illégale.
 
Quel est le problème?
 
- N est de type int et DA de type double...pb de conversion de type?
- puis-je effectuer un calcul au moment de ma déclaration de N?
- Ai-je le droit de faire des calculs ailleurs que dans main(), de façon à pouvoir déterminer N en fonction de DA?
 
Merci de m'éclairer sur ce point qui me paraît obscur.
 
PS: Je suis sans doute une burne en programmation C...


Message édité par GROFRED le 03-11-2004 à 14:01:04
mood
Publicité
Posté le 03-11-2004 à 13:55:01  profilanswer
 

n°889467
Joel F
Real men use unique_ptr
Posté le 03-11-2004 à 13:59:51  profilanswer
 

utilise malloc ....

n°889529
lsdYoYo
gravity powered
Posté le 03-11-2004 à 15:27:03  profilanswer
 

Essai avec des "#define" et non des "const" :

Code :
  1. //DECLARATION DE DA puis de N
  2. const double DA=0.1;
  3. const int N=720/DA+1;
  4. ========================
  5. #define DA ((double) 0.1)
  6. #define N  ((int) ((720.0/DA) +1))


Sinon, avec "malloc()" ou autre fonction d'allocation dynamique, ça passera toujours...


---------------
If I want to fail and succeed, which I have done ?
n°889739
Sve@r
Posté le 03-11-2004 à 19:15:11  profilanswer
 

GROFRED a écrit :

Je cherche à écrire un programme qui manipule des tableaux à une dimension dont la taille est N. Cette valeur de N est bien évidemment entière mais dépend d'une autre variable notée DA. N est le résultat du calcul suivant:
 
N=720/DA+1
 
La valeur de DA est nécessairement choisie par l'utilisateur du programme de façon à ce que N soit entier (Si DA=0.1 alors N vaut 7201). Je ne souhaite pas que l'utilisateur rentre directement N. J'ai donc écrit ça:
 
/*DEBUT PROG*/
#include <stdio.h>
#include <math.h>
 
//DECLARATION DE DA puis de N
const double DA=0.1;
const int N=720/DA+1;
 
//DECLARATION D'UN TABLEAU TYPE  
double TABLEAU[N]={0};
 
//CORPS DU PROGRAMME
int main(void)
{
...
}
/*FIN PROG*/
 
J'utilisais le compilateur lcc-win32 qui acceptait cette déclaration. J'utilise dorénavant le compilateur Borland C 5.5 (freecommandlinetools) qui est paraît-il plus performant. Ce compilateur ainsi que Visual C++ refuse cette déclaration de N, qualifiée alors par le compilateur d'illégale.
 
Quel est le problème?
 
- N est de type int et DA de type double...pb de conversion de type?
- puis-je effectuer un calcul au moment de ma déclaration de N?
- Ai-je le droit de faire des calculs ailleurs que dans main(), de façon à pouvoir déterminer N en fonction de DA?
 
Merci de m'éclairer sur ce point qui me paraît obscur.
 
PS: Je suis sans doute une burne en programmation C...


 
Le problème c'est que tu n'as pas le droit de déclarer un tableau dont la taille est issue d'un calcul. Cela devient une allocation dynamique donc tu dois utiliser "malloc()" La taille d'un tableau statique doit être soit un nombre fixe, soit une variable de type "const" donc non-modifiable.
 
Par ailleurs, si DA n'est utilisée que pour calculer N, tu peux la déclarer en "int". Mais cette remarque ne change rien à ma remarque précédente...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Tableau dont la taille est paramétrable

 

Sujets relatifs
Problème de validation XHTML 1.1 avec un tableau[PHP] Récupérer le dernier tableau d'un fichier HTML
[ VBA ] question con : remplir une lioste avec un tableauProbleme fonction et tableau d'objet
Sauvegarde d'une base de données Mysql de grosse taille[dreamweaver] scrollebarre dans cellule tableau
Taille mémoire des énumérationspeut on inserer un tableau dans un champ
Probleme de taille de bouton sur PDA avec WinCE4.2acces tableau multidimensionnel (voir dernier post)
Plus de sujets relatifs à : Tableau dont la taille est paramétrable


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR