Minulla on tälläinen ongelma olen java-ohjelmointi kurssilla ja työt pitäisi palauttaa parin päivän päästä.Minulla on kuitenkin yksi työ tekemättä ja se on seuraavanlainen: Suunnittele ohjelma,joka laskee ympyrän kehän pituuden ja pinta-alan kysyttyään käyttäjältä ensi ympyrän halkaisijan pituutta.
Tiedän että kukaan ei osaa auttaa :(
21
9578
Vastaukset
- valitan
tuollainen tehtävä voi tulla vastaan kun on opiskellut diplomi-insinööriksi ja se ei ratkea ilman useamman päivän koodirupeamaa ja matemaattista pähkäilyä, johon harvalla täällä taitaa olla aikaa. joten valitan, kukaan ei todellakaan osaa auttaa :(
- Auttaa miestä mäessä
On tosiaan vaikee. Mutta itse aikanaan päättötyötä tehdessäni törmäsin OpenGL -nimiseen ohjelmointirajapintaan. Sieltä voisi lähteä manuaalien avulla etsimään mahdollista ratkaisua. Toinen keino on kylmästi etsiä jostain vertaisverkosta vastaava ohjelma ja palautta se, sekä kertoa, miten lähdekoodit ovat vain joutuneet hukkaan
- (DI) S. Formation
Auttaa miestä mäessä kirjoitti:
On tosiaan vaikee. Mutta itse aikanaan päättötyötä tehdessäni törmäsin OpenGL -nimiseen ohjelmointirajapintaan. Sieltä voisi lähteä manuaalien avulla etsimään mahdollista ratkaisua. Toinen keino on kylmästi etsiä jostain vertaisverkosta vastaava ohjelma ja palautta se, sekä kertoa, miten lähdekoodit ovat vain joutuneet hukkaan
...niin tuollaisen ohjelman voi ostaa hyvin varustelluista tietokonekaupoista. Markkinoilla on eräs Java-toteutuskin, mutta se toimii vain Windowsin Professional-versioissa ongelman vaativan luonteen takia.
Yleensä nämä myydään samassa hyllyssä kuin CAD-ohjelmat. Lisenssen hinnat lähtevät noin kymmenestä tuhannesta euroista per prosessori. Halvimmat versiot eivät osaa käyttää virtuaalimuistia, joten niillä ei voi laskea kovin suurien ympyröiden pinta-aloja tai kehien pituuksia.
Vuoden alusta on tullut valikoimaan myös nopeusoptimoidut versiot, joille voi täytyy halkaisijan sijaan syöttää ympyrän säde. Nämä versiot laskevat kehän pituuden aavistuksen verran halkaisijaan pohjautuvia hitaammin, mutta hakkaavat mömmöt ulos niistä, kun mitataan pinta-alan laskentanopeutta.
Minkä ikinä ostatkin, valitse eurooppalainen versio. USA:ssa piin arvo on nimittäin noin 0,005926535897932384626 hpk (halkaisijaa per kehä) pienempi kuin Euroopassa. - Nimimerkki
(DI) S. Formation kirjoitti:
...niin tuollaisen ohjelman voi ostaa hyvin varustelluista tietokonekaupoista. Markkinoilla on eräs Java-toteutuskin, mutta se toimii vain Windowsin Professional-versioissa ongelman vaativan luonteen takia.
Yleensä nämä myydään samassa hyllyssä kuin CAD-ohjelmat. Lisenssen hinnat lähtevät noin kymmenestä tuhannesta euroista per prosessori. Halvimmat versiot eivät osaa käyttää virtuaalimuistia, joten niillä ei voi laskea kovin suurien ympyröiden pinta-aloja tai kehien pituuksia.
Vuoden alusta on tullut valikoimaan myös nopeusoptimoidut versiot, joille voi täytyy halkaisijan sijaan syöttää ympyrän säde. Nämä versiot laskevat kehän pituuden aavistuksen verran halkaisijaan pohjautuvia hitaammin, mutta hakkaavat mömmöt ulos niistä, kun mitataan pinta-alan laskentanopeutta.
Minkä ikinä ostatkin, valitse eurooppalainen versio. USA:ssa piin arvo on nimittäin noin 0,005926535897932384626 hpk (halkaisijaa per kehä) pienempi kuin Euroopassa.Piin arvo jenkeissä vain tuon verran pienempi?! Mulla nyt sitten meni pohja koko oman yrityksen toiminnalta. Mä kun olin täysin siinä käsityksessä että jenkit lähtisivät toteuttamaan piin tulkintaa Raamatun pohjalta ja julistaisivat sen arvon olevan tasan kolme. Meillä oli tarkoitus iskeä tähän markkinarakoon tulevaisuudessa; yksikään nykyinen markkinoilla järjestelmä ei osaa hallita tilannetta jossa piin arvo onkin kolme.
Meidän yrityksellä oli tosiaan tarkoitus tehdä kevyempi versio ympyrän kehän laskentajärjestelmästä, joka soveltuu kansainväliseen toimintaan... mutta nyt sitten homma kasahti tuohon! :( Miten ihmeessä me voidaan selittää Tekesille ja muille rahoittajille että tuli tehtyä tämmöinen kupru...
Mutta tuo laskentatehon vaatimukset on ihan totta. Meillä on onneksi ollut mahdollisuus käyttää top500 listalta löytyvää kahta palvelinjärjestelmää meidän oman ohjelmistoarkkitehtuurin testaamiseen.
Tuo on kyllä ihan mielenkiintoinen idea käyttää sädettä halkaisijan sijaan. Olisiko sinulla jotain tutkimustuloksia aiheesta? Tai olisiko mahdollista käyttää halkaisijaa laskettaessa sädettä ja pinta-alalaskussa sädettä? Siinä tapaukessa pitäisi vaan kehittää jokin tarpeeksi tehokas algoritmi jolla selvitetään haluaako käyttäjä säteen vai halkaisijan.
Vielä on tosiaan paljon tutkittavaa kehän pituus ja pinta-alalaskentatieteessä. Kyllä olen tyytyväinen että tajusin erikoistua hajautettujen järjestelmien sijaan tähän! - (DI) S. Formation
Nimimerkki kirjoitti:
Piin arvo jenkeissä vain tuon verran pienempi?! Mulla nyt sitten meni pohja koko oman yrityksen toiminnalta. Mä kun olin täysin siinä käsityksessä että jenkit lähtisivät toteuttamaan piin tulkintaa Raamatun pohjalta ja julistaisivat sen arvon olevan tasan kolme. Meillä oli tarkoitus iskeä tähän markkinarakoon tulevaisuudessa; yksikään nykyinen markkinoilla järjestelmä ei osaa hallita tilannetta jossa piin arvo onkin kolme.
Meidän yrityksellä oli tosiaan tarkoitus tehdä kevyempi versio ympyrän kehän laskentajärjestelmästä, joka soveltuu kansainväliseen toimintaan... mutta nyt sitten homma kasahti tuohon! :( Miten ihmeessä me voidaan selittää Tekesille ja muille rahoittajille että tuli tehtyä tämmöinen kupru...
Mutta tuo laskentatehon vaatimukset on ihan totta. Meillä on onneksi ollut mahdollisuus käyttää top500 listalta löytyvää kahta palvelinjärjestelmää meidän oman ohjelmistoarkkitehtuurin testaamiseen.
Tuo on kyllä ihan mielenkiintoinen idea käyttää sädettä halkaisijan sijaan. Olisiko sinulla jotain tutkimustuloksia aiheesta? Tai olisiko mahdollista käyttää halkaisijaa laskettaessa sädettä ja pinta-alalaskussa sädettä? Siinä tapaukessa pitäisi vaan kehittää jokin tarpeeksi tehokas algoritmi jolla selvitetään haluaako käyttäjä säteen vai halkaisijan.
Vielä on tosiaan paljon tutkittavaa kehän pituus ja pinta-alalaskentatieteessä. Kyllä olen tyytyväinen että tajusin erikoistua hajautettujen järjestelmien sijaan tähän!Solfwramin lupaama miljoonapalkinto houkutteli meidän tutkimusryhmämme pahamaineisen säteen ja halkaisijan ongelman pariin. Jos toisen perusteella voisi ratkaista toisen, olisi välittömästi mahdollista tehdä alkuperäisen kysyjän haaveilema sovellus, joka laskisi polynomiaalisessa ajassa samalle ympyrälle sekä kehän että pinta-alan vain yhden parametrin perusteella. Sovellusmahdollisuudet olisivat valtavat, mutta varjopuolena kummitteli se, että löytö veisi pohjan internetissä yleisesti käytetyistä kryptografisista algoritmeista (ymmyrkäisillä käyrillä salatut viestit olisi purettavissa silmänräpäyksessä).
Huomasimme kuitenkin nopeasti ongelman vaikeuden. Säteen ja halkaisijan väliin jäävästä kulmasta johtuva vapausaste teki upotti nopeasti haaveemme analyyttisestä ratkaisusta. Kylmälaboratoriossa suoritetut mittaukset auttoivat meitä vähän eteenpäin ja havaitsimme kulman kvantittuneen luonteen (raportoitu alunperin Mature-lehdessä 1999, ennen kuin y2k muutti M:n N:ksi). Seinä nousi kuitenkin lopullisesti vastaan tutkiessamme säteen ja halkaisijan käyttäytymistä ympyrän keskipisteen lähellä (Uno Eight-Zeron paradoksi).
Pyyhkäisyelektronimikroskoopilla saadut kuvat nimittäin osoittivat säteiden lähtevän keskipisteestä lähes joka suuntaan (kulman kvantittumisen takia mahdollisia suuntia ei tietenkään ole loputtomasti), mutta aina pois päin keskipisteestä. Sen sijaan halkaisija, joka teoriassa lävistää pistemäisen keskikohdan, on jaettavissa kahteen osaan. Toinen osista käyttäytyy kauniin sädemäisesti, mutta toinen osa, jota kutsumme antisäteeksi, tuleekin keskipisteeseen ulkokehältä päin! Antisäteen ja säteen välinen kulmakaan ei tottele empiirisin kokein löydettyä kulmakvanttia, vaan se on absoluuttisessa nollapisteessä tasan 180 astetta. Kulmakvantin takia sen olisi pitänyt osua 180,0059265358979 asteeseen tai johonkin muuhun sen lähimpään Sröd Ringin aaltofunktion huippukohtaan.
Nyt tutkimusryhmämme on hajallaan sekä henkisesti että fyysisesti. Raskaimmin paradoksin järkyttämät jäivät kiertelemään kuka Wieniin, kuka Haminaan. Itsekin olin ajautua kehä 3:lle, mutta rannalle päästyäni tulin järkiini ja palasin Tampereelle.
En ymmärrä, enkä enää haluakaan ymmärtää, millaista approksimointia nuo mainitsemani sovellukset käyttävät ratkaistessaan kehää ja pinta-alaa pelkästään halkaisijan (ja uusimmat säteen) avulla. Ja kehoitan muitakin ummistamaan silmät, painamaan nappia ja uskomaan tietokonetta. Minäkin olen viimeaikoina katsellut mieluummin hajautettujen järjestelmien suuntaan.
- Todella vaikea ongelma
Hyviä vinkkejähän tuolla tulikin. Pikaiselta arviolta sellainen 100 000 riviä koodia vaatisi. Useamman vuoden työ.
- Oikea vinkki
Kieltämättä aika hauskojen huumorin kukkien jälkeen: muistele yläasteen matematiikkaa. Ilmeisesti osaat Java-toteutuksen muilta osin :)
- Pkorpela
- konsulttii
Helpointa lienee ehkä tehdä kaikki valmiiksi Excelissä, jonka lähettää Sharepointiin. Sen voi sitten helposti integroida Web Serviceillä Javaan.
- lukion opettaja
Vaikka ongelma voikin vaikuttaa yksinkertaiselta, on se syytä ratkaista huolellisesti.
Ensimmäiseksi on tutustuttava tapaan, jolla tietokoneet esittävä lukuja eli liukulukuihin. Koska tietokoneissa on aina rajallinen muistin määrä, ei niillä voida esittää kaikkia reallilukuja (joita on ylinumeroituvasti). Jo tästä seuraa, että tehtävää ei voi ratkaista täsmällisesti.
Toiseksi laskuissa voi esiintyä esim. katkaisuvirheitä. Kannattaa tutustua myös siihen, mitä IEEE-standardi sanoo pyöristyksistä.
Kolmanneksi tai ehkäpä ihan ensimmäiseksi voisi tutustua Peter R. Turnerin kirjaan Guide to Scientific Computing. Kirja on selkeästi kirjoitettu eikä vaadi lukiomatematiikkaa syvällisempiä taitoja, jotta siitä voisi nauttia.
Näiden taustatietojen hankkimisen jälkeen voi ryhtyä tarkastelemaan lähemmin yllä esitettyä ongelmaa. - tarvitsen apua nyt
lukion opettaja kirjoitti:
Vaikka ongelma voikin vaikuttaa yksinkertaiselta, on se syytä ratkaista huolellisesti.
Ensimmäiseksi on tutustuttava tapaan, jolla tietokoneet esittävä lukuja eli liukulukuihin. Koska tietokoneissa on aina rajallinen muistin määrä, ei niillä voida esittää kaikkia reallilukuja (joita on ylinumeroituvasti). Jo tästä seuraa, että tehtävää ei voi ratkaista täsmällisesti.
Toiseksi laskuissa voi esiintyä esim. katkaisuvirheitä. Kannattaa tutustua myös siihen, mitä IEEE-standardi sanoo pyöristyksistä.
Kolmanneksi tai ehkäpä ihan ensimmäiseksi voisi tutustua Peter R. Turnerin kirjaan Guide to Scientific Computing. Kirja on selkeästi kirjoitettu eikä vaadi lukiomatematiikkaa syvällisempiä taitoja, jotta siitä voisi nauttia.
Näiden taustatietojen hankkimisen jälkeen voi ryhtyä tarkastelemaan lähemmin yllä esitettyä ongelmaa.tarvitsen apua nyt koska työt palautetaan kohta ja jos ei ole valmiina niin kurssista hylsy ja sitä en halua,joten siksi kysyin täältä apua.
- Sähköposti
tarvitsen apua nyt kirjoitti:
tarvitsen apua nyt koska työt palautetaan kohta ja jos ei ole valmiina niin kurssista hylsy ja sitä en halua,joten siksi kysyin täältä apua.
Hylsyä odotellessa. Onneksi olkoon.
- sähköpostissasi valmiina
tarvitsen apua nyt kirjoitti:
tarvitsen apua nyt koska työt palautetaan kohta ja jos ei ole valmiina niin kurssista hylsy ja sitä en halua,joten siksi kysyin täältä apua.
- TRRY
lukion opettaja kirjoitti:
Vaikka ongelma voikin vaikuttaa yksinkertaiselta, on se syytä ratkaista huolellisesti.
Ensimmäiseksi on tutustuttava tapaan, jolla tietokoneet esittävä lukuja eli liukulukuihin. Koska tietokoneissa on aina rajallinen muistin määrä, ei niillä voida esittää kaikkia reallilukuja (joita on ylinumeroituvasti). Jo tästä seuraa, että tehtävää ei voi ratkaista täsmällisesti.
Toiseksi laskuissa voi esiintyä esim. katkaisuvirheitä. Kannattaa tutustua myös siihen, mitä IEEE-standardi sanoo pyöristyksistä.
Kolmanneksi tai ehkäpä ihan ensimmäiseksi voisi tutustua Peter R. Turnerin kirjaan Guide to Scientific Computing. Kirja on selkeästi kirjoitettu eikä vaadi lukiomatematiikkaa syvällisempiä taitoja, jotta siitä voisi nauttia.
Näiden taustatietojen hankkimisen jälkeen voi ryhtyä tarkastelemaan lähemmin yllä esitettyä ongelmaa.Mielestäni liukulukujen esitystapaan ja IEEE-754:ään tutustuminen ohjelmoinnin opiskelun alkuvaiheessa on hyvä ajatus vain siinä tapauksessa, että haluaa tappaa motivaation ohjelmoinnin opiskeluun heti alkuunsa. Alkuperäisellä kysyjällä ei tosin tainnut olla motivaatiota edes tapettavaksi, joten vahinkoa tuskin pääsi tapahtumaan.
Ohjelmoinnista on mahdollista ja tärkeää saada onnistumisen elämyksiä ja sitä kautta sytyttää into oppia lisää. Ohjelmoijan tiellä on vain muutamia miinoja, joista yhden muodostavat IEEE:n liukumii... liukuluvut.
Standardia tuntematon ohjelmoija pärjää hyvin niin pitkään, kun hän ymmärtää karttaa floatteja ja doubleja kuin ruttoa. Esimerkiksi se, että luvun esityksessä on desimaalierotin, kuten usein esimerkiksi tuotteiden hinnoissa, ei vielä tarkoita, että luku olisi liukuluku. Hinnoissahan tuo desimaalierotin ei ole liukuva (engl. floating point), vaan kiinteä (fixed point). Kaupassa se erottaa yleensä kaksi (no, polttoaineen tapauksessa kolme) viimeistä lukua kokonaisista euroista. Jos siis yksiköksi otetaankin sentin kymmenesosat, kauppojen hinnat ovatkin kokonaislukuja.
Kokonaislukutyypit ovat enimmäkseen mukavia, niitä kannattaa suosia. Kokonaislukuja voi laskea yhteen ja niitä voi järkevästi verrata vielä yhteenlaskun jälkeenkin. Liukuluvut eivät ole sellaisia. IEEE:n standardin mukaan laskiessa esimerkiksi 0,1 0,1 0,1 ei ole 0,3, vaan vähän enemmän. Kokeile itse:
System.out.println(0.1d 0.1d 0.1d > 0.3d);
Doubleilla virhe on luonnollisesti pienempi kuin floateilla. Seuraava rivi tulostaa myös "true":
System.out.println(0.1d 0.1d 0.1d < 0.1f 0.1f 0.1f);
Javassa liukulukujen kanssa pitää olla vieläkin tarkempana kuin useimmilla muilla ohjelmointikielillä. Ohjelma saattaa jakaa jopa luvun nollalla antamatta minkäänlaista virheilmoitusta. Kuka arvaa, mitä seuraava ohjelma tulostaa:
class Hello {
public static void main(String[] args) {
float nolla1 = 0.0f;
double nolla2 = 0.0d;
int nolla3 = 0;
int i = 44 (int)(1.0f/nolla1) (int)(2/nolla2) (int)(3.0d/nolla3) * (int)(0/nolla1);
System.out.println(i);
}
}
Liukuluvut ovat epätarkkoja ja jopa niiden laskentajärjestyksellä voi olla merkittäviä vaikutuksia tulokseen. Pysykää kaukana niistä.
(Ehkä havaitsemamme kulman kvantittuminen olikin softavika kylmälaboratorion laitteissa... ;)
- onnistu,
niin eti netistä piin vaikka 100 ekaa desimaalia, esim. tästä:
_______________________________________________________________________
pii = n. 3, 14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209
74944 59230 78164 06286 20899 86280 34825 34211 70679 82148
_______________________________________________________________________
halkaisijan syöttämällä kehän saa kaavalla
{ PII kertaa halkaisija }
pinta-alan saa kaavalla
{ PII * ( halkaisija kertaa halkaisija ) }
javassa rivit menee varmaan helposti, valitse oikea tietotyyppi ja syötä muuttujaan tuo haluttu piin arvo. sitten kirjota kaavat ylhäältä ja ohjelmoi vastauksen tulostus niin ku parhaaks näet. en osaa javaa, olen vasta 13v ohjelmoinnin opiskelija (vittuilua saa kyl kuulla koulussa siitä...). koodaan lähinnä webiin, javascript, html, pian myös php kuuluvat osaamiseeni. perusasiat hallinnassa siis. Mut täl kaaval saa halutun tuloksen. teen ton kysytyn ohjelman html - versiona nettiin pian, palaan foorumille sitten... - poika 13v, 7lk
kaavat:
kehä=halkaisija * PII
pinta-ala = PII * halkaisija potenssiin 2- hei haloo
Vain päälle 2w vanha topikki...
- hopi.
hei haloo kirjoitti:
Vain päälle 2w vanha topikki...
eikä vieläkään valmista vastausta, huono palsta :(
- pööads
hopi. kirjoitti:
eikä vieläkään valmista vastausta, huono palsta :(
En nyt lukenu threadia ollenkaan, mutta nopeella googletuksella ja viikon ohjelmointikokemuksella:
import static java.lang.Math.PI;
import java.lang.Math.*;
import java.io.*;
import java.util.*;
public class ympyrälaskentaa {
public static void main(String args[]) {
System.out.println("Mikä on ympyrän säde?");
Scanner kysytäänsädettä = new Scanner(System.in);
int säde = kysytäänsädettä.nextInt();
System.out.println("metriä? dm? cm? mm?");
Scanner kysytäänyksikköä = new Scanner(System.in);
String yksikkö = kysytäänyksikköä.nextLine();
double kehä = säde * PI;
double sädePintaalaan = Math.pow(säde,2);
double pintaAla = sädePintaalaan * PI;
System.out.println("kehä: " kehä yksikkö);
System.out.println("pinta-ala: " pintaAla yksikkö "^2");
}
} - pööasd
pööads kirjoitti:
En nyt lukenu threadia ollenkaan, mutta nopeella googletuksella ja viikon ohjelmointikokemuksella:
import static java.lang.Math.PI;
import java.lang.Math.*;
import java.io.*;
import java.util.*;
public class ympyrälaskentaa {
public static void main(String args[]) {
System.out.println("Mikä on ympyrän säde?");
Scanner kysytäänsädettä = new Scanner(System.in);
int säde = kysytäänsädettä.nextInt();
System.out.println("metriä? dm? cm? mm?");
Scanner kysytäänyksikköä = new Scanner(System.in);
String yksikkö = kysytäänyksikköä.nextLine();
double kehä = säde * PI;
double sädePintaalaan = Math.pow(säde,2);
double pintaAla = sädePintaalaan * PI;
System.out.println("kehä: " kehä yksikkö);
System.out.println("pinta-ala: " pintaAla yksikkö "^2");
}
}Ja kyllä: "double pintaAla = sädePintaalaan * PI;"
siinä käytetty väärää termiä. mutta tekee kuitenkin asiansa ^^ - asdasdsdwqe
"kaavat:
kehä=halkaisija * PII
pinta-ala = PII * halkaisija potenssiin 2 "
pinta-ala = PII * SÄDE potenssiin 2, säde on taas halkaisija/2..
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Ja taas ammuttu kokkolassa
Kokkolaisilta pitäisi kerätä pois kaikki ampumaset, keittiöveitset ja kaikki mikä vähänkään paukku ja on terävä.303481Kukka ampu taas Kokkolassa?
T. olisi hetkeä aiemmin lähtenyt johonkin. Naapuri kai tekijä J.K., ei paljasjalkainen Kokkolalainen, vaan n. 100km pääs91538Kuinka kauan
Olet ollut kaivattuusi ihastunut/rakastunut? Tajusitko tunteesi heti, vai syventyivätkö ne hitaasti?1131473Milli-helenalla ongelmia
Suomen virkavallan kanssa. Eipä ole ihme kun on etsintäkuullutettu jenkkilässäkin. Vähiin käy oleskelupaikat virottarell2241255Kun näen sinut
tulen iloiseksi. Tuskin uskallan katsoa sinua, herätät minussa niin paljon tunteita. En tunne sinua hyvin, mutta jotain34893Purra saksii taas. Hän on mielipuuhassaan.
Nyt hän leikkaa hyvinvointialueiltamme kymmeniä miljoonia. Sotea romutetaan tylysti. Terveydenhoitoamme kurjistetaan. ht242883- 60869
Helena Koivu on äiti
Mitä hyötyä on Mikko Koivulla kohdella LASTENSA äitiä huonosti . Vie lapset tutuista ympyröistä pois . Lasten kodista.130858Ja taas kerran hallinto-oikeus että pieleen meni
Hallinto-oikeus kumosi kunnanhallituksen päätöksen vuokratalojen pääomituksesta. https://sysmad10.oncloudos.com/cgi/DREQ66844Löydänköhän koskaan
Sunlaista herkkää tunteellista joka jumaloi mua. Tuskin. Siksi harmittaa että asiat meni näin 🥲97808