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
Stránky: 1

Ahoj, napsal jsem program na řešení sudoku v C++(hrubou silou), ale konkrétní zadání zatím musím vždy napsat přímo do kódu, poradíte mi, jak vyřešit uživatelský vstup? Tzn. aby v přík.řádce člověk zadal devět čísel (vlastně číslic :-),místo neznámých políček nuly, dal enter a takhle to udělal devětkrát a mně by se to načetlo do pole 9x9. Vím, že je to zcela typický příklad, ale ačkoli mám 2 učebnice a strávil jsem hodinu na googlu, nepovedlo se mi to najít. Umím ten řádek načíst do char[],ale když jsem to z toho zkoušel kopírovat do číselného pole,nikdy se to nezdařilo. Předem děkuji!
Offline
neviem ako v c++,ale napr. v jave je ako argument main metódy pole stringov args a prvky poľa sú parametre príkazového riadku ak to je tak aj v c++ tak môžeš ošetriť vstup brať tie číslice brať ako parametre toto neber príliš vážne len nahlas rozmýšľam
Offline

Dík,ale bohužel mi to není moc jasné,jsem v programování začátečník. Teď se mi podařilo aspoň to, že se všechna čísla zadají postupně a oddělí enterem:
short int Puzzle[9][9];
for(int c=0;c<9;c++)
for (int d=0;d<9;d++)
std::cin>>Puzzle[c][d];
Ale to je dost špatnej kompromis..chtěl bych zadat celej řádek a až potom enter
Offline
aj ja som začiatočník možno väčší ako ty myslel som to tak,že pustíš to napr cez cmd alebo shell ak máš linux to je jedno a zadáš napr sudoku cislo1 cislo2
.......cislo81 počíta s tými číslami prvých 9 čísel je prvý blok atď
Offline

↑ FliegenderZirkus:
Nedá se na to použít funkce scanf? (jen tipuji, dlouho jsem v c nic nedělal)
Offline
Například tak, jak píše ↑ BrozekP:: de facto načíst řetězec a jakkoli přečíst.
Nebo možná ještě snažší, protože devíticiferné číslo se snadno vejde do 32-bitového intu:
1. ten tvůj vnitřní cyklus (přes d) zrušit
2. načíst jediné číslo (třeba 310095208), třeba do proměnné 'RadekSudoku'
3. pomocnou proměnnou (pro řád desítkové cifry) nastavit na 10^8, a dešifrovat cifry pomocí celočíselného dělení
Třeba takto:
short int Puzzle[9][9];
int Rad, RadekSudoku;
for(int c=0;c<9;c++)
{
std::cin>>RadekSudoku;
Rad = 100000000;
for (int d = 0; d < 9; d++)
{
Puzzle[c][d] = RadekSudoku/Rad;
RadekSudoku = RadekSudoku % Rad; //modulo
Rad /= 10; //snizit rad o jeden
}
}Ne, že by to nešlo napsat efektivněji, ale to by tě mohlo mást.
Offline

↑ musixx:
Díky moc, funguje to přesně tak, jak potřebuju. Jenom mi není úplně jasné, jak se z podílu
RadekSudoku/Rad
stane celé číslo, případně jak pracuje to zaokrouhlování? Vzhledem k tomu, že kód pracuje, to asi bude tak, že se vezme část po desetinnou čárku.. chápu to dobře?
Offline
pri celočíselných argumentoch delenia sa berie ako výsledok celé číslo napr. 10/7=1 123434567/1000=123343 atď keď by si ich nadefinoval ako double tak ide o bežné delenie
Offline
Stránky: 1