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
Zdravím,
zkoušela jsem vymyslet zdroják na úlohu se zadáním:
Navrhněte funkci sloužící k testování, zda je dekadický zápis zadaného přirozeného čísla symetrický (tj. stejný při čtení zleva i zprava).
Program dostane na vstupu posloupnost přirozených čísel ukončenou 0, která do posloupnosti nepatří. Každý prvek posloupnosti bude na jednom řádku. Na výstup vypíše ta čísla ze vstupní posloupnosti, jejichž zápis je symetrický. Čísla na výstupu budou oddělená mezerou.
Pokud vstupní číslo obsahuje na konci nuly, pak symetrický zápis nemá. Všechna čísla se vejdou do 32-bitového integeru.
Příklad:
Vstup
15651
8521
3647
123321
51215
3000
0
Výstup
15651 123321 51215
Můj kód se mi bohužel ohodnotil jen 4 body z 20 a já nevím, kde mám chybu. Byl byste někdo tak moc moc hodný a zkusil mi nastínit ten problém?
Kód:
program sym;
var b : string;
a : integer;
function hledam (b: string) : integer;
begin
readln(b);
if ((b[1] = b[5]) and (b[2] = b[4])) or ((b[1] = b[6]) and (b[2] = b[5]) and (b[3] = b[4]))
then write(b, ' ');
end;
begin
readln(a);
if a <> 0 then
begin
Str(a,b);
hledam(b);
end;
end.
Díky moc.
Offline
↑ Trerea: Ahoj, sice tenhle jazyk neovládám, ale co vidím, tak bych řekl, že ten tvůj algoritmus funguje pouze na 5 a 6ticiferná čísla.
Já osobně bych na tuhle úlohu šel tak, že načtu číslo, převedu ho na řetězec, zrcadlově bych ten řetězec obrátil a porovnal s původním řetězcem. Pokud jsou stejné, tak máš symetrické číslo.
Offline
↑ Trerea: no, ve VB bych ho otočil zhruba takhle
For i = Len(retez) To 1 Step -1
retez_otoceny = retez_otoceny & Mid(retez, i, 1)
Next iOffline