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

  FORUM HardWare.fr
  Programmation
  C++

  [C] questions diverses

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] questions diverses

n°123749
nodus
Posté le 09-04-2002 à 18:12:42  profilanswer
 

Je rencontre un petit pb en ce moment, je cherche a avoir dans mon programme autant de variable que l'utilisateur l'aura specifie.
En fait ça serait un truc en boucle du type for pour que les variable s'appellent par exemple a1, a2, a3... Le chiffre etant modifie selon l'utilisateur.
Le probleme c'est que je ne sait pas du tout comment faire.

 

[jfdsdjhfuetppo]--Message édité par Nodus--[/jfdsdjhfuetppo]

mood
Publicité
Posté le 09-04-2002 à 18:12:42  profilanswer
 

n°123754
Jar Jar
Intaigriste
Posté le 09-04-2002 à 18:16:07  profilanswer
 

Un tableau, ce ne serait pas plus simple ?


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°123755
Profil sup​primé
Posté le 09-04-2002 à 18:16:18  answer
 

liste chainée.
 
struct mastruct
{
float val;
mastruct *suivant;
}
 
comment l'utiliser ca serai long a expliquer mais il doit y avoir des cours sur le web.

 

[jfdsdjhfuetppo]--Message édité par mr_mat--[/jfdsdjhfuetppo]

n°123757
Jar Jar
Intaigriste
Posté le 09-04-2002 à 18:17:32  profilanswer
 

mr_mat a écrit a écrit :

liste chainée.


Une liste chaînée pour ça ?
 
Hmmmm... C'est pas se compliquer la vie ?


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°123760
nodus
Posté le 09-04-2002 à 18:19:51  profilanswer
 

quoique le tableau ça serait plus simple a utiliser, merci pour l'idee  :hello:

n°124025
Profil sup​primé
Posté le 10-04-2002 à 09:11:36  answer
 

Jar Jar a écrit a écrit :

Une liste chaînée pour ça ?
 
Hmmmm... C'est pas se compliquer la vie ?  




 
ca depend si il veut une taille fixe

n°124031
El_gringo
Posté le 10-04-2002 à 09:38:39  profilanswer
 

Nodus a écrit a écrit :

quoique le tableau ça serait plus simple a utiliser, merci pour l'idee  :hello:  




 
Ou si tu veux n'avoir aucune limite dans le nombre (ou presque). Du moins, si tu veux pas un nombre maximum fixé: allocation dynamique de mémoire, tableau dynamique quoi.
Un truc genre:

Code :
  1. float* lpfTabDeFloats = (float*)malloc (TAILLE_DE_DEPART * sizeof (float)); 
  2. // où TAILLE_DE_DEPART est une constante, par exemple #define TAILLE_DE_DEPART 256


 
 
pour accèder aux éléments du tableau:
 
*(lpfTabDeFloats + I) doit logiquement être le Ième élément de ton tableau dynamique
 
pour agrandire ton tableau (si nbElements > nbMaxElements):

Code :
  1. lpfTabDeFloats = realloc (lpfTabDeFloats, TAILLE_DE_REALLOC * sizeof (float));
  2. // où TAILLE_DE_DEPART est une constante, par exemple #define TAILLE_DE_DEPART 64


 
voila. Si tu t'en sent le courage...

 

[jfdsdjhfuetppo]--Message édité par El_Gringo--[/jfdsdjhfuetppo]

n°124041
HelloWorld
Salut tout le monde!
Posté le 10-04-2002 à 09:51:02  profilanswer
 

"Le probleme c'est que je ne sait pas du tout comment faire."
Ce n'est pas possible. Une fois compilé, ton programme n'utilise plus les noms de tes variables.
Tes variables ne sont que des emplacements mémoires.
Pour toi c'est plus lisible d'avoir a1, a2, a3 ...
Mais ton ordi il sait pas quoi en faire de ca.
Le compilateur remplace donc tout ca par une adresse mémoire (un nombre).
C'est pour cela que tu es obligé de passer par un tableau ...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°124042
darkoli
Le Petit Dinosaure Bleu
Posté le 10-04-2002 à 09:51:34  profilanswer
 

Code :
  1. double sommef(va_alist)
  2. va_dcl
  3. {
  4. va_list parametres;
  5. int nb=0;
  6. int i=0;
  7. double somme;
  8. double nombre;
  9. va_start(params);
  10. nb=(int)va_arg(paramtres);
  11. for (i=0;i<nb;i++)
  12.   {
  13.    nombre=(double)va_arg(parametres);
  14.    somme+=nombre;
  15.   }
  16. return somme;
  17. }


 
Voila normalement ca marche mais le nombre de parametre est variable mais doit être connu à la compilation.
 
somme(nb_valeur,d1,d2,d3,...,dn);

 

[jfdsdjhfuetppo]--Message édité par DarkOli--[/jfdsdjhfuetppo]

n°124057
Jar Jar
Intaigriste
Posté le 10-04-2002 à 10:14:13  profilanswer
 

mr_mat a écrit a écrit :

ca depend si il veut une taille fixe


Taille fixe ou variable, un tableau est bien plus pratique. Imagine qu'il en ait 200, avec un tableau il y accède instantanément, alors qu'avec une liste chaînée il faut 200 appels...
 
Les listes chaînées, ça date d'une époque où il fallait économiser chaque octet superflu. On ne les utilise plus guère que dans certaines conditions critiques, quand on a uniquement besoin d'accéder à l'élement qui précède ou qui suit celui sur lequel on est.

 

[jfdsdjhfuetppo]--Message édité par Jar Jar--[/jfdsdjhfuetppo]


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
mood
Publicité
Posté le 10-04-2002 à 10:14:13  profilanswer
 

n°124060
nodus
Posté le 10-04-2002 à 10:15:10  profilanswer
 

en fait pour l'instant g ecris un truc du genre
 
int tabt
 
float tab[6][tabt]
 
en fait ce serait un tableau a 6 colonnes horizontales mais pour ce qui est des verticales qui serait au choix, c possible de faire ça ?
 
Sinon je voulais vous demander, comment integrer des fonction cosinus et sinus ?
Sinon toujours pour les maths, il n'existe pas une fonction de resolution d'equations ??? un truc qui gere les equations a plusieurs inconnus au mieux....
 
Je sais que mes questions vont vous paraitre un peu bizarre mais disons que je commence totalement et que malgre mes recherches je n'ai pas trouve de reponse.
Sinon si vous connaissez un bon site ou il y a une mine d'explications, je serais content de le decouvrir.
 
Merci a tous  :hello:

n°124065
Jar Jar
Intaigriste
Posté le 10-04-2002 à 10:21:33  profilanswer
 

int tabt
 
float tab[6][tabt]
 
en fait ce serait un tableau a 6 colonnes horizontales mais pour ce qui est des verticales qui serait au choix, c possible de faire ça ?

 
Ça n'a pas la moindre chance de marcher.
 
#define LONGUEUR 6
 
int tabt;
float * tab[LONGUEUR];
 
(...) (où tabt se fait assigner une valeur)
 
for(j=0;j<LONGUEUR;j++)
     tab[j] = (float *) malloc(tabt*sizeof(float));
 
 
Sinon je voulais vous demander, comment integrer des fonction cosinus et sinus ?
 
#include <math.h>
 
 
Sinon toujours pour les maths, il n'existe pas une fonction de resolution d'equations ??? un truc qui gere les equations a plusieurs inconnus au mieux....
 
Là, c'est plus compliqué. Regarde du côté de la bibliothèque GSL, par exemple.

 

[jfdsdjhfuetppo]--Message édité par Jar Jar--[/jfdsdjhfuetppo]


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°124073
nodus
Posté le 10-04-2002 à 10:29:51  profilanswer
 

Ma question va paraitre bete mais c quoi exactement les librairies GSL ?

n°124076
El_gringo
Posté le 10-04-2002 à 10:31:07  profilanswer
 

Jar Jar a écrit a écrit :

Taille fixe ou variable, un tableau est bien plus pratique. Imagine qu'il en ait 200, avec un tableau il y accède instantanément, alors qu'avec une liste chaînée il faut 200 appels...
 
Les listes chaînées, ça date d'une époque où il fallait économiser chaque octet superflu. On ne les utilise plus guère que dans certaines conditions critiques, quand on a uniquement besoin d'accéder à l'élement qui précède ou qui suit celui sur lequel on est.  




 
Bah non, ça garde le même avantage qu'avant les listes chainées. y a des cas ou c 100 fois + performant que des tableaux:
pour de bonnes performances pour du tri de données par exemple. Ou, plus généralement, quand on à besoin de beaucoup changer l'ordre des données (passer l'élémt n°15 en 10° place, ...). ça permet de changer l'odre en modifiant juste un pointeur. Sans déplace effectivement l'élément en mémoire, d'ou de meilleurs performance.

n°124081
El_gringo
Posté le 10-04-2002 à 10:32:24  profilanswer
 

Nodus a écrit a écrit :

Ma question va paraitre bete mais c quoi exactement les librairies GSL ?  




 
y faut que tu acquière le réflex Google avant de poser des questions mon enfant :D :
http://www.google.fr/search?q=GSL& [...] ogle&meta=

n°124086
Jar Jar
Intaigriste
Posté le 10-04-2002 à 10:42:51  profilanswer
 

El_Gringo a écrit a écrit :

Bah non, ça garde le même avantage qu'avant les listes chainées. y a des cas ou c 100 fois + performant que des tableaux:
pour de bonnes performances pour du tri de données par exemple. Ou, plus généralement, quand on à besoin de beaucoup changer l'ordre des données (passer l'élémt n°15 en 10° place, ...). ça permet de changer l'odre en modifiant juste un pointeur. Sans déplace effectivement l'élément en mémoire, d'ou de meilleurs performance.


Tout à fait, il y a plein de cas où ça reste le top, d'ailleurs le noyau Linux par exemple est bourré de listes chaînées.
Cela dit, ça ne sert pas tous les jours (heureusement, je trouve que c'est la galère à implémenter).


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°124090
El_gringo
Posté le 10-04-2002 à 10:47:06  profilanswer
 

Jar Jar a écrit a écrit :

Tout à fait, il y a plein de cas où ça reste le top, d'ailleurs le noyau Linux par exemple est bourré de listes chaînées.




 
je l'sais bien, c'est moi qui l'ai écrit ! :D  
 

Jar Jar a écrit a écrit :

 
Cela dit, ça ne sert pas tous les jours (heureusement, je trouve que c'est la galère à implémenter).




 
par rapport à un bête tableau, forcément ! Ms y a + compliqué qd même !

n°124092
nodus
Posté le 10-04-2002 à 10:50:39  profilanswer
 

C vrai que c assez dur pour se decider comment faire mon tableau, en fait je cherche a faire un programme de resolution torsorielle pour ceux qui connaissent. Le programme comporte beaucoup de math, j'agis beaucoup sur les valeurs. J'ai pense a cree un deuxieme tableau avec les valeurs modifies pour avoir une plage de calcul.
Pour tout vous avouez on peut dire que c'est mon premier programme dans l'impitoyable monde du C.

n°124103
nodus
Posté le 10-04-2002 à 11:20:34  profilanswer
 

Jar Jar a écrit a écrit :

[i]int tabt
float * tab[LONGUEUR];
 
(...) (où tabt se fait assigner une valeur)
 
for(j=0;j<LONGUEUR;j++)
     tab[j] = (float *) malloc(tabt*sizeof(float));
 




 
je ne comprends tres bien les trucs en rouge, pourquoi mettre un " * " dans le premier ?
 
que fait on exactement dans le deuxieme ?

n°124141
Jar Jar
Intaigriste
Posté le 10-04-2002 à 13:27:06  profilanswer
 

J'alloue un tableau de 6 pointeurs vers des float.
Ensuite, avec malloc, j'alloue un tableau, dynamique cette fois, de longueur tabt, pour chacun de ces pointeurs.
 
Ensuite, en appelant tab[j][k], tu accèdes aux éléments du tableau final.
 
Documente-toi sur les fonctions malloc et free, c'est très important de comprendre comment ça fonctionne.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°124153
nodus
Posté le 10-04-2002 à 13:52:11  profilanswer
 

merci de ton aide :hello:

n°124319
nodus
Posté le 10-04-2002 à 17:12:13  profilanswer
 

Je voulais savoir l'ensemble de librairies gsl je fais comment pour l'integrer dans visual c++ 6.0 ?

n°124330
El_gringo
Posté le 10-04-2002 à 17:19:45  profilanswer
 

Nodus a écrit a écrit :

Je voulais savoir l'ensemble de librairies gsl je fais comment pour l'integrer dans visual c++ 6.0 ?  




 
t'as téléchargé quoi ?
dans ce que t'as téléchargé, y a (au moins) un fichier.lib
et (au moins) un fichier.h, non ?

n°124349
nodus
Posté le 10-04-2002 à 17:32:28  profilanswer
 

c'est tout un dossier avec une trenteine de sous dossiers, des fichiers *.h, *.c, *.in... les sous dossiers sont composes des memes fichiers avec une majorite de fichiers *.c.

n°124354
El_gringo
Posté le 10-04-2002 à 17:37:11  profilanswer
 

Nodus a écrit a écrit :

c'est tout un dossier avec une trenteine de sous dossiers, des fichiers *.h, *.c, *.in... les sous dossiers sont composes des memes fichiers avec une majorite de fichiers *.c.  




 
ha, ça doit être parce que cette librairie est open source (tout le monde peut y ajouter son petit grain de sable ou son moellon).
à mon avis t'as pas téléchargé le bon truc. essaye de cherche si t'as pas une version binaire (compilée; Binary en anglais).
Après, quand t'auras ta (ou tes) dll, ton (ou tes .h), et ton (ou tes) .lib, reviens !:D

n°124367
Jar Jar
Intaigriste
Posté le 10-04-2002 à 18:16:10  profilanswer
 

Euh, la GSL, je ne sais pas si elle compile avec Visual C++, par contre...


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°124499
nodus
Posté le 10-04-2002 à 23:22:58  profilanswer
 

Sisi j'ai trouve une autre archive avec une installation pour vc++6 ça marche nikel.
 
Par contre je cherche a faire un truc du type:
 
appuyer sur une touche pour quitter
 
je pense qu'il faut utiliser getchar mais je ne sais pas comment.
Personne ne pourrait m'aider sur ça ?
Merci :hello:

n°124547
nodus
Posté le 11-04-2002 à 09:56:18  profilanswer
 

up

n°124919
nodus
Posté le 11-04-2002 à 20:16:52  profilanswer
 

:bounce:

mood
Publicité
Posté le   profilanswer
 


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

  [C] questions diverses

 

Sujets relatifs
[ MCD ] Questions sur les relationsmysql sur free, 2 questions
[C++ Builder 5] 3 questions faciles (sauf pour moi :D )[3D] Deux petites questions
[PERL] qq questions sur le perlPosez vos questions sur .net sur DotNet Center
[java] 2 petites questions sur la gestion des flux !![ C ] deux trois questions de newbie...
[CNAM / informatique / EAD] questions à qui le font / l'ont faitDiverses questions hypra importantes en VB
Plus de sujets relatifs à : [C] questions diverses


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