Harjoitustyön C-ohjelmien speksit ================================= Tulet saamaan tehtäväksesi yhden näistä harjoitustöistä; aiheet jaetaan kurssilaisille järjestyksessä modulo niiden määrä demotilaisuuksissa tai sähköpostilla heinäkuun ekalla viikolla. Aihe 1:: Noudata harjoitustyöohjetta ja tuota sen mukainen palautus. C-ohjelmointivaiheessa toteuta aliohjelma, joka: - laskee 64-bittisiä kokonaislukuja sisältävästä taulukosta tietylle lukualueelle (alarajan ja ylärajan välille) sijoittuvat alkiot Käytä 64-bittisiä "long long int" tyyppejä kaikille kokonaisluvuille, joita ohjelmasi käyttää. Aihe 2:: Noudata harjoitustyöohjetta ja tuota sen mukainen palautus. C-ohjelmointivaiheessa toteuta aliohjelma, joka: - laskee, kuinka monta lukua 64-bittisiä kokonaislukuja sisältävässä taulukossa on sellaisia, jotka ovat yhtä suuria kuin taulukon pienin luku. Käytä 64-bittisiä "long long int" tyyppejä kaikille kokonaisluvuille, joita ohjelmasi käyttää. Aihe 3:: Noudata harjoitustyöohjetta ja tuota sen mukainen palautus. C-ohjelmointivaiheessa toteuta aliohjelma, joka: - laskee, kuinka monta lukua 64-bittisiä kokonaislukuja sisältävässä taulukossa on sellaisia, jotka ovat yhtä suuria kuin taulukon suurin luku. Käytä 64-bittisiä "long long int" tyyppejä kaikille kokonaisluvuille, joita ohjelmasi käyttää. Aihe 4:: Noudata harjoitustyöohjetta ja tuota sen mukainen palautus. C-ohjelmointivaiheessa toteuta aliohjelma, joka: - vaihtaa 64-bittisiä kokonaislukuja sisältävän taulukon kaikkien alkioiden etumerkin - kertoo, moniko alkioista oli nolla (eli merkin vaihto ei muuttanut sitä) Käytä 64-bittisiä "long long int" tyyppejä kaikille kokonaisluvuille, joita ohjelmasi käyttää. Aihe 5:: Noudata harjoitustyöohjetta ja tuota sen mukainen palautus. C-ohjelmointivaiheessa toteuta aliohjelma, joka: - tuottaa 64-bittisiä kokonaislukuja sisältävään taulukkoon niin monta ensimmäistä Fibonaccin lukua kuin taulukkoon mahtuu. Ensimmäinen Fibonaccin luku on 1, toinen on 1, ja sen jälkeen aina seuraava on kahden edellisen summa. Siis jonon alku on 1, 1, 2, 3, 5, 8, 13, 21, ... - kertoo, mikä oli viimeisin tuotettu luku. Käytä 64-bittisiä "long long int" tyyppejä kaikille kokonaisluvuille, joita ohjelmasi käyttää. Aihe 6:: Noudata harjoitustyöohjetta ja tuota sen mukainen palautus. C-ohjelmointivaiheessa toteuta aliohjelma, joka: - vaihtaa 64-bittisiä kokonaislukuja sisältävässä taulukossa aina kaksi peräkkäistä alkiota keskenään. Esimerkiksi taulukosta {1,2,3,4,60,50} pitäisi tulla {2,1,4,3,50,60}. Oleta parillinen määrä alkioita. - laskee, kuinka monta vaihtoa oli sellaisia, että oikeanpuoleinen luku oli ensiksi suurempi kuin vasemmanpuoleinen. Em. esimerkissä vastaus olisi 2. Käytä 64-bittisiä "long long int" tyyppejä kaikille kokonaisluvuille, joita ohjelmasi käyttää. Aihe 7:: Noudata harjoitustyöohjetta ja tuota sen mukainen palautus. C-ohjelmointivaiheessa toteuta aliohjelma, joka: - nollaa 64-bittisiä kokonaislukuja sisältävän taulukon kaikki alkiot - laskee summan alkioiden arvoista ennen nollausta Käytä 64-bittisiä "long long int" tyyppejä kaikille kokonaisluvuille, joita ohjelmasi käyttää. Aihe 8:: Noudata harjoitustyöohjetta ja tuota sen mukainen palautus. C-ohjelmointivaiheessa toteuta aliohjelma, joka: - etsii 64-bittisiä kokonaislukuja sisältävästä taulukosta ensimmäisen alkion, jonka kohdalla peräkkäiset luvut eivät ole nousevassa järjestyksessä - vaihtaa keskenään kyseisen luvun ja sitä välittömästi edeltävän. - kertoo, monennessako taulukkoindeksissä vaihdettu alkio oli, tai -1, jos mitään ei tarvinnut vaihtaa Esimerkkejä:: {4,5,-8,16} -> {4,-8,5,16}, piti vaihtaa alkio indeksissä 2. {-8,4,5,16} -> {-8,4,5,16}, ei tarvinnut vaihtaa; vastaus -1 Käytä 64-bittisiä "long long int" tyyppejä kaikille kokonaisluvuille, joita ohjelmasi käyttää. .. (knoppina: tämän toistaminen taulukolle kunnes vastaus on -1 toteuttaa, joskin tosi köpösti, lajittelun) Aihe 9:: Noudata harjoitustyöohjetta ja tuota sen mukainen palautus. C-ohjelmointivaiheessa toteuta aliohjelma, joka: - poistaa 64-bittisestä kokonaislukuja sisältävästä taulukosta jonkun luvun kaikki esiintymät - kertoo, montako lukua taulukkoon jäi poiston jälkeen Käytä 64-bittisiä "long long int" tyyppejä kaikille kokonaisluvuille, joita ohjelmasi käyttää. Aihe 10:: Noudata harjoitustyöohjetta ja tuota sen mukainen palautus. C-ohjelmointivaiheessa toteuta aliohjelma, joka: - pyörittää 64-bittisiä kokonaislukuja sisältävää taulukkoa yhdellä pykälällä oikealle siten, että vasemmalle puolelle laitetaan parametrina annettu uusi luku - kertoo, mikä luku oikealta puolelta putosi pois Esimerkkejä:: {1,2,3,4,5}, sisään 77 -> {77,1,2,3,4}, ulos 5 {77,1,2,3,4}, sisään 5 -> {5,77,1,2,3}, ulos 4 Käytä 64-bittisiä "long long int" tyyppejä kaikille kokonaisluvuille, joita ohjelmasi käyttää. Aihe 11:: Noudata harjoitustyöohjetta ja tuota sen mukainen palautus. C-ohjelmointivaiheessa toteuta aliohjelma, joka: - lisää 64-bittisiä kokonaislukuja sisältävään taulukkoon uuden alkion siten, että lisäyskohdasta alkaen kaikki luvut siirtyvät yhdellä pykälällä oikealle, ja lopusta ulos putoava alkio kerrotaan kutsujalle. Esimerkkejä:: {1,2,3,4,5}, sisään 77 indeksiin 2 -> {1,2,77,3,4}, ulos 5 {1,2,77,3,4}, sisään 5 indeksiin 0 -> {5,1,2,77,3}, ulos 4 Käytä 64-bittisiä "long long int" tyyppejä kaikille kokonaisluvuille, joita ohjelmasi käyttää.