simple code
Forum INFOMATH :: Enseignement de l'informatique :: INFO - Supérieur (Etudiants et Professionnels) :: C/C++
Page 1 sur 2•
Page 1 sur 2 • 1, 2 
simple code
salut les infomathistes,
j'ai rencontré un code simple mais j'ai pas réussi à trouver la signification du résultat
en plus, pourquoi %g et non pas %f au niveau de l'affichage du résultat
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
mosa- Modérateur




- Messages : 636
Inscrit le : 11 Nov 2007
Age : 22
Localisation : los angeles
Feuille de personnage
Capacité linguistique:


(995/1000)
Re: simple code
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
Mais pour le %g je ne vois pas de quoi il s'agit

¤´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´ (¸.·`¤... Lamia
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´ (¸.·`¤... Lamia

lamia- Admin




- Messages : 1429
Inscrit le : 04 Nov 2007
Age : 22
Localisation : Tunis
Feuille de personnage
Capacité linguistique:


(996/1000)
Re: simple code
désolé oui il manque un (i<N) après while
je pense que le résultat a un sens
je pense que le résultat a un sens
mosa- Modérateur




- Messages : 636
Inscrit le : 11 Nov 2007
Age : 22
Localisation : los angeles
Feuille de personnage
Capacité linguistique:


(995/1000)
Re: simple code
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)]
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

lamia- Admin




- Messages : 1429
Inscrit le : 04 Nov 2007
Age : 22
Localisation : Tunis
Feuille de personnage
Capacité linguistique:


(996/1000)
Re: simple code
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).
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- Admin


- Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: simple code
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
i=0
min = 0
max = 1
x =(min+max)/2=0.5
0.5 <> 1/(2^i) = 1/(2^0) = 1
mosa- Modérateur




- Messages : 636
Inscrit le : 11 Nov 2007
Age : 22
Localisation : los angeles
Feuille de personnage
Capacité linguistique:


(995/1000)
Re: simple code
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?
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?
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)
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)

methodiX- Admin


- Messages : 811
Inscrit le : 22 Mar 2007
Localisation : marsa - IPEST
Feuille de personnage
Capacité linguistique:


(1000/1000)
Re: simple code
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?
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- Admin


- Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)

nabiL- Admin


- Messages : 1908
Inscrit le : 19 Mar 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: simple code
0.5/(2^n) au lieu de 0.5^n, non?
mosa- Modérateur




- Messages : 636
Inscrit le : 11 Nov 2007
Age : 22
Localisation : los angeles
Feuille de personnage
Capacité linguistique:


(995/1000)

nabiL- Admin


- Messages : 1908
Inscrit le : 19 Mar 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: simple code
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- Admin


- Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: simple code
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.
Il a été mentionné par methodix que c'est tiré par les cheveux comme algo.
Nabil - tunis
خير الناس أنفعهم للناس
خير الناس أنفعهم للناس

nabiL- Admin


- Messages : 1908
Inscrit le : 19 Mar 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: simple code
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- Admin


- Messages : 976
Inscrit le : 10 Oct 2007
Localisation : Tunisie
Feuille de personnage
Capacité linguistique:


(999/1000)
Re: simple code
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)
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)

methodiX- Admin


- Messages : 811
Inscrit le : 22 Mar 2007
Localisation : marsa - IPEST
Feuille de personnage
Capacité linguistique:


(1000/1000)
Page 1 sur 2 • 1, 2 



