Matematické Fórum


1. 8. 2026 (L) Fórum bude brzy uzavřeno 😿

Nejste přihlášen(a). Přihlásit

#1 16. 07. 2009 14:30

FliegenderZirkus
Příspěvky: 544
Škola: RWTH Aachen
Reputace:   25 
 

Zadání číselného pole v C++

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

 

#2 16. 07. 2009 14:44

jarrro
Příspěvky: 5492
Škola: UMB BB Matematická analýza
Reputace:   303 
Web
 

Re: Zadání číselného pole v C++

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


MATH IS THE BEST!!!

Offline

 

#3 16. 07. 2009 14:53

FliegenderZirkus
Příspěvky: 544
Škola: RWTH Aachen
Reputace:   25 
 

Re: Zadání číselného pole v C++

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

 

#4 16. 07. 2009 14:58

jarrro
Příspěvky: 5492
Škola: UMB BB Matematická analýza
Reputace:   303 
Web
 

Re: Zadání číselného pole v C++

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ď


MATH IS THE BEST!!!

Offline

 

#5 16. 07. 2009 15:05

Pavel Brožek
Místo: Praha
Příspěvky: 5694
Škola: Informatika na MFF UK
Pozice: Student
Reputace:   194 
 

Re: Zadání číselného pole v C++

↑ FliegenderZirkus:

Nedá se na to použít funkce scanf? (jen tipuji, dlouho jsem v c nic nedělal)

Offline

 

#6 16. 07. 2009 15:29 — Editoval musixx (16. 07. 2009 15:40)

musixx
Místo: Brno
Příspěvky: 1771
Reputace:   45 
 

Re: Zadání číselného pole v C++

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:

Code:

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

 

#7 16. 07. 2009 16:31

FliegenderZirkus
Příspěvky: 544
Škola: RWTH Aachen
Reputace:   25 
 

Re: Zadání číselného pole v C++

↑ 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

 

#8 16. 07. 2009 16:51

jarrro
Příspěvky: 5492
Škola: UMB BB Matematická analýza
Reputace:   303 
Web
 

Re: Zadání číselného pole v C++

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


MATH IS THE BEST!!!

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson