Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

pointeurs struct tableau c++

2 réponses
Avatar
aquatou
Bonjour,

J'ai fait une fonction que j'aimerais subdiviser pour pouvoir réutiliser certaines parties. J'ai un struct qui est au départ avec plusieurs éléments. Je veux faire un tableau et que si je passe d'une fonction à une autre l'information se cumule dans la bonne case. Donc je vais faire ça en plus simple... Disons que je dois rentrer une séquence d'ADN. Mon programme fait déjà tout bien, mais je veux séparer cette fonction de celle qui demande à l'utilisateur de rentrer la longueur. Je sais que je dois utiliser les pointeurs mais je n'y arrive pas. Qu'est-ce que je dois mettre dans l'entête de la fonction ? J'ai essayé ceci mais ça marche pas..

void saisirSequence (){
*unGene.sequence= " ";
//je vous épargne les détails sur le reste de la fonction
cout <<"Entrez la séquence" <<endl;
cin>> *unGene.sequence;

et ensuite quand je l'appelle dans le main qu'est-ce que je mets dans les parenthèses ?

Pouvez-vous m'aider ?

2 réponses

Avatar
xavier
aquatou wrote:

void saisirSequence (){



Votre prototype est incorrect, il devrait être
void saisirSequence (void){

et ensuite quand je l'appelle dans le main qu'est-ce que je mets dans les
parenthèses ?



Ben rien, puisque la fonction ne prend pas de paramêtre, et remplit une
variable gobale.

--
XAv
In your pomp and all your glory you're a poorer man than me,
as you lick the boots of death born out of fear.
(Jethro Tull)
Avatar
Cyrille Lefevre
Le 27/11/2010 03:01, aquatou a écrit :
Bonjour,

J'ai fait une fonction que j'aimerais subdiviser pour pouvoir réutili ser
certaines parties. J'ai un struct qui est au départ avec plusieurs é léments. Je
veux faire un tableau et que si je passe d'une fonction à une autre
l'information se cumule dans la bonne case. Donc je vais faire ça en plus
simple... Disons que je dois rentrer une séquence d'ADN. Mon programm e fait déjà
tout bien, mais je veux séparer cette fonction de celle qui demande à
l'utilisateur de rentrer la longueur. Je sais que je dois utiliser les pointeurs
mais je n'y arrive pas. Qu'est-ce que je dois mettre dans l'entête de la
fonction ? J'ai essayé ceci mais ça marche pas..

void saisirSequence (){
*unGene.sequence= " ";
//je vous épargne les
détails sur le reste de la fonction
cout <<"Entrez la séquence" <<endl;
cin>> *unGene.sequence;

et ensuite quand je l'appelle dans le main qu'est-ce que je mets dans l es
parenthèses ?

Pouvez-vous m'aider ?



Bonjour,

en C, ça donne :

void saisirSequence (struct nomstructure *unGene) { /* note l'* */
*unGene... } /* note l'* */

dans le main() :
struct nomstructure unGene; /* pas d'* */
saisirSequence(&unGene); /* note le & */

en C++, il doit être possible de faire qqc comme ça :

void saisirSequence (struct nomstructure &unGene) { /* note le & */
unGene... } /* note qu'il n'y a pas d'* */

dans le main() :
struct nomstructure unGene; /* pas d'* */
saisirSequence(unGene); /* pas de & */

alternative du main() :
allocation dans le tas plutôt que la pile si je ne me trompe...
struct nomstructure *unGene; /* note l'* */
unGene = calloc(1, sizeof (struct nomstructure));
...

PS : le c++ que j'ai pu apprendre remonte à trop loin pour que je
puisse t'affirmer que ce que je viens de dire est valide ou non,
mais c'est très certainement une piste...

toutefois, en C++, la logique serait d'avoir une classe avec un
constructeur, un destructeur, des méthodes et plein de choses
comme ça, non ?

http://www.cplusplus.com/doc/tutorial/

Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.