Onkelma

**JJ

Eli mun pitäs tehdä ohjelma joka kysyy käyttäjältä, montako lukua generoidaan taulukkoon. määrän saatua se generoi luvut, lajittelee ne ja lopuksi tulostaa taulukon käyttäjälle.
Tämän jälkeen ohjelman pitäis kysyä käyttäjältä, anna alaraja ja yläraja.
Esim. käyttäjä olis alunperin halunnut generoida 5lukua taulukkoon ja ohjelma tulostais sille vaikkapa 10, 23, 54, 88, 100.
Tämän jälkeen käyttäjä antais alarajaksi 23 ja ylärajaksi 88.. jolloin ohjelman pitäisi tavallaan luoda uus taulukko johon tulisi vain ne luvut jotka on annetulla arvovälillä, eli tässätapauksessa 23, 54, 88.

Olen saanut ohjelman toimimaan siihen asti kunnes kysytään ala ja ylärajaa.. Olisko jollakin vinkkejä miten saisin aikaseksi tuon uuden taulukon luonnin joka sisältää vain ne luvut jotka on annetulla arvovälillä?

6

521

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • vastaus on

      Jos halutaan generoida nopan(luvut 1-6) heittoa tapahtuu se näin: Random noppa = new Random(); int luku = noppa.nextInt(6) 1;
      Taulukon luonti tapahtuu aivan samanlailla kuten aiememinkin.

    • kiikastaa?

      Teet vaan uuden taulukon ja käyt vanhan taulukon alkioittain läpi ja jos se on suurempi tai yhtäsuuri kuin alaraja ja pienempi tai yhtäsuuri kuin yläraja niin se kopioidaan uuteen taulukkoon.

      Onko tässä joku erityinen "ongelmakohta"?

      • **JJ

        Siitä kiikastaa, että kuinka tuo kopioiminen oikeen vois tapahtua.

        Sen tiedän, että kopionti normaalisti tapahtuisi jotenkin esim näin:
        System.arraycopy(taulu1, 1, taulu2, 0, 3);

        mutta tuossahan jo tiedetään, että montako lukua ollaan kopioimassa uuteen taulukkoon, eli 4.
        Mutta tässä tehtävässähän ei ennalta tiedä kuinka monta alkiota tullaan uuteen tauluun kopioimaan, niin se tuottaa harmaita hiuksia.


      • voinut lukea
        **JJ kirjoitti:

        Siitä kiikastaa, että kuinka tuo kopioiminen oikeen vois tapahtua.

        Sen tiedän, että kopionti normaalisti tapahtuisi jotenkin esim näin:
        System.arraycopy(taulu1, 1, taulu2, 0, 3);

        mutta tuossahan jo tiedetään, että montako lukua ollaan kopioimassa uuteen taulukkoon, eli 4.
        Mutta tässä tehtävässähän ei ennalta tiedä kuinka monta alkiota tullaan uuteen tauluun kopioimaan, niin se tuottaa harmaita hiuksia.

        aluksi kunnolla tuon kysymyksen.
        Kaikkein yksinkertaisin on tietenkin et luot uuden arraylistin, käyt läpi vanhan listan ja lisäät sopivat alkiot uuteen listaan.
        Jos haluat käyttää tuota arraycopya niin tarvitset alarajan ja ylärajan indeksit. Näistä pystyt laskemaan kopioitavien alkioiden määrän ja mistä kohdasta kopiointi alkaa. Jotta tämä tapa olisi tehokas niin joudut miettimään, että millaisella hakualgoritmilla haet indeksit.


      • tuota
        **JJ kirjoitti:

        Siitä kiikastaa, että kuinka tuo kopioiminen oikeen vois tapahtua.

        Sen tiedän, että kopionti normaalisti tapahtuisi jotenkin esim näin:
        System.arraycopy(taulu1, 1, taulu2, 0, 3);

        mutta tuossahan jo tiedetään, että montako lukua ollaan kopioimassa uuteen taulukkoon, eli 4.
        Mutta tässä tehtävässähän ei ennalta tiedä kuinka monta alkiota tullaan uuteen tauluun kopioimaan, niin se tuottaa harmaita hiuksia.

        Ei kannata hienostella ja tehdä kopiointia yhdellä käskyllä (arraycopy) näin pienissä lukumäärissä kun sillä ei ole suorituskyvyn kannalta mitään merkitystä.

        Eli käyt vaan silmukalla läpi kaikki taulu1:sen alkiot ja ehdon täyttävät kopioit aina taulu2:seen ja kasvatat sen indeksiä yhdellä.


      • **JJ
        tuota kirjoitti:

        Ei kannata hienostella ja tehdä kopiointia yhdellä käskyllä (arraycopy) näin pienissä lukumäärissä kun sillä ei ole suorituskyvyn kannalta mitään merkitystä.

        Eli käyt vaan silmukalla läpi kaikki taulu1:sen alkiot ja ehdon täyttävät kopioit aina taulu2:seen ja kasvatat sen indeksiä yhdellä.

        Ohjelma toimii ja kiitoksia vinkeistä kaikille.

        Tähän vastaan, että ohjelman alussahan käyttäjältä kysytään, että montako lukua hän haluaa generoida.. se voi olla 2 tai vaikkapa 2000.. eli lukumäärähän ei ennalta ole tiedossa.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Voitasko leikkiä jotain tunnisteleikkiä?

      Tietäisi ketä täällä käy kaipaamassa.. kerro jotain mikä liittyy sinuun ja häneen eikä muut tiedä. Vastaan itsekin kohta
      Ikävä
      77
      1766
    2. Tietysti jokainen ansaitsee

      Hän varmasti ansaitsee vain parasta ja sopivinta tietenkin, suon sen onnen hänelle enemmän kuin mielelläni. Aika on nyt
      Ikävä
      18
      1669
    3. Millä voin

      Hyvittää kaiken?
      Ikävä
      14
      1468
    4. En voi sille mitään

      Tulen niin pahalle tuulelle tästä paikasta nykyisin. Nähnyt ja lukenut jo kaiken ja teidän juttu on samaa illasta toisee
      Ikävä
      12
      1164
    5. 50+ naiset kyl

      Lemottaa sillille mut myös niitte kaka lemottaa pahlle ku kävin naiste veskis nuuhiin
      Ikävä
      19
      1153
    6. Välitän sinusta mies

      Kaikki mitä yritin kertoa tänään ei mennyt ihan putkeen..Joka jäi jälkeenpäin ajateltuna suoraan sanottuna harmittaa aiv
      Työpaikkaromanssit
      5
      1141
    7. hieman diabetes...

      Kävin eilen kaverin kanssa keskusapteekissa kun on muutama kuukausi sitten tullut suomesta ja oli diabetes insuliinit lo
      Pattaya
      12
      1106
    8. Annetaanko olla vaan

      Siinä se, tavallaan kysymys ja toteamuskin. Niin turhaa, niin rikkovaa. On niin äärettömän tärkeä, ja rakas olo.. N
      Ikävä
      29
      1101
    9. Miten joku voi käyttää koko elämänsä

      siihen että nostelee täällä vanhoja ketjuja ja troIIaa niihin jotain linkkiä mitä kukaan ei avaa? Ihmisellä ei ole mitää
      Tunteet
      6
      1089
    10. Pakkoruotsi on leikkikieli, jota ei ole tarkoituskaan osata

      Pakkoruotsi on leikkikieli. Ennen leikkikieltä sanottiin siansaksaksi, sitten keksittiin tilalle pakkoruotsi. Pakkoruot
      Kielipolitiikka
      7
      1074
    Aihe