Questions diverses sur les structures de données en C.
Page 1 sur 1
Questions diverses sur les structures de données en C.
Pour info mon sujet concerne le cours6.
Il y a certaines choses que je n'ai pas compris sur le corrigé des exos du td6,
Alors tout d'abord : exo2, l12 : gets(p1.nom) que signifie les gets, est ce une erreur?
l26 : idem pour "puts"
l27 : idem pour "%.2f"
Ensuite la question 1 de l'exercice 5 n'est pas corrigée, quelqu’un aurait une idée?
l12 (exo5) : "%ld"
Question un peu différente : exo6 question3 : l4 : strcmp(p1.nom, p2.nom) == 0 //cette instruction est elle vraiment nécessaire?
Pas de correction pour les exos 7 et 8 , si une âme charitable passe par là
Vla!
Il y a certaines choses que je n'ai pas compris sur le corrigé des exos du td6,
Alors tout d'abord : exo2, l12 : gets(p1.nom) que signifie les gets, est ce une erreur?
l26 : idem pour "puts"
l27 : idem pour "%.2f"
Ensuite la question 1 de l'exercice 5 n'est pas corrigée, quelqu’un aurait une idée?
l12 (exo5) : "%ld"
Question un peu différente : exo6 question3 : l4 : strcmp(p1.nom, p2.nom) == 0 //cette instruction est elle vraiment nécessaire?
Pas de correction pour les exos 7 et 8 , si une âme charitable passe par là
Vla!
Invité- Invité
Re: Questions diverses sur les structures de données en C.
Alors :
VOila, avec un peu de recherche, tu aurais tout trouvé ^^
Pour les exos 7 et 8, je n'ai malheureusement pas le temps pour le moment. Plus tard si tu veux...
- "gets(p1.nom)" => Get String => fonction permettant de demander une chaine de caractere afin de la mettre dans un tableau de caractere(ici nom[21]), un genre de scanf, plus d'info ici.
- "puts" => put string => Fonction similaire a printf mais rajoute un retour a la ligne (\n) ala fin, plus d'info ici.
- "%.2f" => Similaire a "%f" et permet donc d'afficher un float dans un printf mais arrondi au centième.
- Ta structure planete est définie comme ceci:
- Code:
struct planete
{
char nom[21];
float densite;
float distance;
int nbStatellites;
} ;
Connaissant la taille que prend en mémoire un char, un float et un int, tu peux facilement calculer la place que prend la déclaration d'une structure planete en mémoire.
/!\ La définition d’un type structuré NE RESERVE PAS d’espace mémoire. Elle
déclare un nouveau type. - "%ld" => Permet d'afficher un nombre de type "long" dans un printf, plus d'info ici.
VOila, avec un peu de recherche, tu aurais tout trouvé ^^
Pour les exos 7 et 8, je n'ai malheureusement pas le temps pour le moment. Plus tard si tu veux...
Re: Questions diverses sur les structures de données en C.
TD 6
Correction de l'exercice 7:
- Code:
struct date saisirDate()
{
struct date maDate;
printf("Veuillez entrer un jour:\n");
scanf("%d", &maDate.jour);
printf("Veuillez entrer un mois:\n");
scanf("%s", maDate.mois);
printf("Veuillez entrer une annee:");
scanf("%d", &maDate.annee);
return maDate;
}
- Code:
struct etudiant saisirEtudiant()
{
struct etudiant monEtudiant
printf("Veuillez entrer une nom:\n");
scanf("%s", monEtudiant.nom);
printf("Veuillez entrer une prenom:\n");
scanf("%s", monEtudiant.prenom);
printf("Veuillez entrer une annee:\n");
scanf("%d", &monEtudiant.datNaiss.annee);
printf("Veuillez entrer un mois:\n");
scanf("%s", monEtudiant.datNaiss.mois);
printf("Veuillez entrer un jour:\n");
scanf("%d", &monEtudiant.datNaiss.jour);
return monEtudiant;
}
- Code:
void afficherEtudiant(struct etaudiant monEtudiant)
{
printf("Nom: %s\n", monEtudiant.nom);
printf("Prenom: %s\n", monEtudiant.prenom);
printf("Date de naissance: %d/%s/%d\n", monEtudiant.datNaiss.jour, monEtudiant.datNaiss.mois, monEtudiant.datNaiss.annee);
}
- Ce programme utilise évidement les fonctions précédemment codées.
- Code:
#include <stdio.h>
struct date {
int jour;
char mois[10];
int annee;
} ;
struct etudiant
{
char nom[20];
char prenom[20];
struct date datNaiss;
} ;
int main(void)
{
struct etudiant tabEtudiant[4];
int i;
for(i=0; i<5; i++)
{
tabEtudiant[i]=saisirEtudiant():
}
return 0;
}
- Idem que le précédent mais avec l'affichage.
- Code:
#include <stdio.h>
struct date {
int jour;
char mois[10];
int annee;
} ;
struct etudiant
{
char nom[20];
char prenom[20];
struct date datNaiss;
} ;
int main(void)
{
struct etudiant tabEtudiant[4];
int i;
for(i=0; i<5; i++) //Saisi
{
tabEtudiant[i]=saisirEtudiant():
}
for(i=0; i<5; i+) //Affichage
{
afficherEtudiant(tabEtudiant[i]);
}
return 0;
}
Correction de l'exercice 8:
- Code:
void modifiePlanete(struct planete *maPlanete, float dens, int nSat)
{
maPlanete->densite = maPlanete->densite * dens;
maPlanete->nbSatellite = maPlanete->nbSatellite + nSat;
}
- Pas tres bien compris la question, je suppose qu'il faut ecrire un programme qui modifie la planete Mercure donc juste faire un appelle de fonction.
- Code:
#include <stdio.h>
struct planete{
char nom[20];
float densite;
float distance;
int nbSatellite;
}
void modifiePlanete(struct planete *maPlanete, float dens, int nSat)
{
maPlanete->densite = maPlanete->densite * dens;
maPlanete->nbSatellite = maPlanete->nbSatellite + nSat;
}
int main(void)
{
struct planete mercure;
//Ici on lui donne des valeurs
modifiePlanete(&mercure, 1.2, 3); //Ici on la modifie
return 0;
}
- Idem que précédent mais avec l'affichage.
- Code:
#include <stdio.h>
#include <string.h>
struct planete{
char nom[20];
float densite;
float distance;
int nbSatellite;
}
void modifiePlanete(struct planete *maPlanete, float dens, int nSat)
{
maPlanete->densite = maPlanete->densite * dens;
maPlanete->nbSatellite = maPlanete->nbSatellite + nSat;
}
int main(void)
{
struct planete mercure;
strcpy(mercure.nom, "Mercure"); //Ici on lui donne des valeurs(merci Wikipedia)
mercure.densite=5427;
mercure.distance=0,387098;
mercure.nbStellite=0;
modifiePlanete(&mercure, 1.2, 3); //Ici on la modifie
printf("Nom: %s\n", mercure.nom); //Ici on l'affiche
printf("Densite: %f\n", mercure.densite);
printf("Distance avec l'etoile: %f\n", mercure.distance);
printf("Nombre de satellite: %d\n", mercure.nbStaellite);
return 0;
}
VOila si vous avez des questions ou des remarques sur les fautes(oui il doit y en avoir -_-'), n'hésitez pas !
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|