dolsky
Messages postés18Date d'inscriptionvendredi 30 novembre 2007StatutMembreDernière intervention28 janvier 2011
-
1 juin 2008 à 13:35
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
1 juin 2008 à 19:46
Nous travaillons sur cet exercice et on a trouvé des difficultés à le résoudre.
SVP, si vous pouvez nous aider à le resoudre:)
Un CODEC est un logiciel compresseur décompresseur de fichiers. En effet, les suite de bits composant un fichier
comportent des similitudes comme 10000111. Plutôt que de stocker la totalité de cet octet, on gagne de la place en
écrivant 14031 (qui se lit un quatre zéros trois un). Cet octet (huit bits) retrouva ensuite son format original à la
décompression.
Il s'agit alors de saisir une chaîne de huit chiffres formée uniquement 0 et 1 pour désigner un octet puis la compresser
suivant le principe de compression du CODEC et enfin l'afficher.
Exemple :
Si octet = ?10010111? Alors l'octet compressé est : ?1201031?
Un CODEC est un logiciel compresseur décompresseur de fichiers. En effet, les suite de bits composant un fichier
comportent des similitudes comme 10000111. Plutôt que de stocker la totalité de cet octet, on gagne de la place en
écrivant 14031 (qui se lit un quatre zéros trois un). Cet octet (huit bits) retrouva ensuite son format original à la
décompression.
Il s'agit alors de saisir une chaîne de huit chiffres formée uniquement 0 et 1 pour désigner un octet puis la compresser
suivant le principe de compression du CODEC et enfin l'afficher.
Exemple :
Si octet = ?10010111? Alors l'octet compressé est : ?1201031?
Voici le code VB:
Module
Module1
Sub Main()
Dim tab() As String
Dim ok As Boolean = True
Dim i, l, occ As Integer
Dim car As String
Dim octet As String = ""
Dim oct As String
Console.WriteLine(
"Tapez la valeur de l'octet")
oct = Console.ReadLine
l = oct.Length
ReDim tab(l)
For i = 0 To l - 1
tab(i) = oct.Substring(i, 1)
Console.WriteLine(tab(i))
Next
Do
If tab(i) <> 0 Or tab(i) <> 1 Then
i = i + 1
End If Loop Until (ok False) Or (i > 8) And l 8
i = 1
Do
occ = 1
ok =
True
Do
If tab(i) = tab(i + 1) Then
occ = occ + 1
i = i + 1
Else
ok =
False
End If
Loop Until ok = False Or i > 8
If occ = 1 Then
octet = oct & occ
Else
Console.WriteLine(oct & occ)
End If
i = i + 1
Loop Until i > 8
Console.WriteLine(
"l'octet compressé est" & octet)
Console.ReadKey()
End Sub
End
Module
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 1 juin 2008 à 19:46
salut,
je ne pige pas trop ta démarche actuelle mais bon...
voici ce que çà donnerait à peu près en VB6, j'ai aéré pour que tu puisses bien voir le fonctionnement
Sub Main()
Dim sSerie As String
sSerie = InputBox("Saisissez votre suite de 8
bits", , "10010111")
If Not IsValidSerie(sSerie) Then
MsgBox "Valeur incorrecte, FIN"
Else
' tableau de
bits
Dim iArr(1 To 8) As Integer
Dim i As Integer
Dim j As Integer
For i = 1 To 8
iArr(i) = Mid(sSerie, i, 1)
'Debug.Print iArr(i)
Next i
' compose le retour
Dim iSearch As Integer
Dim iCount As Integer
Dim sRet As String
sRet = vbNullString
For i = 1 To 7
iSearch = iArr(i)
iCount = 1
For j = i + 1 To 8
If iArr(j) = iSearch Then
iCount = iCount + 1
Else
i = i + iCount - 1
Exit For
End If
Next j
'
trace
Debug.Print iCount & " fois le carac
" & iSearch
' retour
If iCount = 1 Then
' 1 seul = on met le
carac
sRet = sRet & CStr(iSearch)
Else
' plusieurs =
compte+carac concerné
sRet = sRet & CStr(iCount) & CStr(iSearch)
End If
Private Function IsValidSerie(ByVal sStr As String) As Boolean
Dim i%, c$
' 8 carac
If LenB(sStr) = 16 Then
' que des 0 ou 1
For i = 1 To 8
c = Mid$(sStr, i, 1)
If Not (c = "0" Or c = "1") Then Exit Function
Next i
IsValidSerie = True
End If
End Function
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp