C-kieli: reaaliluku merkkijonoksi?

Seuraa 
Viestejä45973
Liittynyt3.9.2015

Miten muutan reaaliluvun (double) merkkijonoksi (char[pituus]) ohjelman sisällä?
Ei mene koodi millään oikein, eikä irtoo kirjallisuudestakaan.
C- tai C++ koodi käy.

#include
#include

int main(void)
{
int i;
double luku=222.44288, summa,osamaara;
summa=luku;

for (i=1; i<=99; i++)
{
summa=summa+1;
osamaara=summa/1.98;
printf("\n osamaara=%f ",osamaara);
cout<
}
return 0;
}

tähän sitä kaipaisin, osamäärien loppunumeroiden poimimiseen.
Liittyy uskomattomaan numerotemppuun.

Sivut

Kommentit (21)

Vierailija

Tässä nyt yksinkertainen esimerkki. Mitä tarkalleen ottaen meinaat tehdä?

Ota huomioon mahdolliset pyöristysvirheet

#include

int main()
{
/* merkkijonopuskuri */
char buf[255];

/* sprintf on kuin printf, mutta tulostaa merkkijonopuskuriin */
sprintf(buf, "%f", 45.23425356);

printf("%s", buf);

return 0;
}

Vierailija
lusku
Miten muutan reaaliluvun (double) merkkijonoksi (char[pituus]) ohjelman sisällä?
Ei mene koodi millään oikein, eikä irtoo kirjallisuudestakaan.
C- tai C++ koodi käy.

#include
#include

int main(void)
{
int i;
double luku=222.44288, summa,osamaara;
summa=luku;

for (i=1; i<=99; i++)
{
summa=summa+1;
osamaara=summa/1.98;
printf("\n osamaara=%f ",osamaara);
cout<
}
return 0;
}

tähän sitä kaipaisin, osamäärien loppunumeroiden poimimiseen.
Liittyy uskomattomaan numerotemppuun.

Puhtaalla C:llä sprintf, mutta tuossa kannattaa käyttää laajennusta snprintf, koska se on turvallisempi. Format-stringissä pitää muuten olla %lf.

En ihan ollut varma mitä olet tekemässä, mutta luultavasti olet ratkaisemassa ongelmaa, joka on jo ratkaistu.

Eli, auttaisiko vaikkapa tämä:
http://www.swox.com/gmp/

Heksu
Seuraa 
Viestejä5462
Liittynyt16.3.2005

Vai haetaanko tässä taas jotain ratkaisua johonkin koulun harjoitustehtävään? Lukujen muuttaminen merkkijonoiksi ja vastoinpäin on kyllä ihan peruskauraa kaikissa ohjelmointikielissä, joten tuota sprintf() -funktiota tuskin haettiin ellei kysyjä ole ihan totaalinen newbie?

En siis todellakaan tarkoita ettäkö newbieydessä olisi jotain pahaa, päinvastoin, kaikkihan meistä on joskus ollut.

Vierailija
lusku
Miten muutan reaaliluvun (double) merkkijonoksi (char[pituus]) ohjelman sisällä?
Ei mene koodi millään oikein, eikä irtoo kirjallisuudestakaan.
C- tai C++ koodi käy.

C:tä tuo ohjelma ei ole nähnytkään, mutta hyvin rumalta C++:lta se myös näyttää.

Nykystandardin mukaan C++:n standardiheadereissä ei enää käytetä .h päätettä, ks. englanninkielinen faq:
http://ma.rtij.nl/acllc-c++.FAQ.html#q3.5

Suositeltu muoto C++:ssa on kirjoittaa int main(), C:ssä int main( void ).

Moni virhe johtuu siitä että muuttujia ei alusteta. Kannattaa opetella sen tekeminen mahdollisimman varhain, eli kirjoita mieluummin int i = 0; kuin int i;

C++:ssa muuttujia suositellaan esiteltäväksi vasta sitten kun niitä tarvitaan. Voisit esim. hyvin esitellä i:n vasta for lauseessa "for( int i = 0; ...", luku on ilmeisen turha, summan joudut alustamaan ennen for-lausetta ja osamaaran voisit for-lauseen sisällä.

Älä käytä printf:ää, vaan std::cout:ia

Käytä nimiavaruuksia, eli juurikin esim. std::cout << "hello"; Eikä cout << "hello";

Ja mitä kysymykseesi numeroiden konvertoinnista tulee, niin täällä on vastattu siihen:
http://www.parashift.com/c++-faq-lite/misc-technical-issues.html#faq-39.1

Vierailija
lusku

..tähän sitä kaipaisin, osamäärien loppunumeroiden poimimiseen.
Liittyy uskomattomaan numerotemppuun.

Eikös Rantsulla ole tässä tekijänoikeus puolellaan?
Siis saatko edes levittää ohjelmaasi kun se valmistuu?

Vierailija

Rupes kiinnostamaan tuo C#-kieli...

Pystyisikö joku pistämään yksinkertaisen helloworld-koodin pätkän joka käännettynä avautuisi uuteen ikkunaan ja siinä voisi myös olla joku nappi esimerkin vuoksi?

Haluaisin myös kuulla mitä muuta tällaisen aloittelija peelon kannattaisi ottaa huomioon. Olen tutustunut hieman koodaukseen aiemmin (en c-kieleen) mutta ainakin eilen kun kämmäilin niin tuli jotain ihme vrheilmoituksia, esim. WriteLine not found in Console (tai System) namespace tms. Pelkällä Writellä tosin toimi, ei hajuakaan miksi Niin ja jos löytyy jotain nettisivuvinkkejä, auttaisivat asiaa. Aattelin tosin hommata ihan kirjankin, mutta koska into on kova pitää päästä samantien testailemaan.

Toimiikohan nuo c-kieliset ohjelmat muuten suoraan esim. PIC:ssä?

Sorry jo etukäteen vaatimustaso *sorry*

Vierailija
Gravity

C:tä tuo ohjelma ei ole nähnytkään, mutta hyvin rumalta C++:lta se myös näyttää.

Tuosta lähtökohdasta C++:aa siellä oli vain cout.

Numeerisissa sovelluksissa esim. fysiikassa C tai Fortran95 ovat edelleen valtakieliä. Samoin yleiskäyttöisten numeeristen kirjastojen määrässä.

Vierailija

Kiitos kaikille vinkeistä!
C-kirjani on vuodelta -95 ja C++ opus vuodelta -96.
C++ ohjelma tuntuu hyväksyvän nuo C:n komennot.
Kieli kehittyy. Ja uusin tieto löytyy internetistä, mitenkäs muuten.

Gravity, minun C++ ohjelmani vaatii kyllä päätteen .h ,
eikä tunnista täällä mainittuja kirjastoja. On yli 10 v vanha versio.
Printf:ää käytin koska antaa 10 numeroa, cout vain6.

zxcv

En ihan ollut varma mitä olet tekemässä, mutta luultavasti olet ratkaisemassa ongelmaa, joka on jo ratkaistu.

Aivan oikein, mutta on hauska löytää ratkaisu ihan itse.
Tämä liittyy Rantsun esittämään uskomattomaan numerotemppuun.

Liittynyt: 05 Nov 2005

lusku

..tähän sitä kaipaisin, osamäärien loppunumeroiden poimimiseen.
Liittyy uskomattomaan numerotemppuun.




Eikös Rantsulla ole tässä tekijänoikeus puolellaan?
Siis saatko edes levittää ohjelmaasi kun se valmistuu?



Tämä ei ole sen luokan asia, että tekijänoikeuden loukkaus olisi kyseessä.
Jokainen saa vääntää sellaisia ohjelmia, mihin pystyy ja mitä huvittaa.
Jos Rantsu on tehnyt tuon pakatun ohjelman (.zip), olisi kiva nähdä se selkokielisenä versiona, ennen kääntämistä ja pakkaamista.

Heksu

Vai haetaanko tässä taas jotain ratkaisua johonkin koulun harjoitustehtävään? Lukujen muuttaminen merkkijonoiksi ja vastoinpäin on kyllä ihan peruskauraa kaikissa ohjelmointikielissä, joten tuota sprintf() -funktiota tuskin haettiin ellei kysyjä ole ihan totaalinen newbie?

En siis todellakaan tarkoita ettäkö newbieydessä olisi jotain pahaa, päinvastoin, kaikkihan meistä on joskus ollut.

Voisi olla koulutehtävä, mutta huvikseni vain väännän.
Voipi olla muitakin vähän newbie, jotka tykkää jostain yksinkertaisesta.
Ei oo häpee kysyä, jos ei itse hoksaa.

Vierailija
Lithium
Rupes kiinnostamaan tuo C#-kieli...

Pystyisikö joku pistämään yksinkertaisen helloworld-koodin pätkän joka käännettynä avautuisi uuteen ikkunaan ja siinä voisi myös olla joku nappi esimerkin vuoksi?

Haluaisin myös kuulla mitä muuta tällaisen aloittelija peelon kannattaisi ottaa huomioon. Olen tutustunut hieman koodaukseen aiemmin (en c-kieleen) mutta ainakin eilen kun kämmäilin niin tuli jotain ihme vrheilmoituksia, esim. WriteLine not found in Console (tai System) namespace tms. Pelkällä Writellä tosin toimi, ei hajuakaan miksi Niin ja jos löytyy jotain nettisivuvinkkejä, auttaisivat asiaa. Aattelin tosin hommata ihan kirjankin, mutta koska into on kova pitää päästä samantien testailemaan.




Javascript taitaa olla lähinnä se, mitä haet, paria sivua katselin:

http://www.widearea.co.uk/designer/mouseoverfr_1.html

http://koti.mbnet.fi/~merkka/js.html

Jos törmäät webbisivuun, jolla on tehty jotain kivaa, kopioi koodia sieltä.
Näytä --> Lähdekoodi
Java noudattaa melkolailla c-kielen rakennetta.
Hakusanalla javascript löydät webistä runsaasti opastusta.

Toimiikohan nuo c-kieliset ohjelmat muuten suoraan esim. PIC:ssä?

Mitäs tarkoitat? c tai c++ kielisen koodin kirjoitan ohjelmalla, joka väittää olevansa c++. Ohjelmassa on kääntäjä (compiler), joka tekee koodista .exe tiedoston, jonka voi ajaa millä hyvänsä tietokoneella.
Koodia voi tietenkin kirjoittaa vaikka writellä, mutta kääntämiseen tarvitaan ohjelma.

Vierailija
Toimiikohan nuo c-kieliset ohjelmat muuten suoraan esim. PIC:ssä?

PIC:t vaatii vaan omat kirjastot joita sitten käytetään. Eli jostain valmistajan manuaalista ne käytettävissä olevat kirjastot saadaa tietoon. (Itsellä ei ole kokemusta asiasta viellä, mutta näin olen asian käsittäny).


c tai c++ kielisen koodin kirjoitan ohjelmalla, joka väittää olevansa c++. Ohjelmassa on kääntäjä (compiler), joka tekee koodista .exe tiedoston, jonka voi ajaa millä hyvänsä tietokoneella.
Koodia voi tietenkin kirjoittaa vaikka writellä, mutta kääntämiseen tarvitaan ohjelma.

Jokaiselle järjestelmälle joutuu kääntämään uudestaan windows ja linux eroaa toisistaan aika paljon ja vaan standardin mukanen koodi toimii molemmissa ilman mitää ihmeempiä.
toki prosessorikin joutuu olemaan x86:n mukainen että toimii ilman uudelleen kääntämistä.

Vierailija

En tarkoittanut javascriptiä, itse asiassa on nyt tullut 4 päivää (tunteina ehkä 16) ihmeteltyä tuota c-sharppia ja eipä kovin vaikealta kieleltä vaikuta. Ehdin jo ruveta väsäämään laskinta sillä itselleni kun tuossa wintoosan omassa sattuu nappulat olemaan väärissä paikoissa Mitään suurempaa hyötyähän siitä ei tule olemaan, mutta itse tehty on kuitenkin aina itse tehty. Ja onhan mulla firefoxin pluginina f-laskin... tosin tähän mun versioon tulee erittäin hieno transparentti paneeli, wow.

Mitään oikeaa hyödyntämiskohdetta c#:lle en vielä ole keksinyt mutta meneehän se harrastusluontoisena ajanvietteenä ja kai siinä oppii c:tä samalla.

w00x
PIC:t vaatii vaan omat kirjastot joita sitten käytetään. Eli jostain valmistajan manuaalista ne käytettävissä olevat kirjastot saadaa tietoon. (Itsellä ei ole kokemusta asiasta viellä, mutta näin olen asian käsittäny).

Pitänee selvitellä.

Vierailija
Lithium

w00x
PIC:t vaatii vaan omat kirjastot joita sitten käytetään. Eli jostain valmistajan manuaalista ne käytettävissä olevat kirjastot saadaa tietoon. (Itsellä ei ole kokemusta asiasta viellä, mutta näin olen asian käsittäny).



Pitänee selvitellä.

Sen verran haluan tarkentaa että siis valmistajan manuskasta näkee mitä ne kirjastot pitää sisällään ja miten niitä käytetään, mutta pitää käyttää jotain IDE + kääntäjä jossa tulee mukana nuo kirjastot. Ei pitäs kirjotella kauheessa kiireessä tänne mitää.

Edit: ja nii sen verran viellä että se kääntäjä antaa sen koodin hexoina ja sitten se pitää kirjottaa sille piirille erillisellä "kirjottimella" missä se piiri on (en nyt muista oikeeta nimitystä) ja sen pitäs toimia silloin kun laittaa alkuperäiselle piirilevylle kiinni mihin se on suunniteltu.

Vierailija

Esim Päivi Hietasen kirjasta "C++ ja olio-ohjelmointi" löytyvät printf aliohjelman ohjausmerkit, esim juuri tuo lf, s, n yms

Itselläni on 3. laitos, 1. painos 2004 - siinä ed mainitut löytyvät sivulta 87.

Vierailija
kingofthelake
Esim Päivi Hietasen kirjasta "C++ ja olio-ohjelmointi" löytyvät printf aliohjelman ohjausmerkit, esim juuri tuo lf, s, n yms

Itselläni on 3. laitos, 1. painos 2004 - siinä ed mainitut löytyvät sivulta 87.


Sama tekijä. 1. painos, vuodelta 1996.
Periaatteessa ihan samaa asiaa, mutta kuitenkin kirjastot/kieli ovat muuttuneet sen verran, että en enää pääse kärryille uudempien versioiden neuvoilla. Pähkäilen edelleenkin tuota alkuperäistä ongelmaani. Eipä tuo haittaa...

Sivut

Uusimmat

Suosituimmat