Bonjour, j'ai un exo à faire mais je suis bloqué.
L'exercice est le suivant:
Pour stocker des photos numériques, on utilise un algorithme de compression. On estime qu'à chaque niveau de compression, la taille diminue de 21,4%.
La taille initiale d'une photo est de 4Mo. On pose T0=4 et pour tout entier naturel non nul n, Tn désigne la taille de cette photo après une compression de niveau n.
1) Calculer T1 et T2
2) Pour tout n appartient à N, exprimer Tn+1 en fonction de Tn. En déduire la nature de la suite (Tn).
3) Exprimer Tn en fonction de n.
4) Peut-on stocker 20 000 photos sur une clé USB d'une capacité de 32Go? Avec quelle compression?
5) Écrire un algorithme afin de déterminer le niveau de compression nécessaire pour stocker 100 000 photos sur une clé usb de 64Go.
6) Le programmer sous Python.
Je suis bloqué à la question. Merci pour votre aide.
bonjour,
montre tes réponses aux 4 premières questions : si elles sont correctes, l'algorithme sera simple.
1) T1= 4×(1-21,4/100)=3,144Mo
T2= 3,144×(1-21,4/100)=2,5Mo
2) Tn+1= Tn(1-21,4/100)
C'est une suite géométrique.
3)Tn=4(1-21,4/100)puissance n
4)On peut stocker 20 000 photos d'une compression de 1,6Mo.
oui, c'est bien, mais T2, tu l'as arrondi, je crois.
et tu peux calculer (1-21,4/100) pour donner la valeur de la raison.
en q2 : suite géométrique de raison q= ...... et de premier terme T0=..
Q4) quel calcul as tu fait ?
C'est ce calcul qui servira pour la question 5
pour moi, il faut répondre le niveau de compression.. (combien de fois doit on compresser).
Alors oui pour T2 j'ai arrondi le résultat. Et pour la question 4, j'ai fait 32 000/100000 pour avoir la taille des photos qui est de 1,6Mo. Et puis j'ai continuer la suite jusqu'à tomber sur la bonne taille qui est 1,6Mo. J'ai trouvé T4= 1,9×(1-21,4/100).
T2 : n'arrondis pas.
calcule (1-21,4/100) pour donner la valeur de la raison.
en q2 : suite géométrique de raison q= ......
et de premier terme T0=....
remplis les pointillés !
Q4) je ne comprends pas ton calcul.
pourquoi diviser 32000 par 100000 ?
D'ou vient le 1,9 ??
mais continuer la suite est une bonne idée..
chaque photo "pèse" 4 Mo
20000 photos "pèsent" 80000 Mo
donc T0 = 80000
on peut calculer T1, T2, T3, T4
et on voit que T4 = 30533 Mo donc avec 4 niveaux de compression, on peut ranger les 20000 sur une clé de 32Go
q= 0,786
T0= 4
Pour la question 4, je cherchais à savoir la taille des photos dans 32Go si je veux en mettre 20000. Mais je me suis trompé dans ma réponse. J'ai mit 100 000 à la place de 20 000. Donc du coup pour la question 5, T0 va être égale à 400000 car 4×100000= 400000?
oui, c'est ça.
Q5) on va écrire l'algo en langage naturel.
On démarre à T = 400000 et c'est le niveau n=0
ensuite on va faire le calcul de compression
comment écris tu cette ligne de calcul ?
ça, c'est le calcul quand tu connais n,
mais en q4, pour t'arreter à n=4, tu as calculé T1, T2, T3, T4
donc ici, on va faire pareil , car on cherche n
T= 400000
n=0
T = T * 0,786 ici on fait un niveau de compression.
n=n+1 ici, on note qu'on a fait un niveau de plus
cette partie rouge, à ton avis, on va la faire tant que quoi ?
oui, donc ca donne :
T= 400000
n=0
tant que T > 64000 faire
T = T * 0,786 ici on fait un niveau de compression.
n=n+1 ici, on note qu'on a fait un niveau de plus
afficher (n)
afficher (T)
tu es d'accord ?
tu peux le programmer en python, comme demandé en question 6.
si tu veux, tu peux me montrer ton prog python, et ce qu'il te donne comme réponse, je te dirai si c'est correct.
Alors, je l'ai pas encore testé.
Def compression(n):
T=400000
n=0
While T!< 64000:
T= 400000*0.786puissance n
n=0
return(T)
Print (T)
Print (n)
Alors je viens de corriger:
Def compression(n):
T=400000
n=0
While T!< 64000:
T= 400000*0.786puissance n
n=n+1
return(T)
Print (T)
Print (n)
Mais il me dit qu'il y a une erreur à la ligne 4. On ne peut pas écrire "!<" ?
Je viens de recoriger:
Def compression(n):
T=400000
n=0
While T> 64000:
T= 400000*0.786puissance n
n=n+1
Else:
Print (T)
Print (n)
Il m'affiche:
58269.37........
9
bonsoir,
à 18;14, je t'ai donné l'algo en langage naturel..
mais ton programme dit un truc différent.
T= 400000
n=0
tant que T > 64000 faire
T = T * 0,786
n=n+1
afficher (n)
afficher (T)
la ligne en rouge est traduite en python avec "puissance n" ??
il n'y a pas de puissance n.
Ensuite, je ne vois pas pourquoi tu as écrit Else ..
Il n'y a aucune raison de traduire un "sinon".. d'autant qu'il n'y a pas de "if"...
58269 pour T, c'est correct.
moi, je crois qu'il faut 8 compressions, et pas 9.
en effet, si tu calcules 400000*0,786^8, tu obtiens bien 58269...
tu dis que ton programme fonctionne ? je suis un peu étonnée..
car tu programme une "def" sans return.. et je ne vois pas comment tu l'appelles..
Alors le programme fonctionne mais justement avant j'avais mit un return sauf que le programme ne marchait pas. Et si je ne met pas le else, le programme n'affiche pas les résultats. Si je met les 2 Print tout seul sans else, ça ne m'affiche rien. Et oui normalement c'est 8 mais je ne sais pas pourquoi ça me met 9.
Je t'aide pour le programme Python .
** message modéré ** A LIRE AVANT DE POSTER OU DE RÉPONDRE, MERCI
malou edit > ** sympa de ta part de vouloir aider plus jeune, c'est bien l'esprit de notre site, mais....nous ne sommes pas là pour montrer ce que nous savons faire, mais pour amener l'élève à le comprendre et le faire d'une part et l'intervenant qui aidait n'a manifestement pas abandonné son sujet d'autre part **
** message modéré ** A LIRE AVANT DE POSTER OU DE RÉPONDRE, MERCI
bonjour Dalila39,
C'est bien de faire des essais, et de trouver des astuces pour que ton programme fonctionne, (c'est créatif ) mais il faut surtout faire en sorte qu'il fonctionne correctement, en donnant les bonnes réponses.
Par exemple, tu mets un Else "pour que ça fonctionne" : ce Else n'a aucune raison d'être là, demande toi plutôt pourquoi ça ne fonctionne pas. Car une autre fois, vas tu essayer tous les mots clés que tu connais pour tenter de faire fonctionner ? Non, ça n'est pas possible.
Reprends exactement l'algo en langage naturel de la question 5.
Traduis le tel quel en python (puisque le return te gêne, ne fais pas une def dans un premier temps), et execute ce petit morceau de code.
T= 400000
n=0
tant que T > 64000 faire
T = T * 0,786
n=n+1
afficher (n)
afficher (T)
Vas y !
Bonjour Leile
L'algorithme est correcte mais Python affiche n = 9 .
Donc j'ai fait quelque manipulation et je conseille de mettre le n=n+1 avant le T=T*64000 . Je sais pas pourquoi en Python c'est comme ça . C'est un conseille .
Excusez moi malou .
bonjour foq,
merci de ce conseil.
déplacer le n+1 :
oui, bien sûr ce serait une façon d'obtenir la bonne réponse.
Mais l'ennui, c'est "Je sais pas pourquoi en Python c'est comme ça ."
Normalement, ce programme est tout simple, sans Else, sans puissance, etc..
et on ne sait pas comment cette def (sans return !) est appelée par Dalila39.
Il est déjà bien bizarre, n'est ce pas ?
alors " pourquoi en Python c'est comme ça ." : ici, ce n'est pas Python qui est en cause, c'est le programme de Dalila39.
Voilà pourquoi je lui recommande de revenir à son algo, simple et facilement programmable.
NB :pour moi, un algo de 8 lignes devrait fonctionner tout de suite, sans lignes inutiles, sans bizarrerie. Sinon, comment fera-t-on pour un algo de 80 lignes ? et de 800 lignes ? ou plus ...
Oui c'est vrai . Un algorithme est simple en language naturel même sans faire de la programmation on peut faire un algorithme.
Dalila39 a du confondre algorithme et programme. Cela arrive. Mais Dalila39 se complique trop . Algo simple= programme simple . De plus il y a pas besoin de faire une fonction .
Bonne chance
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :