Rechercher : dans
Par :

Cours des files et pile et listes chainées

Dernière réponse le 17 mai 2009 à 20:02:33 saada, le 16 déc 2006 à 13:32:28 
 Signaler ce message aux modérateurs

Bonjour , je cherche un cours de langage c qui contient des parties bien detaillé sur les piles les files et les listes chainées....
et merci a tous les personnes qui veulent m'aidez d'apprendre cette partie

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « cours des files et pile et listes chainées » dans :
Liste simplement chaînée VoirLISTES SIMPLEMENT CHAINÉES Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la liste IV. Opérations sur les listes chaînées A. Initialisation B. Insertion d'un élément dans la liste 1. Insertion...
Langage C - Les listes chaînées VoirLa notion de structure autoréferrentielle Une structure autoréferrentielle (parfois appelée structure récursive) correspond à une structure dont au moins un des champs contient un pointeur vers une structure de même type. De cette façon on crée...

1

lami20j, le 16 déc 2006 à 13:46:43

Salut,

tu as eu déjà une réponse ici liste chainee en c#5
lami20j

Répondre à lami20j

2

fouzanzane, le 4 mar 2007 à 00:45:20

/*
Renvoie la valeur approchée de fonctions mathématiques :
Exponentiel, cosinus, sinus hyperbolique, arctan, ...
grâce aux développement limités de ces fonctions.
---
Si quelqu'un trouve comment calculer Tan, TanH, ArcCosH, qu'il
m'envoie un email (haypo@ifrance.com).
---
Programme de Haypo - www.HaypoCALC.com - 28 avril 2001
*/

#include <stdio.h> // printf
#include <math.h> // fabsl
#include <float.h> // DBL_DIG

//=============== DEFINE =======================================================

/* typedef (long double) NombreReel;
#define Abs(a) fabsl(a) */

typedef long NombreEntier; // Utilise long pour les nombres entiers
typedef double NombreReel; // Utiise double pour les nombres rééls

// Valeur absolue d'un nombre réel
NombreReel Abs (NombreReel x)
{
return fabs(x);
}

#define Precision 12 // MAX = 20 en long double
#define PuissancePrecision 1e-12 // =1e-(Precision), MAX = -20 en long double
#define AfficheExemple(A,B) printf (A); printf ("(%.3g) = %.12g\n",x,B(x));

NombreReel Racine (NombreReel x)
{
// Racine(0) = 0 (évite de tourne en rond avec cette algorithme)
if (x==0) return 0;

// Racine(0) = 1 (évite de tourne en rond avec cette algorithme)
if (x==1) return 1;

// Racine(nombre négatif) = i * Racine(abs(nombre négatif)) : ERREUR !
// (ne supporte pas les nombres complexes)
if (x<0) {
printf ("ERREUR Racine : Résultat complexe ... ");
return -1;
}

// Avec la méthode de Newton (x(n+1) = x(n) - f(x)/f'(x)) et la fonction
// f(x)= x^2 - b (b étant le nombre dont on cherche la racine)
// -> f'(x) = 2x, on trouve la suite qui tend vers la racine de b :
// x(n+1) = x(n) - (x(n)^2 - b)/2x(n) = x(n) - x(n)/2 +b/2x(n)
// = (x(n) + b/x(n))/2
NombreReel Racine,SauveX;

// Le nombre dont on cherche la racine
Racine = x;

// Cherche une valeur proche de la racine (x=racine du nombre)
// Pour 2<x, la racine est inférieure à x/2
if (2<x) x /= 2;

SauveX = x+1;
while (PuissancePrecision<Abs(SauveX-x)) {
SauveX = x;
x = (x + Racine/x)/2;
}

return x;
}

//=============== COSINUS-SINUS-TANGENTE =======================================
NombreReel Cos (NombreReel x)
{
NombreReel
ValCosinus,
Xpuissance,Factoriel,i,Quotient;

// COS(x) = 1 -x^3/3! +x^5/5! -x^7/7 +...

ValCosinus = 1; // Premier terme de la suite
x = x*x; // Eleve x au carre (pour acc‚l‚rer le calcul de
// Xpuisscance)
Xpuissance = x; // = x^2, x^4, x^6, x^8, ...
Factoriel = 2; // = 2!, 4!, 6!, 8!, ...
i = 2; // Iteration (utilis‚e pour le calcul du Factoriel)
Quotient = Xpuissance/Factoriel; // Calcule le quotient

do {
ValCosinus = ValCosinus -Quotient; // Soustrait un terme
Xpuissance = Xpuissance*x; // Passe … la puissance suivante (* x^2)
i = i +1; Factoriel = Factoriel*i; // Passe au factoriel suivant
i = i +1; Factoriel = Factoriel*i; // (= *i*(i+1) ) et i=i+2

ValCosinus = ValCosinus +Xpuissance/Factoriel; // Ajoute un terme
Xpuissance = Xpuissance*x; // Passe … la puissance suivante (* x^2)
i = i +1; Factoriel = Factoriel*i; // Passe au factoriel suivant
i = i +1; Factoriel = Factoriel*i; // (= *i*(i+1) ) et i=i+2
Quotient = Xpuissance/Factoriel; // Calcule le quotient
} while (PuissancePrecision<Abs(Quotient));

return ValCosinus;
}

NombreReel Sin (NombreReel x)
{
NombreReel
ValSin,
Xpuissance,Factoriel,i,Quotient;

// SIN(x) = x -x^3/3! +x^5/5! -x^7/7 +...

ValSin = x; // Premier terme de la suite
Xpuissance = x*x*x; // = x, x^3, x^5, x^7, ...
x = x*x; // Eleve x au carre (pour acc‚l‚rer le calcul de
// Xpuisscance)
Factoriel = 6; // = 1!,3!, 5!, 7!, ...
i = 3; // Iteration (utilis‚e pour le calcul du Factoriel)
Quotient = Xpuissance/Factoriel; // Calcule le quotient

do {
ValSin = ValSin -Quotient; // Soustrait un terme
Xpuissance = Xpuissance*x; // Passe … la puissance suivante (* x^2)
i = i +1; Factoriel = Factoriel*i; // Passe au factoriel suivant
i = i +1; Factoriel = Factoriel*i; // (= *i*(i+1) ) et i=i+2

ValSin = ValSin +Xpuissance/Factoriel; // Ajoute un terme
Xpuissance = Xpuissance*x; // Passe … la puissance suivante (* x^2)
i = i +1; Factoriel = Factoriel*i; // Passe au factoriel suivant
i = i +1; Factoriel = Factoriel*i; // (= *i*(i+1) ) et i=i+2
Quotient = Xpuissance/Factoriel; // Calcule le quotient
} while (PuissancePrecision<Abs(Quotient));
return ValSin;
}

NombreReel Tan (NombreReel x)
{
NombreReel
ValSin,ValCos,
Xpuissance,Factoriel,i,Quotient;

// TAN(x) = SIN(x)/COS(x)
// x -x^3/3 +x^5/5 -x^7/7 +x^9/9 - ...
// = -------------------------------------
// 1 -x^2/2 +x^4/4 -x^6/6 +x^8/8 - ...

ValCos = 1; // Premier terme de la suite de cosinus
ValSin = x; // Premier terme de la suite de sinus
Xpuissance = x*x; // = x^2, x^3, x^4, x^5, ...
Factoriel = 2; // = 2!, 3!, 4!, 5!, ...
i = 2; // Iteration : 2,3,4,5,6,...
Quotient = Xpuissance/Factoriel; // Calcule le quotient

do {
ValCos = ValCos -Quotient; // Soustrait un terme
Xpuissance = Xpuissance*x; // Passe … la puissance suivante (* x^2)
i = i +1; Factoriel = Factoriel*i; // Passe au factoriel suivant

ValSin = ValSin -(Xpuissance/Factoriel); // Soustrait un terme
Xpuissance = Xpuissance*x; // Passe … la puissance suivante (* x^2)
i = i +1; Factoriel = Factoriel*i; // Passe au factoriel suivant

ValCos = ValCos +(Xpuissance/Factoriel); // Ajoute un terme
Xpuissance = Xpuissance*x; // Passe … la puissance suivante (* x^2)
i = i +1; Factoriel = Factoriel*i; // Passe au factoriel suivant

ValSin = ValSin +(Xpuissance/Factoriel); // Ajoute un terme
Xpuissance = Xpuissance*x; // Passe … la puissance suivante (* x^2)
i = i +1; Factoriel = Factoriel*i; // Passe au factoriel suivant

Quotient = Xpuissance/Factoriel; // Calcule le quotient
} while (PuissancePrecision<Abs(Quotient));

return ValSin/ValCos;
}


//=============== EXPONENTIEL ==================================================
NombreReel Exp (NombreReel x)
{
NombreReel
ValExp,
Xpuissance,q,f,i;

// EXP(x) = x^0/0! +x^1/1! +x^2/2! +x^3/3! +... +x^i/i!

ValExp = 1; // Premier terme de la suite
Xpuissance = x;
f = 1;
i = 1;

q = Xpuissance/f;
do {
ValExp = ValExp +q;
Xpuissance = Xpuissance*x;
i = i +1;
f = f*i;
q = Xpuissance/f;
} while (PuissancePrecision<Abs(q));

return ValExp;
}

NombreReel Ln (NombreReel x)
{
NombreReel
ValLn,
Xpuissance,q,f,i;
bool
Resultat Oppose;

// LN(1+x) = (0<x<=1)
// x
// -x^2/2
// +x^3/3
// -x^4/4
// +x^5/5
// -...

// ln(1)=0 !
if (x==1) return 0;

// x<0 ?
if (x<=0) {
printf ("La fonction LN n'est pas definie sur ]-inf,0] !\n");
return 0;
}

// 1<x ? Calcule -ln(1/x) dans ce cas là
if (1<x) {
x = 1/x;
ResultatOppose = true;
} else ResultatOppose = false;

// On calcule Ln(1+x), donc on fait -1
x--;

// Initialise les variables
ValLn = 0;
Xpuissance = x; // x,x^2,x^3,x^4,...
i = 1;

q = Xpuissance/i;
do {
ValLn += q;
Xpuissance *= x;
i++;

ValLn -= Xpuissance/i;
Xpuissance *= x;
i++;

q = Xpuissance/i;
} while (PuissancePrecision<Abs(q));

if (ResultatOppose)
return (-ValLn);
else
return ValLn;
// return ResultatOppose? -ValLn:ValLn;
}

//=============== ARCSIN, ARCCOS, ARCTAN =======================================
NombreReel ArcSin (NombreReel x)
{
NombreReel
ValArcSin,k,xp,q;
NombreEntier si1,si2;

// ArcSin (x) =
// x
// +x^3/3* (1/2)
// +x^5/5* (1*3)/(2*4)
// +x^7/7* (1*3*5)/(2*4*6)
// +...

ValArcSin = x;
k = 1;
xp = x;
si1 = 1;
si2 = 2;
x = x*x; // Eleve x au carr‚
q = 1;

do {
k = k*si1/si2;
si1 += 2;
si2 += 2;
xp = xp*x;
q = xp*k/si1;
ValArcSin = ValArcSin +q;
} while (PuissancePrecision<Abs(q));

return ValArcSin;
}

NombreReel ArcCos (NombreReel x)
{
// ArcCos(x) = pi/2 -ArcSin(x)

return M_PI/2 -ArcSin(x);
}

NombreReel ArcTan (NombreReel x)
{
NombreReel
ValArcTan,
Xpuissance,Denominateur,Quotient;

// ARCTAN(x) = x -x^3/3 +x^5/5 -x^7/7 +...
// --> POUR 0 <= x < 1

if (1<=x) {
printf (" <-OVERFLOW-> ");
return 0;
}

// Initialise les variables
ValArcTan = 0; // Premier terme de la suite
Xpuissance = x; // = x, x^3, x^5, x^7, ...
Denominateur = 1; // = 1, 3, 5, 7, ...
Quotient = Xpuissance/Denominateur; // Quotient des deux
x = x*x; // Eleve x au carre (pour optimiser le calcul de Xpuissance

// S'arrête quand on a atteind une précision suffisante
do {
ValArcTan = ValArcTan +Quotient;// Ajoute un terme
Xpuissance = Xpuissance*x; // Passe … la puissance suivante (* x^2)
Denominateur = Denominateur+2; // Passe au d‚nominateur suivant (+ 2)

ValArcTan = ValArcTan -Xpuissance/Denominateur; // Soustrait un terme
Xpuissance = Xpuissance*x; // Passe … la puissance suivante (* x^2)
Denominateur = Denominateur+2; // Passe au d‚nominateur suivant (+ 2)
Quotient = Xpuissance/Denominateur; // Calcule le quotient
} while (PuissancePrecision<Abs(Quotient));

// Renvoi la valeur de l'arctan(x)
return ValArcTan;
}
//=============== COSH, SINH, TANH =============================================
NombreReel CosH (NombreReel x)
{
NombreReel
ValCosH,
Xpuissance,Factoriel,i,Quotient;

// COSH(x) = 1/2*(exp(x)+exp(-x))
// = 1 +x^2/2! +x^4/4! +...

ValCosH = 1; // Premier terme de la suite
x = x*x; // Eleve x au carre (pour acc‚l‚rer le calcul de
// Xpuisscance)
Xpuissance = x; // = x^2, x^4, x^6, x^8, ...
Factoriel = 2; // = 2!, 4!, 6!, 8!, ...
i = 3; // Iteration = 3, 5, 7, 9, ...
Quotient = Xpuissance/Factoriel; // Calcule le quotient

do {
ValCosH = ValCosH +Quotient; // Ajoute un terme
Xpuissance = Xpuissance*x; // Passe … la puissance suivante (* x^2)
Factoriel = Factoriel*i*(i+1);
i = i +2; // Passe au factoriel suivant

Quotient = Xpuissance/Factoriel; // Calcule le quotient
} while (PuissancePrecision<Abs(Quotient));

return ValCosH;
}

NombreReel SinH (NombreReel x)
{
NombreReel
ValSinH,
Xpuissance,Factoriel,i,Quotient;

// SINH(x) = 1/2*(exp(x)-exp(-x))
// = x +x^3/3! +x^5/5! +...

ValSinH = x; // Premier terme de la suite
Xpuissance = x*x*x; // = x^3, x^5, x^7, x^9, ...
x = x*x; // Eleve x au carre (pour acc‚l‚rer le calcul de
// Xpuisscance)
Factoriel = 6; // = 3!, 5!, 7!, 9!, ...
i = 4; // Iteration = 3, 5, 7, 9, ...
Quotient = Xpuissance/Factoriel; // Calcule le quotient

do {
ValSinH = ValSinH +Quotient; // Ajoute un terme
Xpuissance = Xpuissance*x; // Passe … la puissance suivante (* x^2)
Factoriel = Factoriel*i*(i+1);
i = i +2; // Passe au factoriel suivant

Quotient = Xpuissance/Factoriel; // Calcule le quotient
} while (PuissancePrecision<Abs(Quotient));

return ValSinH;
}

NombreReel TanH (NombreReel x)
{
// TanH(x) = SinH(x)/CosH(x)
// Désolé, j'ai pas trouvé mieux pour l'instant
return SinH(x)/CosH(x);
}


//=============== ARCCOSH, ARCSINH, ARCTANH ====================================
NombreReel ArcCosH (NombreReel x)
{
// ArcCosH(x) = Ln(x+Racine(x^2-1)), tout simplement !
x += Racine(x*x-1);
return Ln(x);
}

NombreReel ArcSinH (NombreReel x)
{
NombreReel
ValArcSinH,Rapport,XPuissance,Total;
NombreEntier
Impair,Pair;

// ArcSinH (x) =
// x
// -x^3/3* (1/2)
// +x^5/5* (1*3)/(2*4)
// -x^7/7* (1*3*5)/(2*4*6)
// +...

XPuissance = x*x*x;
ValArcSinH = x-XPuissance/6;
Rapport = (NombreReel)(1*3)/(2*4); // = (1*3)/(2*4), (1*3*5)/(2*4*6), (1*3*5*7)/(2*4*6*8),...
Impair = 5; // = 5, 7, 9, 11, ...
Pair = 6; // = 6, 8, 10, 12, ...
x= x*x; // Eleve x au carr‚
XPuissance = XPuissance*x; // Xpuissance = x^5, x^7, x^9, ...
Total = XPuissance/Impair*Rapport;
do {
ValArcSinH = ValArcSinH +Total;
Rapport = Rapport*Impair/Pair;
Impair += 2;
Pair += 2;
XPuissance = XPuissance*x;

ValArcSinH = ValArcSinH -XPuissance/Impair*Rapport;
Rapport = Rapport*Impair/Pair;
Impair += 2;
Pair += 2;
XPuissance = XPuissance*x;

Total = XPuissance/Impair*Rapport;
} while (PuissancePrecision<Abs(Total));

return ValArcSinH;
}

NombreReel ArcTanH (NombreReel x)
{
NombreReel
ValArcTanH,XPuissance,Quotient;
NombreEntier d;

// ARCTANH(x) = 1/2* ln( (1+x)/(1-x) )
// = x +x^3/3 +x^5/5 +x^7/7 +...
if ((x<=-1) || (1<=x)) {
printf ("x doit appartenir à ]-1,1[ !!!\n");
return 0;
}

ValArcTanH = x;
XPuissance = x*x*x;
x= x*x; // Eleve x au carr‚
d = 3;
Quotient = XPuissance/d;
do {
ValArcTanH = ValArcTanH +Quotient;
XPuissance = XPuissance*x;
d += 2;
Quotient = XPuissance/d;
} while (PuissancePrecision<Abs(Quotient));

return ValArcTanH;
}

//=============== ARCCOSH, ARCSINH, ARCTANH ====================================
//=============== ARCCOSH, ARCSINH, ARCTANH ====================================
int main(int argc, char* argv[])
{
NombreReel x,e;
printf (">>> Precision = %u (=nombre de chiffres significatifs) <<<\n\n",Precision);

x = 1; AfficheExemple ("Exp",Exp);
x = 2; AfficheExemple ("Exp",Exp);
x = 2; AfficheExemple ("Ln",Ln);
x = 3; AfficheExemple ("Ln",Ln);
printf ("\n");
getchar ();

// --------------------------------------------
x = 0.123; AfficheExemple ("Cos",Cos);
x = 0.456; AfficheExemple ("Cos",Cos);
x = 0.789; AfficheExemple ("Cos",Cos);
printf ("\n");
x = 0.123; AfficheExemple ("Sin",Sin);
x = 0.456; AfficheExemple ("Sin",Sin);
x = 0.789; AfficheExemple ("Sin",Sin);
printf ("\n");
x = 0.123; AfficheExemple ("Tan",Tan);
x = 0.456; AfficheExemple ("Tan",Tan);
x = 0.789; AfficheExemple ("Tan",Tan);
printf ("\n");
getchar ();

// --------------------------------------------
x = 0.123; AfficheExemple ("ArcCos",ArcCos);
x = 0.456; AfficheExemple ("ArcCos",ArcCos);
x = 0.789; AfficheExemple ("ArcCos",ArcCos);
printf ("\n");
x = 0.123; AfficheExemple ("ArcSin",ArcSin);
x = 0.456; AfficheExemple ("ArcSin",ArcSin);
x = 0.789; AfficheExemple ("ArcSin",ArcSin);
printf ("\n");
x = 0.123; AfficheExemple ("ArcTan",ArcTan);
x = 0.456; AfficheExemple ("ArcTan",ArcTan);
x = 0.789; AfficheExemple ("ArcTan",ArcTan);
printf ("\n");
getchar ();

// --------------------------------------------
x = 0.123; AfficheExemple ("CosH",CosH);
x = 0.456; AfficheExemple ("CosH",CosH);
x = 0.789; AfficheExemple ("CosH",CosH);
printf ("\n");
x = 0.123; AfficheExemple ("SinH",SinH);
x = 0.456; AfficheExemple ("SinH",SinH);
x = 0.789; AfficheExemple ("SinH",SinH);
printf ("\n");
x = 0.123; AfficheExemple ("TanH",TanH);
x = 0.456; AfficheExemple ("TanH",TanH);
x = 0.789; AfficheExemple ("TanH",TanH);
printf ("\n");
getchar ();

// --------------------------------------------
x = 0.123; AfficheExemple ("ArcCosH",ArcCosH);
x = 0.456; AfficheExemple ("ArcCosH",ArcCosH);
x = 0.789; AfficheExemple ("ArcCosH",ArcCosH);
printf ("\n");
x = 0.123; AfficheExemple ("ArcSinH",ArcSinH);
x = 0.456; AfficheExemple ("ArcSinH",ArcSinH);
x = 0.789; AfficheExemple ("ArcSinH",ArcSinH);
printf ("\n");
x = 0.123; AfficheExemple ("ArcTanH",ArcTanH);
x = 0.456; AfficheExemple ("ArcTanH",ArcTanH);
x = 0.789; AfficheExemple ("ArcTanH",ArcTanH);
printf ("\n");
getchar();

// Racine carré
x = 2; AfficheExemple ("Racine",Racine);
x = 3; AfficheExemple ("Racine",Racine);
x = 4; AfficheExemple ("Racine",Racine);
printf ("\n");

// Calcul de PI
printf ("PI = %.12g (= ArcTan(1/2)+ArcTan(1/3))\n",(4*(ArcTan ((NombreReel)1/2)+ArcTan((NombreReel)1/3))));
getchar ();
return 0;
}

Répondre à fouzanzane

3

enigma16, le 13 déc 2007 à 21:14:27

Svp;je voudrais recevoir le cours des piles,files et listes chainees si vou en avez,bah priere de me l'envoyer a mon adresse ; 1000 merciiiiiiii

Répondre à enigma16

4

lami20j, le 13 déc 2007 à 21:18:51
Répondre à lami20j

5

fellague136, le 21 déc 2007 à 03:12:15

donne moi une solution algorithmique pour exercice , il demande un programme qui traduire un nombre de base B1 à autre base B2 ,,????

Répondre à fellague136

6

ferou, le 21 mar 2008 à 14:50:47

Bonjour je voudrai des cours sur les files(declaration ...ect) vous pouvez m'aider c'est urgent!!.merci d'avance

Répondre à ferou

7

kilian, le 21 mar 2008 à 14:53:06

Bonjour,

Il suffit de lire les messages qui précedent le tiens.

Bonne journée.

Répondre à kilian

8

ahmed tacho, le 31 mar 2008 à 17:14:27
  • +2

comment incrémenté une pile avec un tableau<souligne></souligne>

Répondre à ahmed tacho

9

soussou, le 27 mai 2008 à 17:19:31

Slt mes amis j'ai un controle en informatique et je veut les cours de pile et des filles d'attente c urgent!
si quelqu'un de vous peut m'aider
envoie mois la réponse sur mon e-mail;by

Répondre à soussou

12

 charguia2, le 29 avr 2009 à 01:07:41

Tu peux acceder aux sit
http://www.lesitedeszero.com
c un tres bon solution pour ton pb

Répondre à charguia2