Forum INFOMATH
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le deal à ne pas rater :
Jeux, jouets et Lego : le deuxième à -50% (large sélection)
Voir le deal

simple code

+2
lamia
suneddine
6 participants

Aller en bas

simple code Empty simple code

Message par suneddine Mer 9 Jan - 10:14

salut les infomathistes,
j'ai rencontré un code simple mais j'ai pas réussi à trouver la signification du résultat

Code:

#include

void main ()
{
    float x;
    float min=0.0, max=1.0;
    const int N=30;
    int i=0;
    while (i < N)
    {
        x=(min+max)/2.0;
        if (1.0 + x > 1.0)
            max=x;
        else
            min=x;
        i=i+1;
    }
    printf ("On a trouvé %g comme valeur finale\n",x);
}

en plus, pourquoi %g et non pas %f au niveau de l'affichage du résultat
suneddine
suneddine
Nombre Réel
Nombre Réel

Masculin
Nombre de messages : 730
Age : 38
Localisation : tunisie
Réputation : 5
Points : 6112
Date d'inscription : 11/11/2007

Feuille de personnage
Capacité linguistique:
simple code Left_bar_bleue995/1000simple code Empty_bar_bleue  (995/1000)

Revenir en haut Aller en bas

simple code Empty Re: simple code

Message par lamia Mer 9 Jan - 10:50

Le resultat n'est qu'une mise en evidence des structures itératives( la boucle while qui manque apparemment d'un "i<N"), des structures conditionnelles ( if ), c'est surement un exercice d'application, où ils demandent ces etapes à faire, un exercice d'application. Mais le resultat n'a pas vraiment un sens, je le crois en tout cas.
Mais pour le %g je ne vois pas de quoi il s'agit confused
lamia
lamia
Modérateur
Modérateur

Féminin
Nombre de messages : 1936
Age : 37
Localisation : Tunis
Réputation : 53
Points : 6591
Date d'inscription : 04/11/2007

Feuille de personnage
Capacité linguistique:
simple code Left_bar_bleue996/1000simple code Empty_bar_bleue  (996/1000)

Revenir en haut Aller en bas

simple code Empty Re: simple code

Message par suneddine Mer 9 Jan - 11:03

désolé oui il manque un (i<N) après while
je pense que le résultat a un sens
suneddine
suneddine
Nombre Réel
Nombre Réel

Masculin
Nombre de messages : 730
Age : 38
Localisation : tunisie
Réputation : 5
Points : 6112
Date d'inscription : 11/11/2007

Feuille de personnage
Capacité linguistique:
simple code Left_bar_bleue995/1000simple code Empty_bar_bleue  (995/1000)

Revenir en haut Aller en bas

simple code Empty Re: simple code

Message par lamia Mer 9 Jan - 11:03

Voilà j'ai fait une petite recherche et voilà ce qu'elle a donné:
g ou G (réel en f si possible, e sinon)
avec : [f (réel en virgule fixe)] et [e ou E (réel en notation exponentielle)]
lamia
lamia
Modérateur
Modérateur

Féminin
Nombre de messages : 1936
Age : 37
Localisation : Tunis
Réputation : 53
Points : 6591
Date d'inscription : 04/11/2007

Feuille de personnage
Capacité linguistique:
simple code Left_bar_bleue996/1000simple code Empty_bar_bleue  (996/1000)

Revenir en haut Aller en bas

simple code Empty Re: simple code

Message par manianis Mer 9 Jan - 13:18

première itération :
min = 0
max = 1
x =(min+max)/2=0.5
(x > 0) => max = 0.5
deuxième itération : i = 1
min = 0
max = 0.5
x =(min+max)/2=0.25
(x > 0) ==> max = 0.25

à ce qu'il parait, sauf erreur dans votre code, x=2^(-i)=1/(2^i).

manianis
Nombre Réel
Nombre Réel

Masculin
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6045
Date d'inscription : 11/10/2007

Feuille de personnage
Capacité linguistique:
simple code Left_bar_bleue999/1000simple code Empty_bar_bleue  (999/1000)

http://manianis.sitesled.com/

Revenir en haut Aller en bas

simple code Empty Re: simple code

Message par suneddine Mer 9 Jan - 13:39

non car au niveau de la 1ère itération
i=0
min = 0
max = 1
x =(min+max)/2=0.5

0.5 <> 1/(2^i) = 1/(2^0) = 1
suneddine
suneddine
Nombre Réel
Nombre Réel

Masculin
Nombre de messages : 730
Age : 38
Localisation : tunisie
Réputation : 5
Points : 6112
Date d'inscription : 11/11/2007

Feuille de personnage
Capacité linguistique:
simple code Left_bar_bleue995/1000simple code Empty_bar_bleue  (995/1000)

Revenir en haut Aller en bas

simple code Empty Re: simple code

Message par methodiX Mer 9 Jan - 15:21

Ce programme calcule d'une façon "tirée par les cheveux" 0.5^n
Manianis aurait dû dire 0.5^n au lieu de 0.5^i.

Il faut noter que:
- min ne change jamais de valeur, min=0
- max est toujours égal à x.
- x = (max+min)/2 est équivalente selon ce qu'ai j'ai dit, à x = x/2;

Prenez N=1, et le programme retourn 1/2, .....

Commentaires? scratch
methodiX
methodiX
Admin
Admin

Masculin
Nombre de messages : 1260
Localisation : Le couloir de l'école polytechnique de Tunis
Réputation : 68
Points : 7044
Date d'inscription : 22/03/2007

Feuille de personnage
Capacité linguistique:
simple code Left_bar_bleue1000/1000simple code Empty_bar_bleue  (1000/1000)

Revenir en haut Aller en bas

simple code Empty Re: simple code

Message par manianis Mer 9 Jan - 15:44

methodiX a écrit:Ce programme calcule d'une façon "tirée par les cheveux" 0.5^n
Manianis aurait dû dire 0.5^n au lieu de 0.5^i.

Il faut noter que:
- min ne change jamais de valeur, min=0
- max est toujours égal à x.
- x = (max+min)/2 est équivalente selon ce qu'ai j'ai dit, à x = x/2;

Prenez N=1, et le programme retourn 1/2, .....

Commentaires? scratch

Voilà, je crois que methodiX (merci mon frère) a bien expliqué le résultat du programme. Mais je crois qu'il y'a une faute car min ne change pas.

manianis
Nombre Réel
Nombre Réel

Masculin
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6045
Date d'inscription : 11/10/2007

Feuille de personnage
Capacité linguistique:
simple code Left_bar_bleue999/1000simple code Empty_bar_bleue  (999/1000)

http://manianis.sitesled.com/

Revenir en haut Aller en bas

simple code Empty Re: simple code

Message par Napoléon Mer 9 Jan - 18:31

bravo methodiX. Très méthodique Wink
Napoléon
Napoléon
Admin
Admin

Masculin
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7662
Date d'inscription : 19/03/2007

Feuille de personnage
Capacité linguistique:
simple code Left_bar_bleue999/1000simple code Empty_bar_bleue  (999/1000)

https://infomath.1fr1.net

Revenir en haut Aller en bas

simple code Empty Re: simple code

Message par suneddine Mer 9 Jan - 18:45

0.5/(2^n) au lieu de 0.5^n, non?
suneddine
suneddine
Nombre Réel
Nombre Réel

Masculin
Nombre de messages : 730
Age : 38
Localisation : tunisie
Réputation : 5
Points : 6112
Date d'inscription : 11/11/2007

Feuille de personnage
Capacité linguistique:
simple code Left_bar_bleue995/1000simple code Empty_bar_bleue  (995/1000)

Revenir en haut Aller en bas

simple code Empty Re: simple code

Message par Napoléon Mer 9 Jan - 18:46

NON, 0.5^N = 1/2^N.
0.5/2^N = 0.5^(N+1)
Napoléon
Napoléon
Admin
Admin

Masculin
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7662
Date d'inscription : 19/03/2007

Feuille de personnage
Capacité linguistique:
simple code Left_bar_bleue999/1000simple code Empty_bar_bleue  (999/1000)

https://infomath.1fr1.net

Revenir en haut Aller en bas

simple code Empty Re: simple code

Message par manianis Mer 9 Jan - 19:00

nabiL a écrit:NON, 0.5^N = 1/2^N.
0.5/2^N = 0.5^(N+1)

SVP les gars pas de panique : 1/(2^n) ou 1/(2^(n+1))

Ce n'est pas çà le problème. Le problème est que je oupconne qu'il existe une faute quelconque dans ce programme. L'utilisation du min/max ne me plais point. Si le programme cherchait 1/2^(n+1) ou 1/2^n on aurait du faire comme suit :

Code:
x = 1;
for (i = 0 ; i < n ; i++) x = x * 1/2;

Ce sera plus simple et plus court et plus efficace. Il y'a aussi l'utilisation non justifiée du if.
Code:
if (x + 1.0 > 1.0) {}

Je vous recommande mosa de vérifier votre code.

manianis
Nombre Réel
Nombre Réel

Masculin
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6045
Date d'inscription : 11/10/2007

Feuille de personnage
Capacité linguistique:
simple code Left_bar_bleue999/1000simple code Empty_bar_bleue  (999/1000)

http://manianis.sitesled.com/

Revenir en haut Aller en bas

simple code Empty Re: simple code

Message par Napoléon Mer 9 Jan - 19:25

manianis: rien n'empeche d'ecrire ce qu'on veut dans un programme. De plus l'exercice demande de vérifier ce que fait le programme, et non pas d'implémenter une routine qui fait telle ou telle chose... ça diffère.

Il a été mentionné par methodix que c'est tiré par les cheveux comme algo.
Napoléon
Napoléon
Admin
Admin

Masculin
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7662
Date d'inscription : 19/03/2007

Feuille de personnage
Capacité linguistique:
simple code Left_bar_bleue999/1000simple code Empty_bar_bleue  (999/1000)

https://infomath.1fr1.net

Revenir en haut Aller en bas

simple code Empty Re: simple code

Message par manianis Mer 9 Jan - 23:55

nabiL a écrit:manianis: rien n'empeche d'ecrire ce qu'on veut dans un programme. De plus l'exercice demande de vérifier ce que fait le programme, et non pas d'implémenter une routine qui fait telle ou telle chose... ça diffère.

Il a été mentionné par methodix que c'est tiré par les cheveux comme algo.

Oui, c'est tout à fait clair nabiL. Mais, je n'imagine pas que cet "algo tiré par les cheveux" ait été donné comme exemple dans un livre d'apprentissage de c/c++.

manianis
Nombre Réel
Nombre Réel

Masculin
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6045
Date d'inscription : 11/10/2007

Feuille de personnage
Capacité linguistique:
simple code Left_bar_bleue999/1000simple code Empty_bar_bleue  (999/1000)

http://manianis.sitesled.com/

Revenir en haut Aller en bas

simple code Empty Re: simple code

Message par methodiX Jeu 10 Jan - 0:31

On ignore l'origine de ce code. Mais à mon avis, c'est un exercice orienté algorithmique plus que C/C++.
methodiX
methodiX
Admin
Admin

Masculin
Nombre de messages : 1260
Localisation : Le couloir de l'école polytechnique de Tunis
Réputation : 68
Points : 7044
Date d'inscription : 22/03/2007

Feuille de personnage
Capacité linguistique:
simple code Left_bar_bleue1000/1000simple code Empty_bar_bleue  (1000/1000)

Revenir en haut Aller en bas

simple code Empty Re: simple code

Message par manianis Jeu 10 Jan - 0:37

Ce genre d'algorithme sert à brouiller les étudiants et ne donne pas sa valeur ni au langage, ni à l'algorithmique. Tous les deux sont basés normalement sur la logique.

manianis
Nombre Réel
Nombre Réel

Masculin
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6045
Date d'inscription : 11/10/2007

Feuille de personnage
Capacité linguistique:
simple code Left_bar_bleue999/1000simple code Empty_bar_bleue  (999/1000)

http://manianis.sitesled.com/

Revenir en haut Aller en bas

simple code Empty Re: simple code

Message par suneddine Ven 11 Jan - 18:03

enfin j'ai connu le secret de ce code, c'est qu'il calcule une valeur négligeable par la méthode dichotomique étudiée au module analyse numérique.
suneddine
suneddine
Nombre Réel
Nombre Réel

Masculin
Nombre de messages : 730
Age : 38
Localisation : tunisie
Réputation : 5
Points : 6112
Date d'inscription : 11/11/2007

Feuille de personnage
Capacité linguistique:
simple code Left_bar_bleue995/1000simple code Empty_bar_bleue  (995/1000)

Revenir en haut Aller en bas

simple code Empty Re: simple code

Message par manianis Ven 11 Jan - 23:54

SVP. Mosa expliquez nous l'astuce d'une manière plus claire.

manianis
Nombre Réel
Nombre Réel

Masculin
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6045
Date d'inscription : 11/10/2007

Feuille de personnage
Capacité linguistique:
simple code Left_bar_bleue999/1000simple code Empty_bar_bleue  (999/1000)

http://manianis.sitesled.com/

Revenir en haut Aller en bas

simple code Empty Re: simple code

Message par suneddine Sam 12 Jan - 1:35

aucune idée, j'ai pas étudié le module d'analyse numérique, j'ai obtenu cette information auprès d'un professeur
suneddine
suneddine
Nombre Réel
Nombre Réel

Masculin
Nombre de messages : 730
Age : 38
Localisation : tunisie
Réputation : 5
Points : 6112
Date d'inscription : 11/11/2007

Feuille de personnage
Capacité linguistique:
simple code Left_bar_bleue995/1000simple code Empty_bar_bleue  (995/1000)

Revenir en haut Aller en bas

simple code Empty Re: simple code

Message par methodiX Sam 12 Jan - 22:22

Si tu as un compilateur C, essaie d'exécuter cet algorithme. Qu'est-ce que ça donne ???
methodiX
methodiX
Admin
Admin

Masculin
Nombre de messages : 1260
Localisation : Le couloir de l'école polytechnique de Tunis
Réputation : 68
Points : 7044
Date d'inscription : 22/03/2007

Feuille de personnage
Capacité linguistique:
simple code Left_bar_bleue1000/1000simple code Empty_bar_bleue  (1000/1000)

Revenir en haut Aller en bas

simple code Empty Re: simple code

Message par lamia Sam 12 Jan - 23:23

Voilà ce qu'on trouve en exécutant cet algorithme:
Code:

On a trouvé 9.313226E-10 comme valeur finale
lamia
lamia
Modérateur
Modérateur

Féminin
Nombre de messages : 1936
Age : 37
Localisation : Tunis
Réputation : 53
Points : 6591
Date d'inscription : 04/11/2007

Feuille de personnage
Capacité linguistique:
simple code Left_bar_bleue996/1000simple code Empty_bar_bleue  (996/1000)

Revenir en haut Aller en bas

simple code Empty Re: simple code

Message par manianis Sam 12 Jan - 23:34

lamia a écrit:Voilà ce qu'on trouve en exécutant cet algorithme:
Code:

On a trouvé 9.313226E-10 comme valeur finale
Oui, exactement.

manianis
Nombre Réel
Nombre Réel

Masculin
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6045
Date d'inscription : 11/10/2007

Feuille de personnage
Capacité linguistique:
simple code Left_bar_bleue999/1000simple code Empty_bar_bleue  (999/1000)

http://manianis.sitesled.com/

Revenir en haut Aller en bas

simple code Empty Re: simple code

Message par methodiX Dim 13 Jan - 0:43

donc 1.0 + x > 1.0 n'est pas une expression tirée par les cheveux comme on le croyait (mathématiquement)
methodiX
methodiX
Admin
Admin

Masculin
Nombre de messages : 1260
Localisation : Le couloir de l'école polytechnique de Tunis
Réputation : 68
Points : 7044
Date d'inscription : 22/03/2007

Feuille de personnage
Capacité linguistique:
simple code Left_bar_bleue1000/1000simple code Empty_bar_bleue  (1000/1000)

Revenir en haut Aller en bas

simple code Empty Re: simple code

Message par informix Dim 13 Jan - 17:00

Quelle confusion j'ai dans ma tête à cause de ce que tu nous a posté mosa Smile
informix
informix
Nombre Rationnel
Nombre Rationnel

Nombre de messages : 399
Réputation : 4
Points : 6316
Date d'inscription : 19/03/2007

Feuille de personnage
Capacité linguistique:
simple code Left_bar_bleue1000/1000simple code Empty_bar_bleue  (1000/1000)

Revenir en haut Aller en bas

simple code Empty Re: simple code

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum