Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Pari ohjelmaa Javalla..?

Sivun loppuun

tyttö [06.12.2007 12:30:51]

#

Eli tarvitsisin "hieman" tai vähän enemmän apua, Java vähän tökkii, eikä ohjelmat mene kääntäjästä läpi. Tässä kuitenkin alkuperäiset ohjelmat. Voisiko joku siis hieman auttaa?

1. Toteuta metodin alkionIndeksi() runko siten, että se etsii annetusta taulukosta halutun
alkion ensimmäisen esiintymän paikan (eli indeksin) ja palauttaa sen. Main()-metodi ja
alkionIndeksi()-metodin otsikkorivi on annettu alla. Tehtävässä voit olettaa, että annettu
taulukko sisältää aina haettavan alkion. Palauta ratkaisusi pakattuna zip-tiedostona. Luokan ja
metodin nimeä ei saa muuttaa.

public class Indeksi {
/**
* Testaa metodin alkionIndeksi() toimintaa.
*/
public static void main(String[] args) {
int alkio = 1; //haettavan alkion arvo. Testaa eri arvoilla!
int[] luvut = {1, 2, 3, 4, 5};
System.out.println(alkionIndeksi(luvut, alkio));
}
/**
* Palauttaa haettavan luvun ensimmäisen esiintymän
* indeksin taulukossa luvut.
*
* Alkuehto: luvut != null && alkioTaulukossa(luvut, haettava)
*/
public static int alkionIndeksi(int[] luvut, int haettava) {
// Toteuta tähän...
}
}

3. Täydennä metodi parillisetLuvut() siten, että se palauttaa uuden kokonaislukutaulukon,
joka sisältää kaikki parilliset luvut ei-negatiivisten argumenttien esittämältä suljetulta lukuväliltä.
Suljettu lukuväli tarkoittaa sitä, että lukuvälin alku- ja loppupiste kuuluvat väliin. Vinkki:
Selvitäpä ensin, kuinka monta parillista lukua kokonaislukuvälillä yleisesti on. Palauta ratkaisusi
pakattuna zip-tiedostona. Luokan ja metodin nimeä ei saa muuttaa.

public class Luvut {
/**
* Testaa metodin parillisetLuvut() toimintaa.
*/
public static void main(String[] args) {
int alku = Integer.parseInt(args[0]);
int loppu = Integer.parseInt(args[1]);
int[] parilliset = parillisetLuvut(alku, loppu);
//tulostaa parilliset-taulukon alkiot
for (int i = 0; i < parilliset.length; i++) {
System.out.println(parilliset);
}
}
/**
* Palauttaa uuden taulukon, jossa on parilliset luvut
* suljetulta väliltä [alku, loppu].
*
* Alkuehto: 0 <= alku && alku <= loppu
*/
public static int[] parillisetLuvut(int alku, int loppu) {
// Toteuta tähän...
}
}

5. Toteuta metodi statistiikka(), joka saa argumenttina kokonaislukutaulukon ja palauttaa
kolmepaikkaisen taulukon, jossa on ensimmäisenä argumenttina saadun taulukon pienin luku,
toisena taulukon suurin luku ja kolmantena lukujen keskiarvo kokonaislukuna (pyöristettynä
alaspäin kohti nollaa). Metodin otsikko on annettu alla. Palauta ratkaisusi pakattuna zip-tiedostona.
Luokan ja metodin nimeä ei saa muuttaa.

public class Statistiikka {
/**
* Testaa metodin statistiikka() toimintaa.
*/
public static void main(String[] args) {
int[] luvut = {60, 10, 8, 4};
int[] tilasto = statistiikka(luvut);
for (int i = 0; i < tilasto.length; i = i + 1) {
System.out.println(tilasto);
}
}
/**
* Palauttaa uuden kolmepaikkaisen taulukon, jonka
* ensimmäisenä alkiona on luvut-taulukon alkioiden
* minimi, toisena maksimi ja kolmantena luvut-taulukon
* kaikkien alkioiden keskiarvo kokonaislukuna
* pyöristettynä alaspäin kohti nollaa.
*
* Alkuehto: luvut != null && luvut.length() > 0
*/
public static int[] statistiikka(int[] luvut) {
// Toteuta tähän...
}
}

kvanttori [13.12.2007 15:33:33]

#

Oikoteitä onneen ei ole!

Ohjelmointia oppii vain itse tekemällä, ei valmiita muiden tekemiä
vastauksia kopioimalla.

Teuro [14.12.2007 07:32:38]

#

Kerro ihmeessä mitä et osaa, niin on hiukan helpompi auttaa. Kukaan täällä tuskin antaa yksiselitteistä ratkaisua tehtäviisi. Autamme toki, mikäli muotoilet kysymyksesi oikein. Aloituksessasi saan käsityksen, että et ole vielä tehnyt mitään ratkaisun eteen.

Ekaan tehtävään voin toki antaa vinkin. Onnistunee helpoiten vaikkapa kaymällä taulukon läpi for-lauseella. Aloita indeksistä nolla ja jatka kunnen laskuri osuu annettuun lukuun (tehtävässä sai olettaa, että luku on taulukossa).

Wyzguy [14.12.2007 16:57:37]

#

Ongelmia on hyvä ratkoa yksi kerrallaan.

Viestistäsi ei selviä toimiiko ympäristösi muuten?

1. Osaatko tehdä HelloWorld ohjelman ja kääntyykö se?

jos ympäristö on kunnossa ..

2. Muuta 1. ohjelmasi alkionIndeksi metodia seuraavasti ja kokeile kääntämistä:

public static int alkionIndeksi(int[] luvut, int haettava) {
	// Toteuta tähän...

		return 1;
	}

Jos kaikki nyt toimii ovat ympäristöt nyt kunnossa ja voit nyt jatkaa itse ydinongelman parissa johon jo yksi vinkki tulikin. Kysele yksittäisistä ongelmista tarkemmin äläkä oleta, että joku antaa valmiin toteutuksen, niin eiköhän niitä apujakin tule. :)

Grey [15.12.2007 03:46:09]

#

kvanttori kirjoitti:

Ohjelmointia oppii vain itse tekemällä, ei valmiita muiden tekemiä

Pätee varmaan mm. puhumiseenkin oppimisessa, tai lukemiseen oppimisessa? Ja yleensäkin oppimisessa? Ehei, ehei, pikkuinen. Oppiminen on sitä että puolet siitä on aina matkimista ja toinen puoli vasta on se opitun/matkitun ymmärtäminen..

-Grey-

kvanttori [23.12.2007 01:48:40]

#

Ok, oikeassa olet. Mutta tässähän "tyttö" ei ollut yrittänyt
itse tehdä mitään vaan pyysi valmista vastausta. Ilmaisin asian
ehkä hieman provosoiden.

Juuso [28.12.2007 16:19:36]

#

Näin offtopicina: Nämä tehtävät muistuttuvat samoja tehtäviä, joita tein pari vuotta sitten Turun Yliopiston ohjelmoinnin peruskurssilla. :P

renni [01.01.2008 14:35:26]

#

OT jatkuu: Onneksi eivät muistuta lainkaan niitä tehtäviä, joita tein aikoinaan Turun Yliopiston ohjelmoinnin peruskurssilla. ;) Silloin oli tosin kielenäkin Pascal vielä.

ilkkak [04.01.2008 11:18:13]

#

Miksi opetetaan javaa ja sitten tehtävissä käytetään kaiken olio-ohjelmoinnin vastaisesti staattisia metodeja ja toisekseen parametrit välitetään luokan sisällä metodilta toiselle parametrilistoina.

Minusta tämä ei anna kovin hyvää kuvaa tehtävien laatijasta.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta