simple code

Voir le sujet précédent Voir le sujet suivant Aller en bas

simple code

Message par suneddine le 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
avatar
suneddine
Nombre Réel
Nombre Réel

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

Feuille de personnage
Capacité linguistique:
995/1000  (995/1000)

Revenir en haut Aller en bas

Re: simple code

Message par lamia le 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
avatar
lamia
Modérateur
Modérateur

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

Feuille de personnage
Capacité linguistique:
996/1000  (996/1000)

Revenir en haut Aller en bas

Re: simple code

Message par suneddine le 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
avatar
suneddine
Nombre Réel
Nombre Réel

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

Feuille de personnage
Capacité linguistique:
995/1000  (995/1000)

Revenir en haut Aller en bas

Re: simple code

Message par lamia le 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
avatar
lamia
Modérateur
Modérateur

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

Feuille de personnage
Capacité linguistique:
996/1000  (996/1000)

Revenir en haut Aller en bas

Re: simple code

Message par manianis le 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 : 3666
Date d'inscription : 11/10/2007

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

http://manianis.sitesled.com/

Revenir en haut Aller en bas

Re: simple code

Message par suneddine le 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
avatar
suneddine
Nombre Réel
Nombre Réel

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

Feuille de personnage
Capacité linguistique:
995/1000  (995/1000)

Revenir en haut Aller en bas

Re: simple code

Message par methodiX le 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

_________________
Sami - Methodix, tunis
Le génie de Newton a consisté à dire que la lune tombe alors que tout le monde voit bien qu'elle ne tombe pas.
(Paul Valéry)
_____
Cliquer ici: Voir les nouveaux messages depuis votre dernière visite
Cliquer ici: Astuce: Utiliser l'outil "Recherche" du forum
avatar
methodiX
Admin
Admin

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

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: simple code

Message par manianis le 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 : 3666
Date d'inscription : 11/10/2007

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

http://manianis.sitesled.com/

Revenir en haut Aller en bas

Re: simple code

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

bravo methodiX. Très méthodique Wink

_________________
Nabil - tunis
خير الناس أنفعهم للناس
avatar
Napoléon
Admin
Admin

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

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

http://infomath.online-talk.net

Revenir en haut Aller en bas

Re: simple code

Message par suneddine le Mer 9 Jan - 18:45

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

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

Feuille de personnage
Capacité linguistique:
995/1000  (995/1000)

Revenir en haut Aller en bas

Re: simple code

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

NON, 0.5^N = 1/2^N.
0.5/2^N = 0.5^(N+1)

_________________
Nabil - tunis
خير الناس أنفعهم للناس
avatar
Napoléon
Admin
Admin

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

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

http://infomath.online-talk.net

Revenir en haut Aller en bas

Re: simple code

Message par manianis le 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 : 3666
Date d'inscription : 11/10/2007

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

http://manianis.sitesled.com/

Revenir en haut Aller en bas

Re: simple code

Message par Napoléon le 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.

_________________
Nabil - tunis
خير الناس أنفعهم للناس
avatar
Napoléon
Admin
Admin

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

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

http://infomath.online-talk.net

Revenir en haut Aller en bas

Re: simple code

Message par manianis le 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 : 3666
Date d'inscription : 11/10/2007

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

http://manianis.sitesled.com/

Revenir en haut Aller en bas

Re: simple code

Message par methodiX le 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++.

_________________
Sami - Methodix, tunis
Le génie de Newton a consisté à dire que la lune tombe alors que tout le monde voit bien qu'elle ne tombe pas.
(Paul Valéry)
_____
Cliquer ici: Voir les nouveaux messages depuis votre dernière visite
Cliquer ici: Astuce: Utiliser l'outil "Recherche" du forum
avatar
methodiX
Admin
Admin

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

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: simple code

Message par manianis le 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 : 3666
Date d'inscription : 11/10/2007

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

http://manianis.sitesled.com/

Revenir en haut Aller en bas

Re: simple code

Message par suneddine le 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.
avatar
suneddine
Nombre Réel
Nombre Réel

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

Feuille de personnage
Capacité linguistique:
995/1000  (995/1000)

Revenir en haut Aller en bas

Re: simple code

Message par manianis le 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 : 3666
Date d'inscription : 11/10/2007

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

http://manianis.sitesled.com/

Revenir en haut Aller en bas

Re: simple code

Message par suneddine le 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
avatar
suneddine
Nombre Réel
Nombre Réel

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

Feuille de personnage
Capacité linguistique:
995/1000  (995/1000)

Revenir en haut Aller en bas

Re: simple code

Message par methodiX le Sam 12 Jan - 22:22

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

_________________
Sami - Methodix, tunis
Le génie de Newton a consisté à dire que la lune tombe alors que tout le monde voit bien qu'elle ne tombe pas.
(Paul Valéry)
_____
Cliquer ici: Voir les nouveaux messages depuis votre dernière visite
Cliquer ici: Astuce: Utiliser l'outil "Recherche" du forum
avatar
methodiX
Admin
Admin

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

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: simple code

Message par lamia le 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
avatar
lamia
Modérateur
Modérateur

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

Feuille de personnage
Capacité linguistique:
996/1000  (996/1000)

Revenir en haut Aller en bas

Re: simple code

Message par manianis le 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 : 3666
Date d'inscription : 11/10/2007

Feuille de personnage
Capacité linguistique:
999/1000  (999/1000)

http://manianis.sitesled.com/

Revenir en haut Aller en bas

Re: simple code

Message par methodiX le 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)

_________________
Sami - Methodix, tunis
Le génie de Newton a consisté à dire que la lune tombe alors que tout le monde voit bien qu'elle ne tombe pas.
(Paul Valéry)
_____
Cliquer ici: Voir les nouveaux messages depuis votre dernière visite
Cliquer ici: Astuce: Utiliser l'outil "Recherche" du forum
avatar
methodiX
Admin
Admin

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

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: simple code

Message par informix le Dim 13 Jan - 17:00

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

_________________
informix, Ecole d'ingénieurs
Les passions font vivre l'Homme; sa sagesse le fait seulement durer.
avatar
informix
Nombre Rationnel
Nombre Rationnel

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

Feuille de personnage
Capacité linguistique:
1000/1000  (1000/1000)

Revenir en haut Aller en bas

Re: simple code

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

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