Téléchargement
illégal
Posez votre question Signaler

Cours des files et pile et listes chainées [Résolu]

saada 3Messages postés 20 novembre 2006Date d'inscription - Dernière réponse le 6 mai 2012 à 09:40
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
Lire la suite 

Cours des files et pile et listes chainées »

14 réponses
Réponse
+6
moins plus
Salut,

tu peux regarder ici
liste-simplement-chainee
liste-doublement-chainee
les-piles
les-files
salma_wini- 10 févr. 2012 à 17:32
quelques bon cours:

Cours gratuits

.
haroun90 - 6 mai 2012 à 09:40
merci salma
Ajouter un commentaire
Réponse
+2
moins plus
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
Ajouter un commentaire
Réponse
+2
moins plus
bonjour je voudrai des cours sur les files(declaration ...ect) vous pouvez m'aider c'est urgent!!.merci d'avance
Ajouter un commentaire
Réponse
+1
moins plus
donne moi une solution algorithmique pour exercice , il demande un programme qui traduire un nombre de base B1 à autre base B2 ,,????
Ajouter un commentaire
Réponse
+1
moins plus
comment incrémenté une pile avec un tableau<souligne></souligne>
Ajouter un commentaire
Réponse
+1
moins plus
bonsoir il ya le site de ziro
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

tu as eu déjà une réponse ici liste chainee en c#5
Ajouter un commentaire
Réponse
+0
moins plus
/*
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;
}
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

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

Bonne journée.
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
tu peux acceder aux sit
http://www.lesitedeszero.com
c un tres bon solution pour ton pb
Ajouter un commentaire
Réponse
+0
moins plus
saluuuuuuuuuuu
je cherche des tp liste chainé en pascal
Ajouter un commentaire
Ce document intitulé « cours des files et pile et listes chainées » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?