Proszę o pomoc przy napisaniu programu w Turbo Pascalu

0

Witam! :)
Potrzebuję napisać na jutro program, z którym mam problem. Jeśli ktoś umie zrobić ten program, to proszę o podpowiedź, co mam źle w kodzie.
Polecenie zadania:
Dana jest liczba 'K' typu [1..16], oraz ciąg 'K' znaków z zakresu '0'..'1'. Napisz program, który wypisze wartość liczby powstałej w wyniku utworzenia ciągu znaków.

Chodzi o system szesnastkowy.
Np:
Znak '0' + znak '1' + znak '1' = 011
011 w szesnastkowym to będzie 2 do pierwszej + 2 do drugiej. (Tak zrozumiałem to zadanie).

Jest ktoś kto mi pomoże :)?
Kod mojego programu:

USES CRT;
VAR
znak:char;
liczba,wynik,ilosc,wynik2,j,i:byte;
           BEGIN
           clrscr;
           wynik:=1;
           writeln('Ile znakow bedziesz wprowadzal? Maxymalnie 16');
           readln(ilosc);
           for i:=1 to ilosc do
               BEGIN
               writeln('Podaj znak''0'' albo ''1'':');
               readln(znak);
               liczba:=liczba+znak;
               END;
           for i:=1 to ilosc do
               BEGIN
               IF liczba[i]=2 then
                  BEGIN
                  for j:=1 to i do
                      BEGIN
                      wynik:=wynik*2;
                      wynik2:=wynik2+wynik;
                      END;
                  END;
               END;
               writeln(wynik2);
               readkey;
               end.

Proszę o pilną odpowiedź :)

0

011 w szesnastkowym to będzie 2 do pierwszej + 2 do drugiej. (Tak zrozumiałem to zadanie).

to jest system dwójkowy (binarny)

ja bym raczej bym sklonny za troche prostszym rozwiazaniem:

uses CRT;

var
  k,licz,i: Integer;
  c: char;

begin
  Write('Podaj ile znakow bedziesz wprowadzal (1-16): ');
  ReadLn(k);
  WriteLn('Podaj liczbe w systemie binarnym: (', k, ' cyfr)');
  licz:=0;
  for i:=1 to k do
    begin
      Read(c);
      licz:=licz*2;
      licz:=licz+Ord(c)-Ord('0');
    end;
  ReadLn; { liczba jest zakonczona enterem stad wczytanie z wejscia tego znaku }
  WriteLn('Twoja liczba w systemie dziesietnym to: ', licz);
  ReadLn; { czekanie na enter ktory zamknie program }
end.

Nie pozwalam kopiować tego kodu, pokombinuj sobie sam gdzie masz błędy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1