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 26. 01. 2011 23:29

gigo
Příspěvky: 93
Reputace:   
 

čísla s různými ciframi

dobrý den
dělám si úlohy ze sbírky pana kryla a  narazil jsem na par o kterych nemam ani paru jak je resit či jaký je vůbec algoritmus.
všechna k-ciferná čísla v jejichž dekadickém zápisu jsou všechny cifry různé jsme myšlenkově seřadili podle velikosti.
napište podprogram, který k zadanému číslu této vlastnosti spočte jeho pořadí.
a podobná úloha k zadanému pořadí určit příslušné číslo
děkuju

Offline

 

#2 28. 01. 2011 00:32

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: čísla s různými ciframi

Napadlo me k tomu tohle: (jestli to stale potrebujes)

Kdyz budes postupovat od prvni cifry (s nejvyssi vahou), tak pro to prvni cifru mas vzdy 10 moznosti (0, 1, 2 ... 8, 9).
K prvni cifre dal budes hledat druhou cifru - tam je uz jen 9 moznosti, protoze jedna byla spotrebovana na 1 cifru. Takze kdyz cifru na 1. miste vynasobis 9, dostanes poradi toho dvojciferneho cisla za predpokladu, ze cifra na 2. miste je nejnizsi mozna. Cili kdyz 2. cifra nebude nejnizsi mozna, staci ji prictes ji k tomu poradi. Dal v pripade, ze je vyssi nez 1. cifra, musis jeste 1 odecist, protoze jedno cislo se vynechalo. Takhle dostanes poradi dvojciferneho cisla (indexovanho od 0). Podobne muzes postupovat az pro 10 cifer. Kdyz pridas 3. cifru, mas pro kazdou predchozi kombinaci dvou cifer 8 moznosti, cili puvodni dvojciferne poradi vynasobis 8. Prictes 3. cifru a odectes jedna kdyz je vetsi nez prvni a kdyz vetsi nez druha. A tak dale pro dalsi cifry. Nevim, jestli jsem to dobre vysvetlil a jestli jsou moje myslenky spravne. Kazdopadne tady jsem neco naprogramoval v C++ : (je to srozumitelnejsi nez ten text, rekl bych :-) )

Code:

int ZjistiPoradi(int Cifra[], int PocetCifer){
    int Poradi, Nasobitel;
    Poradi = 0;
    Nasobitel = 10;
    for (int Index = 0; Index < PocetCifer; Index ++){
        Poradi *= Nasobitel;
        Poradi += Cifra[Index];
        Nasobitel -= 1;
        for (int VnitrniIndex = 0; VnitrniIndex < Index; VnitrniIndex ++){
            if (Cifra[Index] > Cifra[VnitrniIndex]) Poradi --;
        }
    }
    return (Poradi + 1);
}

Cifry jsou brany od nejvyssi vahy po nejnizsi, normalne tak jak se cislo pise. Trochu jsem to testoval, a zdalo se mi, ze to funguje, ale nerucim za to :-) (Jeste se kdyztak zitra podivam na tu druhou ulohu, to by melo byt skoro to same)

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson