Structures de dates en C - Applications resolues


1) Declarer un enregistrements et leur utilisation.
#include<stdio.h>
/* structurile declarate, in principiu vor fi declarate in afara
oricarei functii, pentru a putea fi utilizata in intreg programul */
struct employe
{
	int code_employe;
	char* nom;
	char* prenom;
	struct
		{
		int annee;
		char mois;
		char jour;
		}date_engagement;
	float salaire_encadrement;
};
void main()
{
	employe x;
	x.code_employe=1021;
	x.nom="Popescu";
	x.prenom="Ion";
	x.date_engagement.annee=2002;
	x.date_engagement.mois=9;
	x.date_engagement.jour=10;
	x.salaire_encadrement=1250;
 
	printf("employe: %s %s\n",x.nom,x.prenom);
	printf("date engagement: %d/%d/%d\n",x.date_engagement.jour, x.date_engagement.mois, x.date_engagement.annee);
	printf("salaire encadrement: %.2f",x.salaire_encadrement);
 
	getchar();
	int k;
	scanf("%d", &k);
}

2) Allons ecrire un programme C qui mettra en evidence les differences entre l'utilisation d'une structure et d'une union. a) va utiliser une structure d'enregistrement:
#include<stdio.h>
struct exemple
{
	long int a;
	char* b;
	char* c;
};
void main()
{
	exemple x;
	printf("L'espace occupe par une structure variable: %d\n",sizeof(x));
	x.a=10;
	x.b="ABCD";
	x.c="EFG";
	printf("%ld\n",x.a);
	printf("%s\n",x.b);
	printf("%s\n",x.c);
 
	getchar();
	int k;
	scanf("%d", &k);
}

b) utilisez une structure de type union:
#include<stdio.h>
union exemple 
{
	long int a;
	char* b;
	char* c;
};
void main()
{
	exemple x;
	printf("L'espace occupe par la variable d'union: %d\n",sizeof(x));
	x.a=10;
	x.b="ABCD";
	x.c="EFG";
 
	printf("%ld\n",x.a);
	printf("%s\n",x.b);
	printf("%s\n",x.c);
 
	getchar();
	int k;
	scanf("%d", &k);
}

3) Faire une application, qui traite des nombres complexes, c'est à dire, à la lire, l'affichage, le mode, et la somme du produit de deux tels nombres.
#include<stdio.h>
#include<math.h>
typedef struct{
float a;	// le reel
float b;	//l’imaginaire
}complexe;	//nom de structure
// lire d'un nombre complexe
void lire (complexe* z,char s[]) //s retien  le nom du nombre complexe
{
	printf("Introduire le nombre complexe%s:\n",s);
	printf("\tpartie reelle: ");
	scanf("%f",&(*z).a);
	printf("\tpartie imaginaire: ");
	scanf("%f",&z->b); //autre moyen d’ecrire
}
//affichez un nombre complexe
void affichage(complexe z,char s[])
{
	printf("Nr. complexe %s: ",s);
	if(z.b>=0)
	printf("%.2f+%.2fi\n",z.a,z.b);
	else
	printf("%.2f%.2fi\n",z.a,z.b);
}
// Module d'un nombre complexe
float module(complexe z)
{
	return sqrt(pow(z.a,2)+pow(z.b,2));
}
// conjugue d'un nombre complexe
complexe conjugue (complexe z)
{
	complexe t;
	t.a=z.a;
	t.b=-z.b;
	return t;
}
//la somme de deux nombres complexes (version avec transfert par le type resulte)
complexe somme1(complexe x,complexe y)
{
	complexe z;
	z.a=x.a+y.a;
	z.b=x.b+y.b;
return z;
}
// la somme de deux nombres complexes (version avec transfert par la ligne des parametres)
void somme2(complexe x,complexe y,complexe* z)
{
	z->a=x.a+y.a; //(*z).a=x.a+y.a;
	z->b=x.b+y.b;
} 
//le produit a deux nombres complexes
complexe produit(complexe x,complexe y)
{
	complexe z;
	z.a=x.a*y.a-x.b*y.b;
	z.b=x.a*y.b+x.b*y.a;
	return z;
}
// fonction principale d'execution
void main()
{
	complexe z1,z2;
	//lire de deux nombres complexex
	lire(&z1,"z1");
	lire(&z2,"z2");
	printf("\n");
	//affichage de eux nombres complexex
	affichage(z1,"z1");
	affichage(z2,"z2");
	printf("\n");
	//les modules de deux nombres complexex
	printf("Module de z1: %.2f\n",module(z1));
	printf("Module de z2: %.2f\n",module(z2));
	printf("\n");
	// conjugues de deux nombres complexes
	affichage(conjugue(z1),"conjugue z1");
	affichage(conjugue(z2),"conjugue z2");
	//la somme de deux nombres complexex - version 1
	complexe s1;
	s1=somme1(z1,z2);
	affichage(s1,"z1+z2");
	// la somme de deux nombres complexex - version 2
	complexe s2;
	somme2(z1,z2,&s2);
	affichage(s2,"z1+z2");
	//produit de deux nombres complexes
	complexe p;
	p=produit(z1,z2);
	affichage(p,"z1*z2");
 
	getchar();
	int k;
	scanf("%d", &k);
}

4) Faire une application pour travailler avec des nombres rationnels (Les valeurs numeriques qui peuvent être ecrites sous forme de fraction), à savoir: la lire, l'affichage, la somme et le produit de deux tels nombres.
#include<stdio.h>
#include<math.h>
typedef struct
{
	int a,b;
	int cmmdc(int x,int y)
	{
		if(x==y) return x;
		else
			if(x>y) return cmmdc(x-y,y);
			else
			return cmmdc(x,y-x);
	}
	void irreductiblel()
	{
		if(b<0)
		{
			a=-a;
			b=-b;
		}
		if(!a)
			b=1;
		else
			if(abs(a)!=1 && abs(b)!=1)
			{
				int d=cmmdc(abs(a),abs(b));
				a=a/d;
				b=b/d;
			}
	}
}rationel;
void lire(rationel* x, char c)
{
	printf("Enterer nombre rationel %c:\n",c);
	printf("\tcontrer: ");
	scanf("%d",&x->a);
	int n;
	do
	{
		printf("\tdenominateur: ");
		scanf("%d",&n);
	}
	while(n==0);
	x->b=n;
	x->irreductiblel();
}
 
void affichage(rationel x, char c[])
{
	printf("nombre rationel %s: %d/%d\n",c,x.a,x.b);
}
rationel addition(rationel x, rationel y)
{
	rationel r;
	r.a=x.a*y.b+x.b*y.a;
	r.b=x.b*y.b;
	r.irreductiblel();
	return r;
}
rationel multiplication(rationel x, rationel y)
{
	rationel r;
	r.a=x.a*y.a;
	r.b=x.b*y.b;
	r.irreductiblel();
	return r;
}
void main()
{
	rationel x,y;
 
	lire(&x,'x');
	lire(&y,'y');
 
	affichage(x,"x");
	affichage(y,"y");
 
	rationel s;
	s=addition(x,y);
	affichage(s,"x+y");
 
	rationel p;
	p=multiplication(x,y);
	affichage(p,"x*y");
 
	getchar();
	int k;
	scanf("%d", &k);
}

5) Ecrire un programme pour gerer une flotte de vehicules. Les informations relatives à une voiture sont: le nombre de sièges, la puissance (en chevaux-vapeur), la marque, la couleur, l'annee de fabrication de voiture.
a) va lire les donnees sur le parc automobile voiture n. Affichera uniquement les vehicules qui ont 5 sièges;
b) la puissance ascendante de commander les voitures - sera affiche donnees ordonnees;
c) ecrire une fonction qui affiche toutes les voitures fabriquees dans une annee donnee comme paramètre.
#include<stdio.h>
#include<conio.h>
typedef struct				//declarer la structure
{
	char marque[20];
	char modele[20];
	char cul[20];
	int an;
	struct				//definir la structure
	{
		char nl;
		int put;
	}date;				//liste variabiles de la structure
}voiture;				//nom structure
typedef voiture car[20];		//type de dates propre
void lire(car a, int *n)		//introduire les dates
{
	int i;
	printf("Ecrire le numero des voitures: ");
	scanf("%d",n);
	for(i=0; i<*n; i++)
	{
		printf("Ecrire les dates sur la voiture %d\n",i+1);
		printf("\tmarque: ");
		scanf("%s",a[i].marque);
		printf("\tmodele: ");
		scanf("%s",a[i].modele);
		printf("\tculeur: ");
		scanf("%s",a[i].cul);
		printf("\tan: ");
		scanf("%d",&a[i].an);
		printf("\tnombre places: ");
		scanf("%d",&a[i].date.nl);
		printf("\tpuissance en cheveux: ");
		scanf("%d",&a[i].date.put);
	}
}
 
void affichage(car a,int n)		//affichagee dates
{
	int i;
	 for (i=0;i<n;i++)
	{
		printf("Voiture [%d]:\n",i+1);
		printf("\tmarque:     %s\n",a[i].marque);
		printf("\tmodele:   %s\n",a[i].modele);
		printf("\tculeur:  %s\n",a[i].cul);
		printf("\tan fabr.:  %d\n",a[i].an);
		printf("\tnombre places: %d\n",a[i].date.nl);
		printf("\tpuissance:   %d\n\n",a[i].date.put);
	 }
}
void an(car a,int n,int p)
{
	int i;
	for(i=0;i<n-1;i++)
	 {
		 if(a[i].an=p)		//attribution de valeur aux membres de la structure
		{
			printf("Voiture [%d]:\n",i+1);
			printf("\tmarque:     %s\n",a[i].marque);
			printf("\tmodele:   %s\n",a[i].modele);
			printf("\tculeur:  %s\n",a[i].cul);
			printf("\tan fabr.:  %d\n",a[i].an);
			printf("\tnombre places: %d\n",a[i].date.nl);
			printf("\tpuissance:   %d\n\n",a[i].date.put);
		 }
	}
}
void main()
{	
	car a;
	int n,aux,i,j,p;
	lire(a,&n);
	affichage(a,n);
	for(i=0;i<n;i++)
	{ 
		if(a[i].date.nl=5)	//attribution de valeur aux membres de structure	
		{
			printf("Voiture [%d]:\n",i+1);
			printf("\tmarque:     %s\n",a[i].marque);
			printf("\tmodele:   %s\n",a[i].modele);
			printf("\tculeur:  %s\n",a[i].cul);
			printf("\tan fabr.:  %d\n",a[i].an);
			printf("\tnombre places: %d\n",a[i].date.nl);
			printf("\tpuisance:   %d\n\n",a[i].date.put);
		}
	}
	for(i=0;i<n-1;i++)
		for(j=i+1;j<n;j++)
		{
			if(a[i].date.put>a[j].date.put)
             {
				aux=i;
				i=j;
				j=aux;
			}
		}
	affichage(a,n);
	printf("\n\tDonne l'annee d'après seront affichees les voitures: ");
	scanf("%d",&p);
	an(a,n,p);
 
	getchar();
	int k;
	scanf("%d", &k);
}
Cookies help us deliver our services. By using our services, you agree to our use of cookies.