Matematické Fórum

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

#1 13. 11. 2011 16:53

Trerea
Zelenáč
Příspěvky: 2
Reputace:   
 

Symetrické číslo

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

 

#2 13. 11. 2011 17:22

rleg
Místo: Ostrava
Příspěvky: 921
Škola: VŠB FMMI (10-16, Ing.)
Reputace:   46 
 

Re: Symetrické číslo

↑ 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.


Radim, tedy jsem.

Dobrá rada je drahá, ta moje je zdarma.

Offline

 

#3 13. 11. 2011 17:28

Trerea
Zelenáč
Příspěvky: 2
Reputace:   
 

Re: Symetrické číslo

↑ rleg:


To mě vůbec nenapadlo... Sice nevím, jak se otáčí řetězec, ale kouknu na to. Dík

Offline

 

#4 13. 11. 2011 17:34

rleg
Místo: Ostrava
Příspěvky: 921
Škola: VŠB FMMI (10-16, Ing.)
Reputace:   46 
 

Re: Symetrické číslo

↑ Trerea: no, ve VB bych ho otočil zhruba takhle

Code:

For i = Len(retez) To 1 Step -1
    retez_otoceny = retez_otoceny & Mid(retez, i, 1)
Next i

Radim, tedy jsem.

Dobrá rada je drahá, ta moje je zdarma.

Offline

 

#5 13. 11. 2011 19:33

jindra
Příspěvky: 78
Reputace:   
 

Re: Symetrické číslo

Takovému řetězci se říká palindrom,  popis a jiný algoritmus najdeš třeba zde Odkaz

Jinak způsob od rleg bude fungovat také. Ovšem je pomalejší než ten co najdeš na tom odkazu.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson