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
Rozwiąż sudoku
- Rejestracja: dni
- Ostatnio: dni
- Postów: 6
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
- Postów: 13042
Oczywiście uprzednio poświęciłaś kilka godzin czasu na szukanie rozwiązania we własnym zakresie (Google), i NIC nie odnalazłaś? :|
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
Najbardziej oczywiste rozwiązanie? Rekurencja z powrotami.
BTW mamy czerwiec. Oczywiście czerwiec to jest zwykle początek semestru...
- Rejestracja: dni
- Ostatnio: dni
- Postów: 6
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ąć
- Rejestracja: dni
- Ostatnio: dni
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.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 6
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
- Rejestracja: dni
- Ostatnio: dni
- Postów: 6
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 :\
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
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";
- Rejestracja: dni
- Ostatnio: dni
- Postów: 6
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
- Rejestracja: dni
- Ostatnio: dni
- Postów: 6
są wolniejsze i mają inną bibliotekę
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
- Postów: 13042
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? ...
- Rejestracja: dni
- Ostatnio: dni
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 |