BME Villamosmérnöki és Informatikai Kar
Mérnök-informatikus alapszak |
Nappali tagozat
2017/2018-as tanév, őszi félév
|
Egy S>0 egész szám A>1 alapú átrendezett változatát a következőképpen definiáljuk:
Írjon olyan programot Cékla nyelven (a C++ nyelv egy deklaratív
résznyelvén), amelynek fő függvénye az int
atrendezett(const int S, const int A){...}
függvény.
/* atrendezett(S, A) == SK, ha SK az S szám A alapú átrendezett változata (S>0, A>1 egész számok). Egy S szám A alapú átrendezettjét úgy kapjuk meg, hogy az S számot felírjuk az A alapú számrendszerben, a számjegyeit egy listával ábrázoljuk, a listát a fentiek szerint átrendezzük, majd a kapott lista elemeit egy A alapú szám jegyeinek tekintve előállítjuk a keresett értéket. */ int atrendezett(const int S, const int A) { ... }
A jobbrekurzív függvények kevesebb memóriát használnak, mint az egyéb rekurzív függvények, ezért a használatukat ajánljuk, azonban a pontozáskor csak azt vizsgáljuk, hogy a program a megadott (néhány másodperces) időkorláton belül előállítja-e a helyes megoldást.
Az alábbi mintamegoldás csak akkor működik helyesen, ha S < A3
:
int atrendezett(const int S, const int A) { if (S<A*A) return S; return (S/A/A*A+S%A)*A+S/A%A; }
|* atrendezett(123, 10); 132 |* atrendezett(101, 10); 110 |* atrendezett(5, 2); 6 // mert 52 = 1 0 1 és 62 = 1 1 0 |* atrendezett(1023, 10); 1203 |* atrendezett(11, 3); 15 // mert 113 = 1 0 2, és 153 = 1 2 0 |* atrendezett(162738495, 10); 123456789 |* atrendezett(15263748, 10); 12345678 |*
A programok készülhetnek MS Windows alatt is, de Linux alatt is működniük kell. A beadott programokat Linux környezetben a Cékla rendszerrel teszteljük.
Ennek a kis házi feladatnak a beadása ugyan nem kötelező, azonban a félévközi követelmények teljesítéséhez a félév során legalább három kis házi feladatot - közülük legalább egyet Prolog és legalább egyet Erlang nyelven - meg kell oldani és sikeresen be kell adni. (Sikeres az a megoldás, amelyik az összes tesztesetre helyes választ ad.)
A programot az Elektronikus
Tanársegéd segítségével weben keresztül lehet beadni, a HF
beadás menüpont alatt. Ez a nulladik, Cékla nyelvű kis
házi feladat, ennek megfelelően az ETS a beküldött megoldást
khf0.cpp
néven tárolja el és hivatkozik rá.
(A feltöltendő állomány neve tetszőleges lehet, az ETS átnevezi.)
Az osztályzat megállapításakor a határidőre beadott, minden tesztesetet helyesen megoldó kis házi feladatért plusz 1 pont jár.