Ny nybörjare i C

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Användarvisningsbild
RasmusB
Inlägg: 1006
Blev medlem: 24 augusti 2006, 23:32:13
Ort: Södertälje

Ny nybörjare i C

Inlägg av RasmusB »

Har fuskat runt i C under ett antal projekt genom åren, men jag har aldrig riktigt vetat vad har hållit på med känns det som ;) Nu har jag iaf bestämt mig för att ta tag i det ordentligt och lära mig från början!

Så ikväll satte jag mig med en fräsch installation av Dev-C++ och "A book on C" och började hacka för fullt. Resultatet blev följande:

Bild

Programmet är ihophackat på två timmar av en nästan total nybörjare på c, så det är lite oslipat än så länge ;) Tanken är att den här övningen ska portas till mitt ARM7-utvecklingskort senare för att göra en portabel sudoko-fuskare :)

Buggar / features:

- kan bara lösa sudokos som går att lösa med enbart logik, kör programmet fast så spottar det glatt ur sig det halvfärdiga pusslet...

Övrigt:

- Programmet accepterar textfiler med "standard" sudoko-notation. Exempel: Stoppa in raden med punkter och siffror i programmet, så motsvarar det sudokut nedanför :) (Nej, just det här sudokut klarar programmet inte att lösa...)

Kod: Markera allt

.2.4.37.........32........4.4.2...7.8...5.........1...5.....9...3.9....7..1..86..

. 2 . | 4 . 3 | 7 . .  
. . . | . . . | . 3 2  
. . . | . . . | . . 4  
------+-------+------ 
. 4 . | 2 . . | . 7 .  
8 . . | . 5 . | . . .  
. . . | . . 1 | . . .  
------+-------+------ 
5 . . | . . . | 9 . .  
. 3 . | 9 . . | . . 7  
. . 1 | . . 8 | 6 . .  
- Programmet körs i kommandoprompten i windows. Det borde funka under DOS också om någon vill testa... ;)

- Länk till eländet: http://www.student.itn.liu.se/~rasba001 ... sudoku.rar

Innehåller .exe och en exempelfil som programmet faktiskt KAN lösa... :)
Edit: sudoko.c finns med nu också (för självplågare och andra)
Senast redigerad av RasmusB 15 juli 2008, 20:10:44, redigerad totalt 1 gång.
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Snyggt! Men hade hellre sett källkoden än en EXE-fil. ;)

(Ett plus för att du satt Bugs och Features på samma rad. Ett steg i rätt riktning då det alltid är en fråga om definition och subjektivitet)
SvenW
Inlägg: 1155
Blev medlem: 24 april 2007, 16:23:10
Ort: Göteborg

Inlägg av SvenW »

Trevligt med C. Det roligaste språket näst assembler. Men som speakman säger, en binär (exe-fil) har inget värde! Den är lika värdelös som en kopia av ett M$-operativsystem.
I Linux har man en hel infrastruktur färdig att använda, miljarder rader med kod att återanvända och massor av exempel på hur man gör. Du har väl läst Katedralen och basaren!
http://home.swipnet.se/swi/KatB-se.html
Användarvisningsbild
RasmusB
Inlägg: 1006
Blev medlem: 24 augusti 2006, 23:32:13
Ort: Södertälje

Inlägg av RasmusB »

Jodå, källkod dyker upp när jag kommit hem ikväll. Men jag kan inte garantera att den är vacker precis! ;)
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Som ett sidospår... jag hade en idé om att ta fuskandet av sodoku ytterligare ett steg genom OCR och handscanner. Har fått tag i en liten scanner, men mycket längre har jag inte kommit. ;)

Vilka språk kan du sedan innan?
Användarvisningsbild
RasmusB
Inlägg: 1006
Blev medlem: 24 augusti 2006, 23:32:13
Ort: Södertälje

Inlägg av RasmusB »

Haha intressant idé! :D Borde ju inte vara helt omöjligt... gjorde ett bildigenkänningsprogram för en DSP-processor skrivet i c... det var nog under det projeketet jag insåg att jag inte hade nån aning om hur c egentligen fungerar... ;) Men det funkade till slut! :)

Hmm. Programmerar lite för sällan för att tycka att jag "kan" några språk egentligen. Men jag har lagt en hel del tid på Java och PIC assembler. VHDL är väl inget programmeringsspråk på det sättet, men det är väl det jag använder just nu till mitt exjobb, så där har jag iaf lite koll på hur man gör. :) Läste C++ på gymnasiet också, men det har jag inte använt sen dess.

Iallafall så är rar-filen ovanför uppdaterad med källkod. Den som orkar kolla på den kommer att lägga märke till två saker:

- Engelska och svenska blandas friskt i koden! På exjobbet sitter jag och skriver kommentarer och dokumentation på engelska, så det blir oftast engelska helt automagiskt... ;)

- Den är inte optimerad alls. Ett bra exempel på det är att funktionen scan_allowed scannar vissa rutor flera gånger. Tanken bakom det är att samma funktion senare ska kunna fungera som ett "sanity test" för att kolla så det inte är några uppenbara misstag i det inmatade sudokut...

I övrigt är jag tacksam för kommentarer, uppmuntran och förslag till förbättringar! :)
SvenW
Inlägg: 1155
Blev medlem: 24 april 2007, 16:23:10
Ort: Göteborg

Inlägg av SvenW »

Jag kollade på koden. Ser bra ut. Kompilerade utan problem på mitt Ubuntu 8.04. Testexemplet fungerade också.
Fast jag tror att 'rar' är patenterat. Patenterade program och metoder skall man undvika om man är en renlärig zelot!
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Jag tyckte också det såg riktigt bra ut för att vara i startgroparna. Skulle också rekommendera att använda ren engelska oavsett ändamål. Sedan kan man köra gettext för att översätta programmet till flera språk, men man slipper dalta med teckenkodning i själva källkodsfilerna.

Och jag pushar även för tar.gz/bz2 el. motsvarande. ;)
Användarvisningsbild
RasmusB
Inlägg: 1006
Blev medlem: 24 augusti 2006, 23:32:13
Ort: Södertälje

Inlägg av RasmusB »

Tack för kommentarerna! Då verkar det vara det någorlunda portabelt då! :) Fast jag antar att sudoku-brädet som ritas upp ser lite osnyggt ut under linux?

Må så vara... men du lyckades ju packa upp den ändå? :)
Användarvisningsbild
RasmusB
Inlägg: 1006
Blev medlem: 24 augusti 2006, 23:32:13
Ort: Södertälje

Inlägg av RasmusB »

speakman skrev:Jag tyckte också det såg riktigt bra ut för att vara i startgroparna. Skulle också rekommendera att använda ren engelska oavsett ändamål. Sedan kan man köra gettext för att översätta programmet till flera språk, men man slipper dalta med teckenkodning i själva källkodsfilerna.
Bra tips, tack! :)
Skriv svar