Mam do napisania program, i mam dla was prośby podał jakieś instrukcje/pomysły do napisania tego programu.
Przyszło mi do głowy żeby z bin na dec, w dec napisać operacje logiczna, i potem znowu wynik zapisać do systemu dwójkowego, i mam pytanie czy jest jakiś łatwiejszy sposób na napisanie? jeśli tak to prosze o instrukcje, z góry dzięki
/ / / / / / / / TREŚĆ ZADANIA / / / / / / / /
Napisac program do przeprowadzania operacji logicznych (and, or, xor, nand, nor) na co najwyzej
100-znakowych liczbach binarnych. Program pobiera liczby i operacje ze standardowego wejscia
i wypisuje wynik na standardowe wyjscie. Przykładowe wywołanie programu:
Jeśli chcesz konwertować z systemu binarnego na dziesiętny musiałbyś mieć co najmniej 100-bitowe zmienne, a nie wydaje mi się aby Pascal standardowo takie posiadał. Po prostu wykonuj te operacje na odpowiadających sobie znakach ciągów znaków, przy czym już operacje działające na znakach ‘0’ i ‘1’ musiałbyś sam napisać.
Każdą liczbę (podawaną jako parametr wywołania programu) traktuj jako ciąg (string) 100-znakowy.
No i musisz napisać kilka funkcji:
uzupełnienia liczby z przodu zerami (do 100 znaków)
operacje binarne na takich ciągach (to proste, masz pętlę po 100 pozycjach, na każdej robisz daną operację logiczną/binarną). Można to sobie nawet zoptymalizować, tworząc kilka funkcji “atomowych”, operujących na jednym bicia (znaku stringa), którą wywołujesz w pętli te 100 razy.
UWAGA: uważam, że w zapisie zadania wyrażenie “operacje logiczne” nie jest właściwe (błędne nawet) - poprawnie powinno być “operacje binarne” - bo logiczne to zero i nie-zero.
– Dodane 26.11.2012 (Pn) 21:32 –
Przykład:
function bitAND(a,b: char): char;
begin
if a='1' and b='1' then bitAND:='1'
else bitAND:='0';
end;
type liczba=string[100];
function funcAND(a,b: liczba): liczba;
var i: byte; c: liczba;
begin
for i:=1 to 100 do
c[i]:=bitAND(a[i],b[i]);
funcAND:=c;
end;
Nie wiem, czy to jest poprawnie, ale taki jest mniej więcej mój pomysł na rozwiązanie. Do tego funkcje konwertujące (uzupełniające zerami brakujące bity) parametry wywołania programu i funkcja wypisująca taką liczbę (wynik końcowy).
Ale to wyłapie od razu kompilator, a ja nie muszę przedstawić idealnego kodu bez błędów - bo to nie konkurs, tylko pomoc. Najważniejsza jest koncepcja i tą przedstawiłem dość jasno. Rzadko koduję w Pascalu (najczęściej w JavaScripcie), więc mogłem nie pamiętać o tych niuansach.