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 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: 5490
Š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: 5490
Š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: 5490
Š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