OVH Cloud OVH Cloud

Affichage et saisie de pointeur de struct

5 réponses
Avatar
Mousta2016
Bonjour, je voudrai savoir comment saisir et afficher l'élément E:
struct ensemble{
int m_max;
int m_cardinal;
int * m_éléments;
};
typedef struct ensemble ENSEMBLE;
ENSEMBLE *E;
Merci cordialement

5 réponses

Avatar
espie
In article ,
Mousta2016 wrote:
Bonjour, je voudrai savoir comment saisir et afficher l'élément E:
struct ensemble{
int m_max;
int m_cardinal;
int * m_éléments;
};
typedef struct ensemble ENSEMBLE;
ENSEMBLE *E;
Merci cordialement

Deja, les accents dans les noms de variable, ca va poser un souci.
Ensuite, je ne sais pas si tu as decide tout seul de mettre des
typedefs en MAJUSCULE, ou si c'est dans ton cours, mais c'est
totalement loufoque... on reserve les majuscules pour les macros.
Pour finir, depuis la derniere fois, sais-tu lire proprement
un nombre sur l'entree standard ?...
parce que je soupconne qu'on te demande de:
- lire la taille de l'ensemble
- puis chacun des elements
- et de trouver le max.
En gros, des fonctions:
void saisis_ensemble(struct ensemble *e);
int trouve_max(struct ensemble *e);
void affiche_ensemble(const struct ensemble *e);
Avatar
Lucas Levrel
Le 12 mars 2018, à 06:32, Marc Espie a écrit :
In article ,
Mousta2016 wrote:
Bonjour, je voudrai savoir comment saisir et afficher l'élément E:
struct ensemble{
int m_max;
int m_cardinal;
int * m_éléments;
};
typedef struct ensemble ENSEMBLE;
ENSEMBLE *E;
Merci cordialement

Deja, les accents dans les noms de variable, ca va poser un souci.
Ensuite, je ne sais pas si tu as decide tout seul de mettre des
typedefs en MAJUSCULE, ou si c'est dans ton cours, mais c'est
totalement loufoque... on reserve les majuscules pour les macros.
Pour finir, depuis la derniere fois, sais-tu lire proprement
un nombre sur l'entree standard ?...

À mon avis ce n'est pas le même. L'autre avait essayé d'implémenter la
saisie et l'affichage... Ça sent plutôt le prof qui a fait un mode
d'emploi de la demande d'aide sur Usenet, avec abonnement à giganews,
comment obfusquer son adresse mail, formule de politesse... Il a juste
oublié de dire qu'il fallait suivre le fil, répondre aux questions et dire
merci !
Faudrait voir sur Stackoverflow s'il n'y a pas des questions corrélées :-)
--
LL
Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
Avatar
Pascal J. Bourguignon
(Marc Espie) writes:
In article ,
Mousta2016 wrote:
Bonjour, je voudrai savoir comment saisir et afficher l'élément E:
struct ensemble{
int m_max;
int m_cardinal;
int * m_éléments;
};
typedef struct ensemble ENSEMBLE;
ENSEMBLE *E;
Merci cordialement

Deja, les accents dans les noms de variable, ca va poser un souci.

IIRC, c'est possible en C11, mais il va falloir les écrire comme ça:
#include <stdlib.h>
#include <sysexits.h>
#include <stdio.h>
struct ensemble {
int m_max;
int m_cardinal;
int * m_u00e9lu00e9ments;
};
typedef struct ensemble ENSEMBLE;
ENSEMBLE *E;
int f(ENSEMBLE* e){
if(e->m_max<1){
return 0; }
e->m_cardinal=1;
e->m_u00e9lu00e9ments[0]B;
return 1; }
void* check_memory(void* block){
if(0==block){
fprintf(stderr,"Out of memoryn");
exit(EX_OSERR);}
return block;}
int main(){
E=check_memory(malloc(sizeof(E)));
E->m_max;
E->m_cardinal=0;
E->m_u00e9lu00e9ments=check_memory(malloc(sizeof(E->m_u00e9lu00e9ments[0])*E->m_max));
return (0==f(E))
? EX_SOFTWARE
: EX_OK;}
Rien n'empêche d'utiliser un éditeur qui affiche les séquences uXXXX
comme leur caractère unicode, et vice-versa, qui encode les caractères
hors du jeu ASCII en utilisant ces séquences.
Ensuite, je ne sais pas si tu as decide tout seul de mettre des
typedefs en MAJUSCULE, ou si c'est dans ton cours, mais c'est
totalement loufoque... on reserve les majuscules pour les macros.
Pour finir, depuis la derniere fois, sais-tu lire proprement
un nombre sur l'entree standard ?...
parce que je soupconne qu'on te demande de:

Non, tu soupçonnes.
- lire la taille de l'ensemble
- puis chacun des elements
- et de trouver le max.
En gros, des fonctions:
void saisis_ensemble(struct ensemble *e);
int trouve_max(struct ensemble *e);
void affiche_ensemble(const struct ensemble *e);

--
__Pascal J. Bourguignon
http://www.informatimago.com
Avatar
mousta2016
Le lundi 12 Mars 2018 à 07:32 par espie :
In article
Mousta2016
Bonjour, je voudrai savoir comment saisir et afficher l'élément
E:
struct ensemble{
int m_max;
int m_cardinal;
int * m_éléments;
};
typedef struct ensemble ENSEMBLE;
ENSEMBLE *E;
Merci cordialement
Deja, les accents dans les noms de variable, ca va poser un souci.
Ensuite, je ne sais pas si tu as decide tout seul de mettre des
typedefs en MAJUSCULE, ou si c'est dans ton cours, mais c'est
totalement loufoque... on reserve les majuscules pour les macros.
Pour finir, depuis la derniere fois, sais-tu lire proprement
un nombre sur l'entree standard ?...
parce que je soupconne qu'on te demande de:
- lire la taille de l'ensemble
- puis chacun des elements
- et de trouver le max.
En gros, des fonctions:
void saisis_ensemble(struct ensemble *e);
int trouve_max(struct ensemble *e);
void affiche_ensemble(const struct ensemble *e);
Merci espi votre suggestion très pertinente
Avatar
espie
In article ,
Pascal J. Bourguignon wrote:
Mousta2016 writes:
Bonjour, je voudrai savoir comment saisir et afficher l'élément E:
struct ensemble{
int m_max;
int m_cardinal;
int * m_éléments;
};
typedef struct ensemble ENSEMBLE;
ENSEMBLE *E;
Merci cordialement

Le langage C ne fourni pas d'opération de sérialisation et de
désérialisation automatique. Alors il faut le faire soi-même.
En particulier, il faut décider sur un format de fichier, c'est à dire
une syntaxe.
Comme tu utilises les mots "saisir" et "afficher", on peut supposer que
tu veux définir un format lisible par un être humain.
Comme il s'agit d'une structure de donnée appelée "ensemble", on peut
supposer qu'il serait approprié d'utiliser la syntaxe des ensembles
mathématiques:
ensemble ::= '{' [ elements ] '}' .
elements ::= element [ ',' elements ] .
Par exemple: {1,2,3}

[ snip plein de code ]
Avoue Pascal, t'avais du temps a perdre, hein ?
Je doute que ca soit exactement la reponse attendue... ;)