Pyydä täällä harjoitustehtäviä

Voit pyytää apua ohjelmointiongelmiin täältä.
User avatar
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm
Contact:

Re: Pyydä täällä harjoitustehtäviä

Post by Koodiapina » Sun Feb 21, 2010 1:44 pm

Tee brainfuck-tulkki. Homma voi ensin vaikuttaa vaikealta, mutta oikeasti kyseessä on täysin aloittelijalle sopiva tehtävä :)
Olen liian älykäs ollakseni väärässä. Jos olet kanssani eri mieltä, suosittelen sinua pohtimaan omaa elämänkatsomustasi ja sen perusteita.

jaahas
Advanced Member
Posts: 307
Joined: Sat Feb 06, 2010 12:36 am
Location: Tornio

Re: Pyydä täällä harjoitustehtäviä

Post by jaahas » Sun Feb 21, 2010 7:44 pm

Grandi wrote:Tee brainfuck-tulkki. Homma voi ensin vaikuttaa vaikealta, mutta oikeasti kyseessä on täysin aloittelijalle sopiva tehtävä :)
en osaa tehdä tulkkia :(
haluan tehtäväks jonku aika helpon ohjelman arvosanani on 1
Last edited by jaahas on Sun Feb 21, 2010 8:17 pm, edited 1 time in total.

User avatar
Ilkka
Active Member
Posts: 201
Joined: Mon Oct 08, 2007 8:01 am

Re: Pyydä täällä harjoitustehtäviä

Post by Ilkka » Sun Feb 21, 2010 7:55 pm

Keksiskö joku jotain, 1 - 10 tunnissa tehtävää ohjelmaa/peliä ( Mielummin peliä. ) minkä voisin tehdä. Ja Galgometrihän ilmoitti luvuksi 3.75
Image

User avatar
Knoy
Active Member
Posts: 187
Joined: Fri Feb 12, 2010 11:50 pm

Re: Pyydä täällä harjoitustehtäviä

Post by Knoy » Sun Feb 21, 2010 8:50 pm

Tetris...?

Laitat hienoja effektejä mukaan.

Ylösnuoli: Kääntää blockia
Alas: nopeuttaa blockkia
Sivutnuolet: liikuttaa

Erikois räjähdykset jos koko rivi on samaa väriä ja samalla boonus pisteet.
Seuraava palikka näkyy ennalta...

Tuollaista peliä.

jaahas
Advanced Member
Posts: 307
Joined: Sat Feb 06, 2010 12:36 am
Location: Tornio

Re: Pyydä täällä harjoitustehtäviä

Post by jaahas » Sun Feb 21, 2010 9:38 pm

olisko mulle jotain parin tunnin tehtävää algometristä 1 arvosanaksi (mieluiten tehtäväks joku ohjelma)

User avatar
Knoy
Active Member
Posts: 187
Joined: Fri Feb 12, 2010 11:50 pm

Re: Pyydä täällä harjoitustehtäviä

Post by Knoy » Sun Feb 21, 2010 9:56 pm

Grandi wrote:Tee funktio joka piirtää ruudulle minkä tahansa kokoisen suorakulmion jossain kulmassa 0-360. Ensimmäiset parametrit, x ja y, määrittävät suorakulmion keskipisteen. Rect360 (x, y, w, h, Angle)

Tehtävä on siis koodattava line-komennon avulla. Kuvien, objektien tai muiden kikkojen käyttäminen olisi vain itsensä pettämistä.
Tuli tylsää...
Neliöt ovat suorakulmiota....

Code: Select all

Angle=Rand(0,359)

Repeat
    If GetKey() Then
        Ong=150
        Angle=Rand(0,359)
    EndIf
    Neliö(Angle)
    Text 0,0,"Angle is:"+Angle

    DrawScreen
Forever

Function Neliö(Angle)
    Line 200+Cos(angle)*20,150-Sin(angle)*20,150+Cos(angle-90)*20,150-Sin(angle-90)*20
    Line 150+Cos(angle-90)*20,150-Sin(angle-90)*20,150+Cos(angle-180)*20,100-Sin(angle-180)*20
    Line 150+Cos(angle-180)*20,100-Sin(angle-180)*20,200+Cos(angle+90)*20,100-Sin(angle+90)*20
    Line 200+Cos(angle+90)*20,100-Sin(angle+90)*20,200+Cos(angle)*20,150-Sin(angle)*20
    Return Angle
EndFunction

User avatar
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm
Contact:

Re: Pyydä täällä harjoitustehtäviä

Post by Koodiapina » Sun Feb 21, 2010 10:44 pm

Ei toimi oikein. Jos haluat nähdä toimivan ratkaisun, katso tänne. Tuokin tosin vain neliöille.
jaahas wrote:olisko mulle jotain parin tunnin tehtävää algometristä 1 arvosanaksi (mieluiten tehtäväks joku ohjelma)
Kokeile CoolBasicin manuaalin tehtäväosion helppoja tehtäviä.
Olen liian älykäs ollakseni väärässä. Jos olet kanssani eri mieltä, suosittelen sinua pohtimaan omaa elämänkatsomustasi ja sen perusteita.

User avatar
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Pyydä täällä harjoitustehtäviä

Post by koodaaja » Sun Feb 21, 2010 11:02 pm

Itse löysin tällaisen kovon kätköistä - näyttäisi toimivan kaksiulotteisen pyöritysmatriisin avulla.

Code: Select all

Function drawbox(x, y, w, h, ang#)
    cw = Cos(ang#)*w/2.0: ch = Cos(ang#)*h/2.0: sw = Sin(ang#)*w/2.0: sh = Sin(ang#)*h/2.0
    
    Line x + cw - sh, y + sw + ch, x - cw - sh, y - sw + ch
    Line x - cw - sh, y - sw + ch, x - cw + sh, y - sw - ch
    Line x - cw + sh, y - sw - ch, x + cw + sh, y + sw - ch
    Line x + cw + sh, y + sw - ch, x + cw - sh, y + sw + ch
EndFunction

w = 40
h = 30

Repeat
    w = w + (RightKey()-LeftKey())
    h = h + (UpKey()-DownKey())
    ang = wrapangle(ang + (MouseDown(2)-MouseDown(1)))
    
    drawbox(MouseX(), MouseY(), w, h, ang)
    DrawScreen
Forever

User avatar
Knoy
Active Member
Posts: 187
Joined: Fri Feb 12, 2010 11:50 pm

Re: Pyydä täällä harjoitustehtäviä

Post by Knoy » Mon Feb 22, 2010 12:19 am

Grandi wrote:Ei toimi oikein. Jos haluat nähdä toimivan ratkaisun, katso tänne. Tuokin tosin vain neliöille.
jaahas wrote:olisko mulle jotain parin tunnin tehtävää algometristä 1 arvosanaksi (mieluiten tehtäväks joku ohjelma)
Kokeile CoolBasicin manuaalin tehtäväosion helppoja tehtäviä.
:D En tiennyt äsken mikä oli wrapangle... =P Laitan omaani toimimaan juuri joten en katso tuota... Muistaa paremmin miten komennot toimivat jos koodaa itse...

Edit:
Ei tässä taidettu wrapanglea tarvitakkaan no nyt toimii omani.

Code: Select all

Angle=Rand(0,359)

Repeat
    If GetKey() Then
        Ong=150
        Angle=Rand(0,359)
    EndIf
    Neliö(angle)
    Text 0,0,"Angle is:"+Angle

    DrawScreen
Forever

Function Neliö(angle)
    Color 255,0,0
    Line 200+Cos(WrapAngle(angle))*20,150-Sin(WrapAngle(angle))*20,200+Cos(WrapAngle(angle-90))*20,150-Sin(WrapAngle(angle-90))*20
    Color 0,255,0
    Line 200+Cos(WrapAngle(angle-90))*20,150-Sin(WrapAngle(angle-90))*20,200+Cos(WrapAngle(angle-180))*20,150-Sin(WrapAngle(angle-180))*20
    Color 255,0,255
    Line 200+Cos(WrapAngle(angle-180))*20,150-Sin(WrapAngle(angle-180))*20,200+Cos(WrapAngle(angle+90))*20,150-Sin(WrapAngle(angle+90))*20
    Color 0,0,255
    Line 200+Cos(WrapAngle(angle+90))*20,150-Sin(WrapAngle(angle+90))*20,200+Cos(WrapAngle(angle))*20,150-Sin(WrapAngle(angle))*20
    Return Angle
EndFunction 
Edit2:
Ohhoh kummasti ovat samanlaisia nuo funktiot... Noh samaa asiaa niillä tehdään...

Tässä on sitten hieno tapa käyttää tätä funktiota... Ja kaikki vielä tylsyyttäni yhdellä rivillä...

Code: Select all

Size=2: Repeat: Angle=WrapAngle(Angle+4): For i = 1 To 87: plus+1: sizer+2 :Neliö(angle+plus,size*sizer): Next i: Plus = 0: Sizer =0: DrawScreen: Forever: Function Neliö(angle,size): Color 135,135,135 : Line 200+Cos(WrapAngle(angle))*Size,150-Sin(WrapAngle(angle))*Size,200+Cos(WrapAngle(angle-90))*Size,150-Sin(WrapAngle(angle-90))*Size: Color 255,0,0: Line 200+Cos(WrapAngle(angle-90))*Size,150-Sin(WrapAngle(angle-90))*Size,200+Cos(WrapAngle(angle-180))*Size,150-Sin(WrapAngle(angle-180))*Size: Color 135,135,135: Line 200+Cos(WrapAngle(angle-180))*Size,150-Sin(WrapAngle(angle-180))*Size,200+Cos(WrapAngle(angle+90))*Size,150-Sin(WrapAngle(angle+90))*Size: Color 255,0,0: Line 200+Cos(WrapAngle(angle+90))*Size,150-Sin(WrapAngle(angle+90))*Size,200+Cos(WrapAngle(angle))*Size,150-Sin(WrapAngle(angle))*Size: Return Angle: Return Size: EndFunction

DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 3:18 pm

Re: Pyydä täällä harjoitustehtäviä

Post by DJ-Filbe » Sun Feb 28, 2010 3:45 pm

Minulle joku ehkä musiikkiin liittyvä tehtävä mielellään. Galgon tulos vaivaiset 3,25....

User avatar
otto90x
Advanced Member
Posts: 349
Joined: Mon Aug 27, 2007 9:00 pm
Location: Lapinjärvi, Finland
Contact:

Re: Pyydä täällä harjoitustehtäviä

Post by otto90x » Sun Feb 28, 2010 4:31 pm

Tee musiikkisoitin, joka pystyy hakemaan käyttäjän valitsemasta kansiosta kaikki musiikkitiedostot ja listaamaan ne näytölle siten että listaa voi vierittää. Kappaleita voi soittaa painamalla kappaleen nimeä. Jos entinen kappale on vielä soimassa, tapahtuu kappaleen vaihto sulavasti ristiinhäivyttäen. Musiikin voimakkuutta voi säätää niinkuin vasemman ja oikean kanavan balanssia.
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.

User avatar
wilizucoder
Member
Posts: 81
Joined: Sat Sep 08, 2007 11:24 pm
Location: Espoo
Contact:

Re: Pyydä täällä harjoitustehtäviä

Post by wilizucoder » Wed Mar 03, 2010 6:40 pm

Voisko joku keksiä mulle harjotustehtävän, mielellään joku peli? Oma tasoni on 1-2, eli typet, muuttujat, ja melkeen kaikki cb-manuaalin perusjutut on hallussa lukuun ottamatta taulukoita ja funktioita. Joku sellanen tehtävä vois olla kiva, jossa joutuu käsittelemään suuria massoja, esim. vihuja.

User avatar
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Pyydä täällä harjoitustehtäviä

Post by phons » Wed Mar 03, 2010 6:55 pm

Tee ohjelma joka lukee tiedostosta taulukkoon kaikki rivit funktiossa ja funktio palauttaa 1:sen jos onnistui, muuten 0.

Edit: Suuret massat = Suuri rivien määrä tiedostossa...
Image

User avatar
otto90x
Advanced Member
Posts: 349
Joined: Mon Aug 27, 2007 9:00 pm
Location: Lapinjärvi, Finland
Contact:

Re: Pyydä täällä harjoitustehtäviä

Post by otto90x » Wed Mar 03, 2010 7:22 pm

Kiljulan kiljutehtaalla on 6 työnjohtajaa, 30 työläistä ja 50 orjaa. Työnjohtajat saavat palkkaa 5000€/kk, työläiset 2000€/kk ja orjat 10€/kk.

Kun taloustaantuma iskee ja Kiljulan kiljutehdas päättää lopettaa toimintansa. Vallitsevien työehtosopimusten puitteissa kutakin työnjohtajaa kohtaan voi olla maksimissaan viisi työläistä ja kullakin työläisellä voi olla olla maksimissaan viisi orjaa palveluksessaan. Orjalain mukaan orjia voidaan irtisanoa kuitenkin vain kymmenen kuukaudessa ja heille tulee maksaa irtisanomisrahaa 4€/orja. Kuukaudessa irtisanottavien työläisten määrän ylittäessä viiden joudutaan jokaisesta irtisanottavasta työläisestä maksamaan 5000€ sakkomaksu. Irtisanottaville työläisille pitää myös maksaa 50% seuraavan kuun palkasta. Työläiset ja orjat tekevät kukin 100€ arvoisen työpanoksen päivittäin. Työnjohtajat vain istuvat kahvilla.

Piirrä pylväsdiagrammi, joka näyttää Kiljulan kiljutehtaan kuukausittaiset menot, tulot ja irtisanottavat työnjohtajat, työläiset ja orjat, kun Kiljulan kiljutehdas haluaa tehdä mahdollisimman hyvää tulosta viimeiseen saakka.
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.

User avatar
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 5:53 pm

Re: Pyydä täällä harjoitustehtäviä

Post by Jani » Sun Mar 14, 2010 6:34 pm

Haluaisin jonkun muistipaloihin/DLL:iin liittyvän harjoitustehtävän. Toki muukin kelpaa.
Galgometri antoi 8.0 pistettä.
EDIT:

otto90x wrote:Tee pulmakulman tapainen peli, jossa on paloja voi järjestellä 6x10 kokoiseen ruudukkoon ja pyörittää 90-astetta kerrallaan. Et saa käyttää CoolBasicissa valmiina olevia taulukko- tai tyyppikokoelma rakenteita vaan kaikki palojen muotoon, asentoon ja paikkaan liittyvä tieto pitää tallentaa muistipaloihin tai muihin muuttujiin. Paloja tulee voida liikuttaa (myös) hiirellä ja ennen palan asettamista paikoilleen pitää antaa pelaajalle tieto siitä voiko palan asettaa siihen kohtaan esimerkiksi piirtämällä palan oletettuun paikkaan punaiseksi värjätty haamupala. Tässä vielä palojen muodot selkeässä kuvassa.
Tää tuntuu hauskalta! Alan tekeen tuota koulun jälkeen (tai sitten jatkan Timang3t:In koodausta).[/edit]
Last edited by Jani on Mon Mar 15, 2010 6:14 am, edited 1 time in total.
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition

User avatar
otto90x
Advanced Member
Posts: 349
Joined: Mon Aug 27, 2007 9:00 pm
Location: Lapinjärvi, Finland
Contact:

Re: Pyydä täällä harjoitustehtäviä

Post by otto90x » Sun Mar 14, 2010 9:40 pm

Tee pulmakulman tapainen peli, jossa on paloja voi järjestellä 6x10 kokoiseen ruudukkoon ja pyörittää 90-astetta kerrallaan. Et saa käyttää CoolBasicissa valmiina olevia taulukko- tai tyyppikokoelma rakenteita vaan kaikki palojen muotoon, asentoon ja paikkaan liittyvä tieto pitää tallentaa muistipaloihin tai muihin muuttujiin. Paloja tulee voida liikuttaa (myös) hiirellä ja ennen palan asettamista paikoilleen pitää antaa pelaajalle tieto siitä voiko palan asettaa siihen kohtaan esimerkiksi piirtämällä palan oletettuun paikkaan punaiseksi värjätty haamupala. Tässä vielä palojen muodot selkeässä kuvassa.
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.

DatsuniG
Advanced Member
Posts: 367
Joined: Fri Aug 15, 2008 9:57 pm

Re: Pyydä täällä harjoitustehtäviä

Post by DatsuniG » Fri Mar 19, 2010 8:08 pm

Haluaisin harjoitustehtävän tyyppeihin ja muistipaloihin liittyen. Galgometriltä sain 8.5 pistettä.
Hengität nyt manuaalisesti.

User avatar
kaneli2000
Guru
Posts: 1059
Joined: Mon Mar 17, 2008 3:40 pm
Location: Lempäälä

Re: Pyydä täällä harjoitustehtäviä

Post by kaneli2000 » Fri Mar 19, 2010 10:56 pm

DatsuniG wrote:Haluaisin harjoitustehtävän tyyppeihin ja muistipaloihin liittyen. Galgometriltä sain 8.5 pistettä.
Tyyppeihin: ota joku wanha koodisi ja tee kaikesta mahdollisesta tyypein käsiteltävää. Ei kovin käytännöllistä, mutta opettavaista.
I see the rainbow rising

DatsuniG
Advanced Member
Posts: 367
Joined: Fri Aug 15, 2008 9:57 pm

Re: Pyydä täällä harjoitustehtäviä

Post by DatsuniG » Fri Mar 19, 2010 11:55 pm

kaneli2000 wrote:
DatsuniG wrote:Haluaisin harjoitustehtävän tyyppeihin ja muistipaloihin liittyen. Galgometriltä sain 8.5 pistettä.
Tyyppeihin: ota joku wanha koodisi ja tee kaikesta mahdollisesta tyypein käsiteltävää. Ei kovin käytännöllistä, mutta opettavaista.
Ajattelin hieman tyyppikokoelmien kehittyneempää käyttöä, kuten Converttointegeriä ja Converttotypeä ja näiden kahden kanssa muistipalojen hyödyntämistä. Kiitos kuitenkin ehdotuksesta.
EDIT:

Thx phons, aloittelenkin koodaamaan tuota.

EDIT:

Jos jotakuta kiinnostaa kuinka tein tämän harjoituksen, niin spoilerin alta löytyy koodia.

Code: Select all

Global mem As Integer

Const ITEM_AMOUNT = 30
mem = MakeMEMBlock(40)                              

Type LISTED_VALUES
    Field value As Integer
EndType 

RandomizeValues()
SortValues()
ListValues()
WaitKey

Function ListValues()
    For i = 1 To 9 Step 2
        printing.LISTED_VALUES = ConvertToType(PeekInt(mem, i * 4))
        Print printing\value
        Delete printing
    Next i 
EndFunction 

Function SortValues()
    For i = 0 To 9                                
        PokeInt mem, i * 4, -1
    Next i
    For add.LISTED_VALUES = Each LISTED_VALUES
        valueset = 0
        For i = 0 To 9 Step 2
            If add\value > PeekInt(mem, i * 4) And valueset = 0 Then 
                For a = i To 9 Step 2
                    If valueset Then 
                        If PeekInt(mem, a * 4) < ValueHelper Then 
                            ValueHelper2 = PeekInt(mem, a * 4)
                            HandleHelper2 = PeekInt(mem, (a + 1) * 4)
                            PokeInt mem, a * 4, ValueHelper
                            PokeInt mem, (a + 1) * 4, HandleHelper
                            ValueHelper = ValueHelper2
                            HandleHelper = HandleHelper2
                        EndIf 
                    ElseIf add\value > PeekInt(mem, a * 4) Then 
                        valueset = 1
                        ValueHelper = PeekInt(mem, a * 4)
                        HandleHelper = PeekInt(mem, (a + 1) * 4)
                        PokeInt mem, a * 4, add\value
                        PokeInt mem, (a + 1) * 4, ConvertToInteger(add)
                    EndIf 
                Next a
            EndIf 
        Next i
    Next add
EndFunction 
            
Function RandomizeValues()
    For add.LISTED_VALUES = Each LISTED_VALUES
        Delete add
    Next add
    For i = 0 To ITEM_AMOUNT - 1
        add.LISTED_VALUES = New(LISTED_VALUES)
        add\value = Rand(ITEM_AMOUNT ^ 2)
    Next i
EndFunction 
[/edit]
Last edited by DatsuniG on Sat Mar 20, 2010 8:37 am, edited 4 times in total.
Hengität nyt manuaalisesti.

User avatar
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Pyydä täällä harjoitustehtäviä

Post by phons » Fri Mar 19, 2010 11:57 pm

DatsuniG wrote:Haluaisin harjoitustehtävän tyyppeihin ja muistipaloihin liittyen. Galgometriltä sain 8.5 pistettä.
Koska tasosi on noin korkea haluat selvästi jotain vaikeaa.. Noh. Tee tyypeillä ja muistipaloilla systeemi jossa on funktio joka listaa muistipalaan viiden kärjen tyypeistä luettuna(eli kenellä on korkein numero fieldissä value menee musitipalikan kohtaan 1 kakkonen kohtaan 2 jne.) ja toinen funktio joka sitten lukee ne sieltä muistipalikasta ja kirjoittaa näytölle.

Edit: DatsuniG, ajattelinkin jotain tuollaista. Itse muuten olen kokenut hyödylliseksi ja käytän aina kun tarvis.
Image

Post Reply