painoind.c

jormamietti 21.03.08 10:57

Ohjelma laskee ja kommentoi henkilön painoindeksin.

 Tekstiversio  Arvo: 3 (5 ääntä)  Äänestä: +  -
/*----------
painoind.c, suunnittelu ja ohjelmointi Jorma Miettinen.
20.03.2008 aloitettu.
21.03. 2008 valmis, testaamaton.
Ohjelma laskee ja kommentoi henkilön painoindeksin.
----------*/

#include <stdheaders.h>

float laskeind( float, float );
void kommentoi( float);
void varmista( float, float, float );

/*--- Silmukka ohjaa ohjelman kulun. ---*/
int main(void)
{
        textbackground( WHITE );
        textcolor( BLUE );
        clrscr();

        float paino, pitucm, pitum, indeksi;
        printf( " Ohjelma laskee ja kommentoi painoindeksisi. \n\n" );
        printf( " Anna painosi kg : " ); scanf( "%f", &paino );
        printf( " Anna pituutesi cm (0 lopettaa): " ); scanf( "%f", &pitucm );
    while( pitucm != 0 )
        {
                indeksi = laskeind( paino, pitucm );
                printf( "\n Painoindeksisi on %.2f ", indeksi );
                kommentoi( indeksi );
                varmista ( paino, pitucm, indeksi );
                printf( "\n Anna painosi kg : " ); scanf( "%f", &paino );
                printf( " Anna pituutesi cm (0 lopettaa): " ); scanf( "%f", &pitucm );
        }
        printf( "\n PAINA ENTER" );
        getch();
        return 0;
}

/*--- Laskee ja palauttaa painoindeksin. ---*/
float laskeind( float paino, float pitucm )
{
        float pitum;
        pitum = pitucm/100.0;
        return( paino/(pitum*pitum));
}

/*--- Valitsee ja tulostaa painoindeksin kommentin ---*/
void kommentoi( float indeksi )
{
        if( indeksi < 18.45 )
                printf( "Normaalia alhaisempi paino \n" );
    else if( indeksi < 24.95 )
          printf( "Normaali paino \n" );
        else if( indeksi < 29.95 )
              printf( "Merkittävä lihavuus \n" );
        else if( indeksi < 34.95 )
              printf( "Vaikea lihavuus \n" );
        else
              printf( "Sairaalloinen lihavuus \n" );
}

/*--- Varmistaa syötön oikeellisuuden ---*/
void varmista( float paino, float pitucm, float indeksi )
{
        if( indeksi<17.5 || indeksi>35.0 )
           printf( "\n Annoitko painosi kg %.1f ja pituutesi cm %.1f oikein ? \n", paino, pitucm );
}

/* Puuttuu virheen esim. merkin syötön käsittely. */

        /* End of file */


 

editoitu: 11:17 21.3.08
eis 11:17 21.3.08 
/* Puuttuu virheen esim. merkin syötön käsittely. */


Ihan nyt vaan muuten kommentoimatta, jos virheenkäsittely puuttuu, miksi pistää koodivinkiksi ensinkään?

Virheenkäsittely kun on ihan niitä olennaisimpia asioita, joista aloittelijoille kannattaa näyttää hyvää esimerkkiä.
jormamietti 12:26 21.3.08 
Olen harrastelija-ohjelmoija, en ole tullut oikein perehtyneeksi virheenkäsittelyyn. Ilmeisesti pitäisi. Itselleni toivoisin kommenttia esimerkiksi siitä, kannattaako näin pientä ohjelmaa pilkkoa moniin funktioihin vai olisiko selkeämpää kirjoittaa koko juttu main()-funktioon. Toinen asia on ohjelman kommentointi, riittäkö ylläoleva, muuttujien ja funktioidn nimet selvittävät omalta osaltaan asiaa. Kommentoi()-funktioon en ole oikein tyytyväinen, mutta en osannut kirjoittaa sellaista pätkää, joka lukisi samasta taulukosta indeksin raja-arvot ja vastaavat kommentit. JVM
muhis 13:29 21.3.08 
Joo itekkään en hallitse virhetarkastusta. D: Ohjelma voi minusta olla hyvä ilmankin virheentarkastusta. Mutta kun tekee jonkun ohjelman. Jota levitetään ja käytetään. Niin ehkä silloin se oli tarpeellinen. Mutta minusta ohjelmasi on hieno. Sait siis aikaan ehdottamasi projektin. Jatka samaa rataa.
editoitu: 14:51 21.3.08
ane 14:48 21.3.08 
Yleensä puhutaan ylipainosta eikä lihavuudesta. Ihmisen ei tarvitse olla lihava ollakseen ylipainoinen (tai päinvastoin).

Muuten ihan hyvä esimerkki siitä, mihin ja miten C-kieltä ei kannattaisi enää käyttää.
jormamietti 15:48 21.3.08 
Miksi ei ? JVM
muhis 18:44 21.3.08 
ane kirjoitti:
Yleensä puhutaan ylipainosta eikä lihavuudesta. Ihmisen ei tarvitse olla lihava ollakseen ylipainoinen (tai päinvastoin).

Muuten ihan hyvä esimerkki siitä, mihin ja miten C-kieltä ei kannattaisi enää käyttää.




Mitä välii käyttääkö sanaa lihavuus vai ylipaino.?
En tajuu pointiisi
ane 21:11 21.3.08 
Koska ihminen voi olla ylipainoinen, mutta ei lihava eli läski. Esimerkiksi kehonrakentajista monet ovat ylipainoisia, mutta ei heitä lihaviksikaan voi kutsua. Sen sijaan voi olla lihavakin vaikka ei olisi edes ylipainoinen.

Koodissa sen sijaan käytetään vanhentunutta c-kirjastoa (conio). Asian voisi hoitaa ilman värejäkin ja ohjelma toimisi joka alustalla. Toiseksi, funktio varmista on aika turha, kyseisen pätkän voi helposti korvata laittamalla itse funktion sisällön siihen kohtaan, jossa funktiota kutsutaan. Tässä tapauksessa ei ole järkevää tehdä funktio tuota tarkoitusta varten, koska sitä tarvitaan vain yhdessä paikassa ja kerran.

Ymmärrettävää tietenkin että kyseessä on ilmesesti ohjelmoinnin harjoittelua. Kommentillani "miten C-kieltä ei kannattaisi enää käyttää." tarkoitin sitä, että nykyään vastaanvanlaiset toimenpiteet on nopeampi, helpompi ja kätevämpi tehdä toisilla kielillä. C-kieli kun on kielenä itsessään vanhentumaan päin, sen suosio on jäänyt merkittävästi esim. Javan, C++:n tai jopa Visual Basicin (!) taakse. Tietysti matalan tason tehtävissä C-kieli loistaa edelleen, niin kuin on loistanut tähänkin asti. Tämä koodi onkin toiminnaltaan matalan tason vastakkaisessa pääsä.

Koodin ulkoasukin on vähän rempallaan. Kannattaisiko käyttää lyhyempiä sisennyksiä? Tekisi omasta mielestäni tekstistä paljon helpommin luettavaa.
jormamietti 08:48 22.3.08 
Sisennyksen lyhentäminen käy näköjään helposti editorin asetuksissa. C++ on ollut ehdolla opiskeltavaksi, samoin Java kotisivujen värkkäämiseen. Molelemmat vaan tuntuvat olevan 'vanhalle' kovia paloja, olen nyt 75+ v.
editoitu: 13:24 22.3.08
muhis 13:24 22.3.08 
muhis kirjoitti:
Tein testin uudella painoindeksi laskurillani. Joka on pitkä koodi joka laskee kaikkiin painoindekseihin. Kommentit oikein oikeaseen painoindeksin.
Tämä on hauska t-rexin painoindeksi
T rexin pituus 13 m
ja paino ainakin 4000 kg
-----------------------------------------------------------------------------------------------------------------------------------------------------
Painosi kg?
4000
Pituutesi? ilmoita näin 1,73 mikä tarkoittaa 1 metri 73 centtiä
13,1
Olet normaalipainoinen
Painoindeksisi on 23.308664996212343
-----------------------------------------------------------------------------------------------------------------------------------------------------
T-rex on normaalipainoinen. Lol

kiinnostavaa vai mitä

Hyvä ohjelma mutta minun ohjelmallani huvittelin näin koska siinä ei ole
/*--- Varmistaa syötön oikeellisuuden ---*/
ane 00:33 24.3.08 
Ei ne C++/Java sen kummoisempia opeteltavia ole kenellekään, oli kokemus tai ikä mikä tahansa :)
jormamietti 09:53 24.3.08 
Ne ovat vaan niin laajoja, ettei 75+ ikäisellä riitä aika. JVM