Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Ahoj mam problem s programom: na vstupe dostavame n a mam vypisat vsetky n-ciferne cisla v dvojkovej sustave aj s 0000,0001 a spol. Neviem prečo mi však program nefunguje. (Mam to riesit bez rekurzie). Vopred dakujem za rady.
program jn;
var a:array[1..64] of string;
i,j,n,x,p:integer;
one,zero,swap:char;
begin
one:='1';
zero:='0';
swap:=' ';
x:=1;
p:=1;
writeln('zadaj cislo od 1 po 6');
read(n);
for i:=1 to n do x:=x*2;
for i:=1 to n do begin
p:=p*2;
for j:=1 to x do begin
if (j mod p)=1 then begin
swap:=zero;
zero:=one;
one:=swap;
a[j]:=a[j]+one;
end
else a[j]:=a[j]+one;
end;
end;
for i:=1 to x do writeln(a[x]);
end.Offline
ahoj ↑ armor:,
Tomu kódu nerozumím, takže ani nevím, proč by vlastně fungovat měl. Já bych to udělal úplně jinak. Pro všechna binární n-ciferná čísla c platí
. Takže bych napsal cyklus přes všechna tato čísla a každé z nich převedl do dvojkové soustavy.
Offline
↑ armor:
A kde tam potom máš třeba 1000000 ? Nebo 1001000?
Offline
↑ Eratosthenes: su tam len si to asi zle pochopil ten algoritmus co chcem naprogramovat funguje takto:
napr pre n=3
pole s 8 stringami
1 2 3 4 5 6 7 8
____________
1 0 1 0 1 0 1 0 (1vrstva)
1 1 0 0 1 1 0 0 (2 vrstva)
1 1 1 1 0 0 0 0 (3 vrstva)
Offline
↑ armor:
Pochopil jsem. Fungovat by to mělo, až na to, že polovina z těch čísel není trojciferná. Pro trojciferné číslo je třeba použít "dvojciferný" algoritmus a ke čtyřem číslům, která tak vyjdou přilepit na první místo jedničku.
Offline
↑ Eratosthenes: v zadaní mam aj vrátane tých čo začínajú nulami, čiže výstup pre trojku má obsahovať aj 0000,0001... Atď
Offline
↑ armor:
Aha, pak by to mělo fungovat...
Offline
↑ armor:
má tam
for i:=1 to x do writeln(a[x]);
zkus spíš
for i:=1 to x do writeln(a[i]); :-)
Offline