Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[program]turbo pascal


Rekomendowane odpowiedzi

Opublikowano

witam.potrzebuje taki oto program w pascalu:

 

program ma zamieniać liczby dziesiętne na binarne. wskazówka: wykorzystac 8 bitowa reprezentacje liczb z wykorzystaniem tabeli

 

czyli ma to wygladac tak ze podamy np 256 a program wypisze 10000000

 

pozdrawiam

Opublikowano

program zamiana_na_binarke;
uses crt;
var
n:integer;
function bin(n:integer):longint;
  begin
        if n=0 then bin:=0;
        if n=1 then bin:=1;
        if n>1 then bin:=bin(n div 2)*10+(n mod 2);
  end;
begin
   clrscr;
       writeln('Podaj liczbe ktora chcesz zamienic na binarna');
       read(n);
       writeln(bin(n));
   readkey;
end.
ewentualnie z prostym menu które pozwoli wrócić i zamienić kolejną liczbę:

 

program zamiana_na_binarke;
uses crt;
var
n,a:integer;
procedure start;
begin
  writeln('Program BIN wybierz opcje z menu: ');
  writeln('1 - Zamiana liczby dziesietnej na binarna');
  writeln('2 - wyjcie z programu');
  read(a);
  end;
function bin(n:integer):longint;
  begin
        if n=0 then bin:=0;
        if n=1 then bin:=1;
        if n>1 then bin:=bin(n div 2)*10+(n mod 2);
  end;
begin
   textcolor(lightgreen);
     while a<>2 do
     begin
       clrscr;
       start;
       case a of
       1:begin
       writeln('Podaj liczbe ktora chcesz zamienic na binarna');
       read(n);
       writeln(bin(n));
       readkey;
       end;
     end;
   end;
end.

 

Opublikowano

aha i jak wpisze np 8 to ma wypisać tak

00001000

 

a w Twoim programie wypisuje tak

1000

 

 

nie potrzebuje tej tablicy tylko mozesz mi wytlumaczyc co robi to *10 co on mnozy?

Opublikowano

Wybacz nie doczytałem :P

program dec_to_bin;

uses crt;

type Tab=array[0..16] of byte;

var 
    f:integer;
    t:tab;

procedure decbin(var t:tab);
var x,r,j:byte;
begin
    write('Podaj liczbe ');
    readln(x);
    j:=0;
    repeat
    r:=x mod 2;
    t[j]:=r;
    j:=j+1;
    x:=x div 2;
    until x=0;
    f:=j;
end;

procedure tab(t:tab);
var j:integer;
begin
    for j:=f-1 downto 0 do
    write(t[j]:4);
end;

begin
    clrscr;
    decbin(t);
    tab(t);
    readkey;
end.
 

Jest tablica i z tego co sprawdzałem działa poprawnie :P

Tyle że tablica ma większy sens przy zamianie w drugą stronę ^^

Opublikowano

Przegapiłem Twój edit :)
Mnożymy *10 liczbę z pierwszego działania (n div 2) czyli dzielenie z resztą przez 2.
Przykład będzie lepszym wytłumaczeniem:

dla liczby 20:
20 div 2 = 10
10 * 10 + 0(reszta z dzielenia 20/2 wynosi 0) =100 <--- 0


10 div 2 = 5
5 * 10 + 0(reszta z dzielenia 10/2 wynosi 0) = 50 <---0


5 div 2 = 2
2 * 10 + 1(reszta z dzielenia 5/2 wynosi 1)=21 <--- 1


2 div 2 = 1
2 * 10 + 0=20 <--- 0


1 div 2 = 0
0*10 + 1=11 <--- 1 

i wychodzi 20 = 10100

Jeżeli nie pomnożysz przez 10 będzie problem przy określeniu czy komputer ma wpisać 0 czy 1, tak sprawa jest jasna - 0 na końcu to piszemy 0, jedynka - piszemy jeden :P

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...