Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 ?

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é ^^

Hors ligne