Miks tää ei toimi???

Jep, eli oheessa kirjoittamani koodi. Eli muuttujan pien pitäis olla pienin muuttujista kun koodirivit on suoritettu.

Kiitos jeesaajille!!

#include
int min(int luku1, int luku2, int luku3);

void main(void)
{
int x, y, z, pien;

printf("Anna kolme kokonaislukua, ");
printf("niin ilmoitan mik„ niist„ on pienin.\n");

printf("Eka luku: ");
scanf("%d", &x);
printf("Toka luku: ");
scanf("%d", &y);
printf("Kolmas luku: ");
scanf("%d", &z);

pien=min(x,y,z);
printf("Pienin luvuista on %d",pien);

}

int min(int luku1, int luku2, int luku3)
{
int minimi;
if(luku1
2395
Äänestä

Muut lukivat myös

Vastaukset 2

Vanhimmat

Koitas tätä. En nyt jaksa koittaa toimiiko mutta empä nyt muita virheitä löydä.

int min(int luku1, int luku2, int luku3)
{

int minimi=luku1;

if(luku2

Äänestä

Ensinnäkin void main on väärin C-kielessä. Sen pitää olla int main. Jos opaskirjasi sanoo muuta, se on muutenkin persiistä ja sillä voi heittää vesilintua ja hankkia paremman.

Toiseksi, vika on minimi-muuttujan käytössä. Esittelet sen:

int minimi;

Nyt sillä ei ole vielä määrättyä arvoa. Sen arvoksi voi sattua mitä vaan, mitä vain muistissa sattuu siinä kohdassa ennestään olemaan.

Paras tapa on laittaa se aluksi samaksi kuin luku1. Siten sillä on järkevä arvo ja sitä voi verrata sen jälkeen luku2:een ja luku3:een.

Jos laittasit int minimi=0;, niin voisi olla, että kaikki syötetyt luvut olisivat pienempiä, ja se väittäisi vaikkapa, että joukon

-3,-5,-11

minimi on 0. Sen sijaan joku vakio INT_MIN (mikähän se C.ssä olikaan?) voisi toimia. Helpompi on kuitenkin laittaa heti tuo luku1 minimiksi (aluksi arvauksena).

Väännäpä kääntäjästä varoitukset päälle, niin se varoittaa, että käytät alustamatonta muuttujaa (uninitialized variable). Esittely ei riitä, pitää myös antaa arvo ennen käyttöä.

Äänestä

Kommentoi aloitusta


En mä tajuu.... kirjoitti:

Jep, eli oheessa kirjoittamani koodi. Eli muuttujan pien pitäis olla pienin muuttujista kun koodirivit on suoritettu.

Kiitos jeesaajille!!

#include
int min(int luku1, int luku2, int luku3);

void main(void)
{
int x, y, z, pien;

printf("Anna kolme kokonaislukua, ");
printf("niin ilmoitan mik„ niist„ on pienin.\n");

printf("Eka luku: ");
scanf("%d", &x);
printf("Toka luku: ");
scanf("%d", &y);
printf("Kolmas luku: ");
scanf("%d", &z);

pien=min(x,y,z);
printf("Pienin luvuista on %d",pien);

}

int min(int luku1, int luku2, int luku3)
{
int minimi;
if(luku1

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu