Informatika2-2012/Hazi04
A MathWikiből
(Változatok közti eltérés)
Ador (vitalap | szerkesztései) (Új oldal, tartalma: „=== 4. házi feladat: Sudoku megoldását segítő kis program === A [http://hu.wikipedia.org/wiki/Sz%C3%BAdoku Sudoku] egy számkitöltögetős játék, amit általá…”) |
Ador (vitalap | szerkesztései) (→A kód amit ki kell egészíteni) |
||
(egy szerkesztő 2 közbeeső változata nincs mutatva) | |||
1. sor: | 1. sor: | ||
− | + | == 4. házi feladat: Sudoku megoldását segítő kis program == | |
A [http://hu.wikipedia.org/wiki/Sz%C3%BAdoku Sudoku] egy számkitöltögetős játék, amit általában 9x9-es táblán játszanak. | A [http://hu.wikipedia.org/wiki/Sz%C3%BAdoku Sudoku] egy számkitöltögetős játék, amit általában 9x9-es táblán játszanak. | ||
13. sor: | 13. sor: | ||
Nem kötelező, de a ''main()'' függvényt kiegészítheted azzal, hogy érvénytelen bemenet (1-nél kisebb vagy 9-nél nagyobb értékek) esetén 'H' betűt írjon ki. | Nem kötelező, de a ''main()'' függvényt kiegészítheted azzal, hogy érvénytelen bemenet (1-nél kisebb vagy 9-nél nagyobb értékek) esetén 'H' betűt írjon ki. | ||
+ | |||
+ | ===== A kód amit ki kell egészíteni ===== | ||
+ | <c> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | int tabla[9][9]; | ||
+ | |||
+ | /* | ||
+ | A tábla: | ||
+ | 5 3 0 0 7 0 0 0 0 | ||
+ | 6 0 0 1 9 5 0 0 0 | ||
+ | 0 9 8 0 0 0 0 6 0 | ||
+ | 8 0 0 0 6 0 0 0 3 | ||
+ | 4 0 0 8 0 3 0 0 1 | ||
+ | 7 0 0 0 2 0 0 0 6 | ||
+ | 0 6 0 0 0 0 2 8 0 | ||
+ | 0 0 0 4 1 9 0 0 5 | ||
+ | 0 0 0 0 8 0 0 7 9 | ||
+ | */ | ||
+ | void tabla_kitolt() { | ||
+ | tabla[0][0] = 5; | ||
+ | tabla[0][1] = 3; | ||
+ | tabla[0][4] = 7; | ||
+ | tabla[1][0] = 6; | ||
+ | tabla[1][3] = 1; | ||
+ | tabla[1][4] = 9; | ||
+ | tabla[1][5] = 5; | ||
+ | tabla[2][1] = 9; | ||
+ | tabla[2][2] = 8; | ||
+ | tabla[2][7] = 6; | ||
+ | tabla[3][0] = 8; | ||
+ | tabla[3][4] = 6; | ||
+ | tabla[3][8] = 3; | ||
+ | tabla[4][0] = 4; | ||
+ | tabla[4][3] = 8; | ||
+ | tabla[4][5] = 3; | ||
+ | tabla[4][8] = 1; | ||
+ | tabla[5][0] = 7; | ||
+ | tabla[5][4] = 2; | ||
+ | tabla[5][8] = 6; | ||
+ | tabla[6][1] = 6; | ||
+ | tabla[6][6] = 2; | ||
+ | tabla[6][7] = 8; | ||
+ | tabla[7][3] = 4; | ||
+ | tabla[7][4] = 1; | ||
+ | tabla[7][5] = 9; | ||
+ | tabla[7][8] = 5; | ||
+ | tabla[8][4] = 8; | ||
+ | tabla[8][7] = 7; | ||
+ | tabla[8][8] = 9; | ||
+ | } | ||
+ | |||
+ | void ures_tabla() { | ||
+ | /* ezt is meg kell írni... */ | ||
+ | } | ||
+ | |||
+ | /* és kell még néhány függvény... */ | ||
+ | |||
+ | int main() { | ||
+ | ures_tabla(); | ||
+ | tabla_kitolt(); | ||
+ | int ertek = 0; | ||
+ | int sor, oszlop; | ||
+ | printf("Sudoku segito program.\nSzokozokkel elvalasztva ird be a kerdeses erteket, a sort es az oszlopot(mindegyik ertek 1 - 9 kozotti lehet)! Ha szerepelhet az adott helyen az ertek akkor 'I'-t, ha nem akkor 'N'-et irok ki.\nHa a kapott keresendo ertek 0 akkor kilepek.\n"); | ||
+ | do { | ||
+ | scanf("%d %d %d", &ertek, &sor, &oszlop); | ||
+ | if (ertek > 0 && ertek < 10) { | ||
+ | if ( /* lehet_e_itt(...) függvény hívása */) { | ||
+ | printf("I\n"); | ||
+ | } else { | ||
+ | printf("N\n"); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | while (ertek > 0); | ||
+ | return 0; | ||
+ | } | ||
+ | </c> | ||
===== Segítség a teszteléshez ===== | ===== Segítség a teszteléshez ===== | ||
Néhány bemenet és elvárt kimenet pár: | Néhány bemenet és elvárt kimenet pár: | ||
− | 1 1 1 -> I | + | 1 1 1 -> I |
− | 1 2 9 -> N | + | 1 2 9 -> N |
− | 7 1 1 -> N | + | 7 1 1 -> N |
− | 7 2 2 -> I | + | 7 2 2 -> I |
A lap jelenlegi, 2012. március 3., 00:23-kori változata
4. házi feladat: Sudoku megoldását segítő kis program
A Sudoku egy számkitöltögetős játék, amit általában 9x9-es táblán játszanak.
A feladat, hogy egészítsd ki a lenti C kódot (legalább) hat függvénnyel, melyek a következő feladatokat végzik el:
- kitölti a táblát 0 értékekkel (void ures_tabla() , ez már meg is van hívva a main()-ben)
- eldönti hogy egy adott sorban szerepelhet-e egy adott érték (vagyis hogy nincs még ott olyan)
- eldönti hogy egy adott oszlopban szerepelhet-e egy adott érték (vagyis hogy nincs még ott olyan)
- egy pozícióhoz (sor, oszlop) meghatározza annak a 3x3-as kis négyzetnek a határait, amibe az tartozik. (itt mivel több értéket kellene egyszerre visszaadni, használj mutatót paraméterként!)
- eldönti hogy egy adott pozíción szerepelhet-e egy adott érték a pozícióhoz tartozó 3x3-as négyzetben levő számokat tekintve (vagyis hogy nincs még ott olyan) (használd az előző függvényt)
- eldönti hogy egy adott pozícióban(sor és oszlop) szerepelhet-e egy adott érték (int lehet_e_itt(int ertek, int sor, int oszlop) , ez használja az előzőeket)
Nem kötelező, de a main() függvényt kiegészítheted azzal, hogy érvénytelen bemenet (1-nél kisebb vagy 9-nél nagyobb értékek) esetén 'H' betűt írjon ki.
A kód amit ki kell egészíteni
#include <stdio.h> int tabla[9][9]; /* A tábla: 5 3 0 0 7 0 0 0 0 6 0 0 1 9 5 0 0 0 0 9 8 0 0 0 0 6 0 8 0 0 0 6 0 0 0 3 4 0 0 8 0 3 0 0 1 7 0 0 0 2 0 0 0 6 0 6 0 0 0 0 2 8 0 0 0 0 4 1 9 0 0 5 0 0 0 0 8 0 0 7 9 */ void tabla_kitolt() { tabla[0][0] = 5; tabla[0][1] = 3; tabla[0][4] = 7; tabla[1][0] = 6; tabla[1][3] = 1; tabla[1][4] = 9; tabla[1][5] = 5; tabla[2][1] = 9; tabla[2][2] = 8; tabla[2][7] = 6; tabla[3][0] = 8; tabla[3][4] = 6; tabla[3][8] = 3; tabla[4][0] = 4; tabla[4][3] = 8; tabla[4][5] = 3; tabla[4][8] = 1; tabla[5][0] = 7; tabla[5][4] = 2; tabla[5][8] = 6; tabla[6][1] = 6; tabla[6][6] = 2; tabla[6][7] = 8; tabla[7][3] = 4; tabla[7][4] = 1; tabla[7][5] = 9; tabla[7][8] = 5; tabla[8][4] = 8; tabla[8][7] = 7; tabla[8][8] = 9; } void ures_tabla() { /* ezt is meg kell írni... */ } /* és kell még néhány függvény... */ int main() { ures_tabla(); tabla_kitolt(); int ertek = 0; int sor, oszlop; printf("Sudoku segito program.\nSzokozokkel elvalasztva ird be a kerdeses erteket, a sort es az oszlopot(mindegyik ertek 1 - 9 kozotti lehet)! Ha szerepelhet az adott helyen az ertek akkor 'I'-t, ha nem akkor 'N'-et irok ki.\nHa a kapott keresendo ertek 0 akkor kilepek.\n"); do { scanf("%d %d %d", &ertek, &sor, &oszlop); if (ertek > 0 && ertek < 10) { if ( /* lehet_e_itt(...) függvény hívása */) { printf("I\n"); } else { printf("N\n"); } } } while (ertek > 0); return 0; }
Segítség a teszteléshez
Néhány bemenet és elvárt kimenet pár:
1 1 1 -> I 1 2 9 -> N 7 1 1 -> N 7 2 2 -> I