#26 Le 26/02/2015, à 00:00
- NY152
Re : [RESOLU] Boucle avec un nombre non-entier :/
En gros il vaudrait mieux passer par un langage compilé pour faire plus propre ?
.:NY152:.
Ma config de foufou ^^
Hors ligne
#27 Le 26/02/2015, à 00:42
- Rufus T. Firefly
Re : [RESOLU] Boucle avec un nombre non-entier :/
Pas du tout ! Ton problème est mal analysé, tout simplement. Tu sais le résultat que tu veux obtenir, mais tu ne sais pas très bien comment l'obtenir, et j'ai l'impression que tu tentes un peu au pif...
Le script de ton premier post, par exemple, est une boucle sans fin : tu testes une variable, et rien, dans la boucle, ne la modifie. Donc ta boucle ne s'arrêtera jamais, $b va être indéfiniment incrémenté, et l'ordi risque de planter par dépassement de capacité (overflow)... Même si ça n'est qu'un exemple, il y a un défaut fondamental de logique dedans.
Il faut que tu commences par faire un algorithme (simple), sur un bout de papier, avec un crayon, en définissant les constantes, les variables, les formules correctes (que tu comprends), des tests corrects, avec ce que ça doit faire selon le résultat... Une fois que ça c'est bien décortiqué, tu peux le programmer dans n'importe quel langage. Pour un truc aussi simple, bash convient très bien.
Dernière modification par Rufus T. Firefly (Le 26/02/2015, à 00:50)
La provocation est une façon de remettre la réalité sur ses pieds. (Bertolt Brecht)
Il n'y a pas de route royale pour la science et ceux-là seulement ont chance d'arriver à ses sommets lumineux qui ne craignent pas de se fatiguer à gravir ses sentiers escarpés. (Karl Marx)
Il est devenu plus facile de penser la fin du monde que la fin du capitalisme
Hors ligne
#28 Le 26/02/2015, à 09:42
- pingouinux
Re : [RESOLU] Boucle avec un nombre non-entier :/
Ta formule est vraisemblablement fausse, il faudrait voir où tu l'as trouvée, et la vérifier.
Après quelques essais, j'ai réussi à tomber sur tes valeurs, avec ce script (là encore, il faudrait vérifier que la formule est correcte)
largeur=1920; hauteur=1080; ips=30
BitPerPixel=.076
# Valeur réelle
bitrate=$(bc -l <<<"$largeur*$hauteur*$ips*$BitPerPixel/1000"); echo $bitrate
# Valeur entière (arrondie au plus près)
bitrate=$(bc <<<"($largeur*$hauteur*$ips*$BitPerPixel+500)/1000"); echo $bitrate
BitPerPixel=76 # Suggestion de Sciensous
# Valeur entière (arrondie à l'entier inférieur)
bitrate=$(( largeur*hauteur*ips*BitPerPixel/1000000 )); echo $bitrate
# Valeur entière (arrondie au plus près)
bitrate=$(( (largeur*hauteur*ips*BitPerPixel+500000)/1000000 )); echo $bitrate
qui donne ce résultat
4727.80800000000000000000
4728
4727
4728
Hors ligne
#29 Le 26/02/2015, à 12:13
- NY152
Re : [RESOLU] Boucle avec un nombre non-entier :/
Voilà le résultat que je cherchais ^^
echo -n "Encodage 720p ou 1080p ? : "; read res
case $res in
720p | 720 )
largeur=1280
hauteur=720
BitPerPixel=0.082
echo ;;
1080p | 1080 )
largeur=1920
hauteur=1080
BitPerPixel=0.076
echo ;;
* )
echo "entrée incorrecte, recommencez !"
exit 0
echo ;;
esac
echo -n "Image par seconde : "
read ips
bitrate=$(bc <<<"($largeur*$hauteur*$ips*$BitPerPixel+500)/1000")
echo $largeur $hauteur $ips $BitPerPixel $bitrate
Merci de votre aide, ça m'a bien débloqué ^^
.:NY152:.
Ma config de foufou ^^
Hors ligne