program conversionBit; uses crt; type tab=array[0..1000] of integer; type fichenbre=file of tab; const base=2; var nbreConv,nbreBits,i,j:integer; result,tabNbreChiffre,tabNbreBits,tabNbreConv:tab; valide:boolean; nombre:tab; fiche,fiche2:fichenbre; nbreChiffre,a,b,k:integer; reponse:string; procedure percent; begin a:=1; clrscr; for i:=0 to 100 do begin gotoxy (40,13); textcolor (8); write (i,'% '); delay(50); if i=a*3 then begin b:=a; a:=a+1; for j:=1 to b do begin textcolor (8); gotoxy(23+j,14);write(char(219),char(219),char(219)); gotoxy(23+j,15);write(char(219),char(219),char(219)); gotoxy(30,16);writeln('MIAGE-GI corporation ',char(184)); gotoxy(30,17);write ('----------------------'); end; end; end; clrscr; gotoxy (30,15); write ('CHARGEMENT EFFECTUE'); delay (400); end; procedure repNBase(nbreConv:integer); var i:integer; begin if nbreConv<0 then begin nbreBits:=trunc(ln(abs(nbreConv)+1)/ln(2)); if (nbreConv=-3) or (nbreConv=-1) or (nbreConv=-7) then begin nbreBits:=nbreBits+1 end else nbreBits:=(nbreBits+2); end else begin nbreBits:=trunc(ln(nbreConv+1)/ln(2)); if (nbreConv=3) or (nbreConv=1) or (nbreConv=7) then begin nbreBits:=nbreBits+1 end else nbreBits:=(nbreBits+2); end; valide:=false; if (nbreConv>=0) then result[nbreBits-1]:=0 else begin result[nbreBits-1]:=1; nbreConv:=-nbreConv; end; for i:=0 to (nbreBits-2) do begin result[i]:=nbreConv mod base ; nbreConv:= nbreConv div base ; end; if (nbreConv=0) then valide:=true; end; begin repeat assign( fiche,'c:\miage\bit.docx'); rewrite(fiche); assign(fiche2,'c:\miage\bit2.docx'); rewrite(fiche2); percent; clrscr; gotoxy(21,1); for k:=1 to 35 do begin write('*'); delay(20); end; writeln; writeln(' | |'); writeln(' | CALCULATRICE BINAIRE |'); writeln(' | |'); gotoxy(21,5); for k:=1 to 35 do begin write('*'); delay(20); end; writeln;writeln; writeln('veuillez donner s''il vous plait le nombre de chiffre … convertir'); readln(nbreChiffre); while (nbreChiffre<=0) do begin writeln('nombre entrer invalide'); writeln('veuillez redonner s''il vous plait donner le nombre de chiffre … convertir'); readln(nbreChiffre); end; tabNbreChiffre[1]:=nbreChiffre; write(fiche2,tabNbreChiffre); for i:=1 to nbreChiffre do begin writeln('donner le chiffre … convertir Nø ',i,''); readln(nbreConv); tabNbreConv[i]:=nbreConv; repNBase(nbreConv) ; tabNbreBits[i]:=nbreBits; write(fiche2,tabNbreBits); write(fiche,result); end; close(fiche) ; close(fiche2); reset(fiche); reset(fiche2); clrscr; writeln;writeln; writeln(' LA LISTE DES RESULTATS EST :'); gotoxy(24,4); for i:=1 to 28 do begin write('-'); end; writeln;writeln; read(fiche2,tabNbreChiffre); for i:=1 to tabNbreChiffre[1] do begin read(fiche,result); nombre:=result; read(fiche2,tabNbreBits); for a:=1 to 80 do begin gotoxy(a,6); write('±'); end; for a:=1 to 80 do begin gotoxy(a,7); write('±'); end; for a:=1 to 80 do begin gotoxy(a,8); write('±'); end; for b:=1 to tabNbreChiffre[1]+2 do begin gotoxy(78,8+b); write('±±±'); end; for b:=1 to tabNbreChiffre[1]+2 do begin gotoxy(1 ,8+b); write('±±±'); end; for b:=1 to tabNbreChiffre[1]+2 do begin gotoxy(50 ,8+b); write('±±±'); end; for b:=1 to tabNbreChiffre[1]+2 do begin gotoxy(27 ,8+b); write('±±±'); end; for a:=1 to 80 do begin gotoxy(a,tabNbreChiffre[1]+11); write('±'); end; gotoxy(7,7);writeln('NOMBRE EN DECIMAL'); gotoxy(33,7);writeln('NOMBRE DE BITS'); gotoxy(56,7);writeln('CONVERSION BINAIRE'); gotoxy(12,9+i);write(' ',tabNbreConv[i]); gotoxy(40,9+i);write(tabNbreBits[i]); gotoxy(59,9+i); for j:=(tabNbreBits[i]-1) downto 0 do begin write(nombre[j]); end; writeln; end; close(fiche) ; close(fiche2); gotoxy(1,13+tabNbreChiffre[1]);writeln('avez-vous terminez: oui(o) ou non(n) ?'); readln(reponse); while(reponse<>'oui') and (reponse<>'OUI') and (reponse<>'o') and (reponse<>'O') and (reponse<>'non') and (reponse<>'NON') and (reponse<>'n') and (reponse<>'N') do begin writeln('saisie incorrecte'); writeln('repondez s''il vous plait par oui(o) ou non(n)'); writeln('avez-vous terminez: oui(o) ou non(n) ?'); readln(reponse); end; if (reponse='oui') or (reponse='o') or (reponse='O') or (reponse='OUI') then begin gotoxy(23,15+tabNbreChiffre[1]); for j:=1 to 35 do begin write('*'); delay(20); end; writeln; writeln(' | |'); writeln(' | FIN DE TRAITEMENT |'); writeln(' | |'); gotoxy(23,19+tabNbreChiffre[1]); for j:=1 to 35 do begin write('*'); delay(20); end; delay(1000); end; until(reponse='oui') or (reponse='o') or (reponse='O') or (reponse='OUI'); end.