Programme 1:
#include <stdio.h>
#include <stdlib.h>
typedef struct {int x;int y;}tPoint;
tPoint p1,p2={0,300},p3;
int main(){
p1.x=150;
p1.y=103;
printf("Les coordonnees du point p1 sont (%d,%d)\n",p1.x,p1.y);
printf("Les coordonnees du point p2 sont (%d,%d)\n",p2.x,p2.y);
printf("Saisir les coordonnees du point p3\n");
scanf("%d %d",&(p3.x),&(p3.y));
printf("Les coordonnees du point p3 sont donc (%d,%d)\n",p3.x,p3.y);
return 0;
}
Programme 2:
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int jour;
int mois;
int annee;
}tDate;
typedef struct {
int id;
char nom[21];
tDate ddn;
float note[3];
float moy;
}tEtudiant;
tEtudiant student;
void getInfoEtudiant(tEtudiant *etudiant);
void affichInfoEtudiant(tEtudiant etudiant);
int main(){
getInfoEtudiant(&student);
affichInfoEtudiant(student);
//getListEtudiant()
//affichListEtudiant()
//getInfoEtudFromList()
//bestStudent()
return 0;
}
void getInfoEtudiant(tEtudiant *etudiant){
int i;
printf("\nIdentifiant:");
scanf("%d",&(*etudiant).id);
printf("Nom:");
scanf("%s",(*etudiant).nom);
printf("jour de naissance:");
scanf("%d",&(*etudiant).ddn.jour);
printf("mois de naissance:");
scanf("%d",&(*etudiant).ddn.mois);
printf("annee de naissance:");
scanf("%d",&(*etudiant).ddn.annee);
(*etudiant).moy=0;
for(i=0;i<3;i++){
printf("Note%d:",i+1);
scanf("%f",&((*etudiant).note[i]));
(*etudiant).moy+=(*etudiant).note[i]/3;
}
}
void affichInfoEtudiant(tEtudiant etudiant){
int i;
printf("\nIdentifiant:%d",etudiant.id);
printf("\nNom:%s",etudiant.nom);
printf("\njour de naissance:%d",etudiant.ddn.jour);
printf("\nmois de naissance:%d",etudiant.ddn.mois);
printf("\nannee de naissance:%d",etudiant.ddn.annee);
for(i=0;i<3;i++){
printf("\nNote%d:%.2f",i+1,(etudiant.note[i]));
}
printf("\nMoyenne:%.2f",etudiant.moy);
}
Programme 3:
#include <stdio.h>
#include <stdlib.h>
/*variante1:declaration de structure seulement (ajouter / au debut pour de-commenter)
struct tPoint{int x;int y;}; //
//puis instanciation
struct tPoint p1,p2={0,300},p3; //Enlever struct genere une erreur en C
//*/
/*variante2:declaration de structure et en meme temps instanciation de p1 et p2 (idem)
struct tPoint{int x;int y;} p1,p2={0,300};
//puis instanciation de p3
struct tPoint p3;
//*/
/*variante3:declaration de structure anonyme et en meme temps instanciation des point (idem)
struct {int x;int y;} p1,p2={0,300},p3;
//*/
/*variante4:declaration en associant un nom de type a une structure non anonyme (idem)
typedef struct stPoint{int x;int y;}tPoint;
//puis instanciation avec 2 possibilites
tPoint p1,p2={0,300}; //on n'a pas besoin de struct car tpoint est un alias de struct stPoint
struct stPoint p3; //ici on en a
//*/
//Je vous conseille de maitriser au moin cette derniere version
//*variante5:declaration en associant un nom de type a une structure anonyme (enlever / au debut pour commenter)
typedef struct {int x;int y;}tPoint;
//puis instanciation
tPoint p1,p2={0,300},p3;
//*/
int main(){
p1.x=150;p1.y=103;
printf("Les coordonnees du point p1 sont (%d,%d)\n",p1.x,p1.y);
printf("Les coordonnees du point p2 sont (%d,%d)\n",p2.x,p2.y);
printf("Saisir les coordonnees du point p3\n");
scanf("%d %d",&(p3.x),&(p3.y));
printf("Les coordonnees du point p3 sont donc (%d,%d)\n",p3.x,p3.y);
return 0;
}
Programme 4:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct {
char titre_livre[16];
char auteur[16];
char editeur[16];
int annee;
int nbr_page;
} tRef;
tRef listRef[50];
void remplir(int n,tRef listRef[50]),
affiche(int n,tRef listRef[50]),
triRef(int n,tRef listRef[n],int choix);
int main(){
int n,choix;
printf("Donnez le nombre de references biblio <50");
scanf("%d",&n);
remplir(n,listRef);
affiche(n,listRef);
do{
printf("\nEntrer : \n 1 pour le tri par titre"
"\n 2 pour le tri par auteur"
"\n 3 pour le tri par editeur"
"\n 4 pour le tri par annee"
"\n 5 pour le tri par nbr de page "
"\n 6 quitter "
"\n votre choix --------------------------->");
scanf("%d",&choix);
if(choix!=6){
triRef(n,listRef,choix);
affiche(n,listRef);
}
}while(choix!=6);
return 0;
}
void remplir(int n,tRef listRef[50]){
int i;
printf("\n Introduire des chaines de caracteres <15 et sans espace \n");
for(i=0;i<n;i++){
printf("Donnez le titre N°%d:",i+1);
scanf("%s",listRef[i].titre_livre);
printf("donnez le nom de l'auteur ");
scanf("%s",listRef[i].auteur);
printf("donnez le nom de l'editeur ");
scanf("%s",listRef[i].editeur);
printf("donnez l'annee de publication ");
scanf("%d",&(listRef[i].annee));
printf("donnez le nbr de page ");
scanf("%d",&(listRef[i].nbr_page));
}
}
void affiche(int n, tRef listRef[50]){
int i;
printf("\n____________________________________________________________________");
printf("\n|Titre |Auteur |Editeur |Annee |Nbr pages |");
printf("\n--------------------------------------------------------------------");
for(i=0;i<n;i++){
printf("\n|%15s|",listRef[i].titre_livre);
printf("%15s|",listRef[i].auteur);
printf("%15s|",listRef[i].editeur);
printf("%5d |",listRef[i].annee);
printf("%6d |",listRef[i].nbr_page);
}
printf("\n--------------------------------------------------------------------");
}
void triRef(int n,tRef listRef[50],int choix){
int i,j;
tRef tmp;
switch (choix){
case 1:
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(strcmp(listRef[i].titre_livre,listRef[j].titre_livre)>0){
tmp=listRef[i];listRef[i]=listRef[j];listRef[j]=tmp;
}
}
}
break;
case 2:
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(strcmp(listRef[i].auteur,listRef[j].auteur)>0){
tmp=listRef[i];listRef[i]=listRef[j];listRef[j]=tmp;
}
}
}
break;
case 3:
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(strcmp(listRef[i].editeur,listRef[j].editeur)>0){
tmp=listRef[i];listRef[i]=listRef[j];listRef[j]=tmp;
}
}
}
break;
case 4:
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if (listRef[i].annee>listRef[j].annee){
tmp=listRef[i];listRef[i]=listRef[j];listRef[j]=tmp;
}
}
}
break;
case 5:
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(listRef[i].nbr_page>listRef[j].nbr_page){
tmp=listRef[i];listRef[i]=listRef[j];listRef[j]=tmp;
}
}
}
break;
default:printf("le choix n'est pas valide");
}
}
Une autre version de triRef a verifier.
void permutRef(tRef *ref1,tRef *ref2){
tRef tmpRef;
tmpRef=*ref1;*ref1=*ref2;*ref2=tmpRef;
}
void triRefV2(int n,tRef listRef[50],int choix){
int i,j;
if((choix>5)||(choix<1)){printf("le choix n'est pas valide");}
else{
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
switch (choix){
case 1:
if(strcmp(listRef[i].titre_livre,listRef[j].titre_livre)>0){permutRef(&listRef[i],&listRef[j]);}
break;
case 2:
if(strcmp(listRef[i].auteur,listRef[j].auteur)>0){permutRef(&listRef[i],&listRef[j]);}
break;
case 3:
if(strcmp(listRef[i].editeur,listRef[j].editeur)>0){permutRef(&listRef[i],&listRef[j]);}
break;
case 4:
if (listRef[i].annee>listRef[j].annee){permutRef(&listRef[i],&listRef[j]);}
break;
case 5:
if(listRef[i].nbr_page>listRef[j].nbr_page){permutRef(&listRef[i],&listRef[j]);}
}
}
}
}
}
#include <stdio.h>
#include <stdlib.h>
typedef struct {int x;int y;}tPoint;
tPoint p1,p2={0,300},p3;
int main(){
p1.x=150;
p1.y=103;
printf("Les coordonnees du point p1 sont (%d,%d)\n",p1.x,p1.y);
printf("Les coordonnees du point p2 sont (%d,%d)\n",p2.x,p2.y);
printf("Saisir les coordonnees du point p3\n");
scanf("%d %d",&(p3.x),&(p3.y));
printf("Les coordonnees du point p3 sont donc (%d,%d)\n",p3.x,p3.y);
return 0;
}
Programme 2:
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int jour;
int mois;
int annee;
}tDate;
typedef struct {
int id;
char nom[21];
tDate ddn;
float note[3];
float moy;
}tEtudiant;
tEtudiant student;
void getInfoEtudiant(tEtudiant *etudiant);
void affichInfoEtudiant(tEtudiant etudiant);
int main(){
getInfoEtudiant(&student);
affichInfoEtudiant(student);
//getListEtudiant()
//affichListEtudiant()
//getInfoEtudFromList()
//bestStudent()
return 0;
}
void getInfoEtudiant(tEtudiant *etudiant){
int i;
printf("\nIdentifiant:");
scanf("%d",&(*etudiant).id);
printf("Nom:");
scanf("%s",(*etudiant).nom);
printf("jour de naissance:");
scanf("%d",&(*etudiant).ddn.jour);
printf("mois de naissance:");
scanf("%d",&(*etudiant).ddn.mois);
printf("annee de naissance:");
scanf("%d",&(*etudiant).ddn.annee);
(*etudiant).moy=0;
for(i=0;i<3;i++){
printf("Note%d:",i+1);
scanf("%f",&((*etudiant).note[i]));
(*etudiant).moy+=(*etudiant).note[i]/3;
}
}
void affichInfoEtudiant(tEtudiant etudiant){
int i;
printf("\nIdentifiant:%d",etudiant.id);
printf("\nNom:%s",etudiant.nom);
printf("\njour de naissance:%d",etudiant.ddn.jour);
printf("\nmois de naissance:%d",etudiant.ddn.mois);
printf("\nannee de naissance:%d",etudiant.ddn.annee);
for(i=0;i<3;i++){
printf("\nNote%d:%.2f",i+1,(etudiant.note[i]));
}
printf("\nMoyenne:%.2f",etudiant.moy);
}
Programme 3:
#include <stdio.h>
#include <stdlib.h>
/*variante1:declaration de structure seulement (ajouter / au debut pour de-commenter)
struct tPoint{int x;int y;}; //
//puis instanciation
struct tPoint p1,p2={0,300},p3; //Enlever struct genere une erreur en C
//*/
/*variante2:declaration de structure et en meme temps instanciation de p1 et p2 (idem)
struct tPoint{int x;int y;} p1,p2={0,300};
//puis instanciation de p3
struct tPoint p3;
//*/
/*variante3:declaration de structure anonyme et en meme temps instanciation des point (idem)
struct {int x;int y;} p1,p2={0,300},p3;
//*/
/*variante4:declaration en associant un nom de type a une structure non anonyme (idem)
typedef struct stPoint{int x;int y;}tPoint;
//puis instanciation avec 2 possibilites
tPoint p1,p2={0,300}; //on n'a pas besoin de struct car tpoint est un alias de struct stPoint
struct stPoint p3; //ici on en a
//*/
//Je vous conseille de maitriser au moin cette derniere version
//*variante5:declaration en associant un nom de type a une structure anonyme (enlever / au debut pour commenter)
typedef struct {int x;int y;}tPoint;
//puis instanciation
tPoint p1,p2={0,300},p3;
//*/
int main(){
p1.x=150;p1.y=103;
printf("Les coordonnees du point p1 sont (%d,%d)\n",p1.x,p1.y);
printf("Les coordonnees du point p2 sont (%d,%d)\n",p2.x,p2.y);
printf("Saisir les coordonnees du point p3\n");
scanf("%d %d",&(p3.x),&(p3.y));
printf("Les coordonnees du point p3 sont donc (%d,%d)\n",p3.x,p3.y);
return 0;
}
Programme 4:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct {
char titre_livre[16];
char auteur[16];
char editeur[16];
int annee;
int nbr_page;
} tRef;
tRef listRef[50];
void remplir(int n,tRef listRef[50]),
affiche(int n,tRef listRef[50]),
triRef(int n,tRef listRef[n],int choix);
int main(){
int n,choix;
printf("Donnez le nombre de references biblio <50");
scanf("%d",&n);
remplir(n,listRef);
affiche(n,listRef);
do{
printf("\nEntrer : \n 1 pour le tri par titre"
"\n 2 pour le tri par auteur"
"\n 3 pour le tri par editeur"
"\n 4 pour le tri par annee"
"\n 5 pour le tri par nbr de page "
"\n 6 quitter "
"\n votre choix --------------------------->");
scanf("%d",&choix);
if(choix!=6){
triRef(n,listRef,choix);
affiche(n,listRef);
}
}while(choix!=6);
return 0;
}
void remplir(int n,tRef listRef[50]){
int i;
printf("\n Introduire des chaines de caracteres <15 et sans espace \n");
for(i=0;i<n;i++){
printf("Donnez le titre N°%d:",i+1);
scanf("%s",listRef[i].titre_livre);
printf("donnez le nom de l'auteur ");
scanf("%s",listRef[i].auteur);
printf("donnez le nom de l'editeur ");
scanf("%s",listRef[i].editeur);
printf("donnez l'annee de publication ");
scanf("%d",&(listRef[i].annee));
printf("donnez le nbr de page ");
scanf("%d",&(listRef[i].nbr_page));
}
}
void affiche(int n, tRef listRef[50]){
int i;
printf("\n____________________________________________________________________");
printf("\n|Titre |Auteur |Editeur |Annee |Nbr pages |");
printf("\n--------------------------------------------------------------------");
for(i=0;i<n;i++){
printf("\n|%15s|",listRef[i].titre_livre);
printf("%15s|",listRef[i].auteur);
printf("%15s|",listRef[i].editeur);
printf("%5d |",listRef[i].annee);
printf("%6d |",listRef[i].nbr_page);
}
printf("\n--------------------------------------------------------------------");
}
void triRef(int n,tRef listRef[50],int choix){
int i,j;
tRef tmp;
switch (choix){
case 1:
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(strcmp(listRef[i].titre_livre,listRef[j].titre_livre)>0){
tmp=listRef[i];listRef[i]=listRef[j];listRef[j]=tmp;
}
}
}
break;
case 2:
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(strcmp(listRef[i].auteur,listRef[j].auteur)>0){
tmp=listRef[i];listRef[i]=listRef[j];listRef[j]=tmp;
}
}
}
break;
case 3:
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(strcmp(listRef[i].editeur,listRef[j].editeur)>0){
tmp=listRef[i];listRef[i]=listRef[j];listRef[j]=tmp;
}
}
}
break;
case 4:
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if (listRef[i].annee>listRef[j].annee){
tmp=listRef[i];listRef[i]=listRef[j];listRef[j]=tmp;
}
}
}
break;
case 5:
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(listRef[i].nbr_page>listRef[j].nbr_page){
tmp=listRef[i];listRef[i]=listRef[j];listRef[j]=tmp;
}
}
}
break;
default:printf("le choix n'est pas valide");
}
}
Une autre version de triRef a verifier.
void permutRef(tRef *ref1,tRef *ref2){
tRef tmpRef;
tmpRef=*ref1;*ref1=*ref2;*ref2=tmpRef;
}
void triRefV2(int n,tRef listRef[50],int choix){
int i,j;
if((choix>5)||(choix<1)){printf("le choix n'est pas valide");}
else{
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
switch (choix){
case 1:
if(strcmp(listRef[i].titre_livre,listRef[j].titre_livre)>0){permutRef(&listRef[i],&listRef[j]);}
break;
case 2:
if(strcmp(listRef[i].auteur,listRef[j].auteur)>0){permutRef(&listRef[i],&listRef[j]);}
break;
case 3:
if(strcmp(listRef[i].editeur,listRef[j].editeur)>0){permutRef(&listRef[i],&listRef[j]);}
break;
case 4:
if (listRef[i].annee>listRef[j].annee){permutRef(&listRef[i],&listRef[j]);}
break;
case 5:
if(listRef[i].nbr_page>listRef[j].nbr_page){permutRef(&listRef[i],&listRef[j]);}
}
}
}
}
}