Mam do napisania program, który rozwiązuje sudoku. Moim problemem jest fakt, że dopiero zaczynam przygodę z programowaniem, a już zostałam rzucona na głęboką wodę. Wszystko ma być zrobione prostymi rozwiązaniami i wchodzi w grę tylko c ++, ewentualnie c. Proszę o jakąś pomoc, nakierowanie itp. Będę dozgonnie wdzięczna
Oczywiście uprzednio poświęciłaś kilka godzin czasu na szukanie rozwiązania we własnym zakresie (Google), i NIC nie odnalazłaś? :|
Najbardziej oczywiste rozwiązanie? Rekurencja z powrotami.
BTW mamy czerwiec. Oczywiście czerwiec to jest zwykle początek semestru...
Patryk27 napisał(a):
Oczywiście uprzednio poświęciłaś kilka godzin czasu na szukanie rozwiązania we własnym zakresie (Google), i NIC nie odnalazłaś? :|
Oczywiście, że znalazłam, ale znalezione przeze mnie rozwiązania są albo w c# albo tak zagmatwane, że nie umiem ich ogranąć
sam poświęciłem na to kiedyś trochę czas bo warto się tego nauczyć by zrozumieć rekurencję. Pisanie sudoku jest bardzo ciekawe gdy wie się jak działa rekurencja.
Shalom napisał(a):
BTW mamy czerwiec. Oczywiście czerwiec to jest zwykle początek semestru...
Miałam może z 15 godzin programowania, na których mało co przerobiliśmy. Zaczynamy od totalnego zera, tj. pobieranie wartości z klawiatury, krótkie pętle i proste warunki
Wymęczyłam, napisałam :)
Ale program potrzebuje jeszcze małych poprawek. Nie bardzo się orientuje jak zamieć printf itd na cout.... Próbowałam, ale nie chciało skompilować. Chciałby mi ktoś pomóc z takimi poprawkami?
int j;
for(i=0; i<n; i++)
{
for(j=0; j<k; j++)
printf("%3d ", sudoku[i][j]);
putchar('\n');
}
I jeszcze jedno. Jeżeli używam "cout" to powinnam również używać bibliotekę iostream? Bo jeżeli tak, to nadal nie bardzo mi działa :\
o_O Ale WTF? Umiesz napisać program rozwiazujacy sudoku a nie umiesz na koniec wypisać rozwiązania? Coś mi sie nie chce wierzyć...
Odpowiadając na pytanie: tak, jeśli chcesz użyć std::cout to musisz includować iostream. Wystarczy ze zamienisz swojego printfa na
std::cout<<sudoku[i][j];
a ten putchar na
std::cout<<"\n";
Nie używam cout, bo ich nie lubię, zawsze używałam printf, więc nie bardzo wiedziałam jak cout działa. Dzięki <3
są wolniejsze i mają inną bibliotekę
Zwyczajowo operacje I/O na konsoli są wolne, dlatego też nie powinno się wykorzystywać ani printf
, ani strumieni (cout
) do np.rysowania planszy gry.
http://stackoverflow.com/questions/1924530/mixing-cout-and-printf-for-faster-output
i mają inną bibliotekę
Z drugiej strony: to może printf
ma "inną bibliotekę", a nie cout
? ...
to może printf ma "inną bibliotekę", a nie cout?
Czym się różni wróbelek? Tym że ma jedną nóżkę bardziej.
printf
jest w <stdio.h>
inaczej <cstdio>
, cout
jest w <iostream>
. Tyle można na ten temat powiedzieć.
W praktyce użycie cout
powoduje znaczne spuchnięcie exeka.
Hello world przy statycznym linkowaniu:
cout | printf |
---|---|
VC++ | 147 kB |
MinGW | 646 kB |
Visual Studio 2012, kompilacja: cl a.cpp /Ox /MT |
|
MinGW GCC 4.7.2, kompilacja: g++ a.cpp -O3 -static-libgcc -static-libstdc++ -s |