Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Ongelma Viopen C-ohjelmassa

Sivun loppuun

Plasmidi [23.09.2007 18:15:11]

#

Tehtävänanto on tälläinen:

Tee ohjelma, joka kysyy ensin käyttäjän sukupuolen ja tämän jälkeen iän. Lopuksi ohjelma tulostaa jonkin lausahduksen seuraavan ohjeen mukaisesti: Mies 0-55 vuotta: "Olet mies parhaassa iässä!", Mies 56-100 vuotta: "Olet viisas mies!", Nainen 0-55 vuotta: "Olet neito kauneimmillaan!", Nainen 56-100 vuotta: "Näytät nuorelta ikäiseksesi!", Muuten "Ohjelmassa tapahtunut virhe!" Ikä käsitellään kokonaisluku muuttujana ja sukupuoli merkkimuuttujana (m/n). Isoja kirjaimia ei tarvitse huomioida.

Olen koodannut tälläisen ohjelman:

#include <stdio.h>

int main() {
char n,m;
int ika;

printf("Oletko mies vai nainen (m/n)?");
scanf("%c",&m);
scanf("%c",&n);

printf("Anna ikäsi:");
scanf("%i",&ika);

if (m && ika >= 0 && ika <= 55)
{
printf("Olet mies parhaassa iässä!");
}
else if (m && ika >=56 && ika <= 100)
{
printf("Olet viisas mies!");
}
else if (n && ika >=0 && ika <=55)
{
printf("Olet neito kauneimmillaan!");
}
else if (n && ika >=56 && ika <=100)
{
printf("Näytät nuorelta ikäiseksesi!");
}
else
{
printf("Ohjelmassa tapahtunut virhe!");
}
}

Kun Viope C tarkastaa tehtävää se toimii ongelmitta mies 0-55v ja 56-100v kohdissa mutta sitten kun pitäisi tulla teksti "Olet neito kauneimmillaan!" niin tulee teksti "Olet mies parhaassa iässä!" Voisiko joku auttaa tässä ongelmassa?

(Mod. Edit. Kooditagit.)

Metabolix [23.09.2007 18:22:14]

#

Kuulepa nyt, siellä VIOPEssa on niin seikkaperäiset ohjeet, kuin vain olla tarvitsee.

Mieti vielä uudemman kerran, mitä mahtavat tehdä seuraavat rivit:

scanf("%c",&m);
scanf("%c",&n);

if (m && ...

Jospa kuitenkin lukisit vain yhden merkin ja tarkistaisit, onko se 'm' vai 'n'.

Plasmidi [23.09.2007 19:04:51]

#

En ymmärtänyt vastaustasi :D

hunajavohveli [23.09.2007 19:42:56]

#

Sinulla on tuossa kaksi scanfia. Tarvitset vain yhden, jolla luetaan yhteen muuttujaan joko m tai n.

Antti Laaksonen [23.09.2007 19:49:02]

#

Ja muuttujan nimeksi sopinee paremmin esim. sukupuoli. Sitten if-lauseessa vertailu tapahtuu tyyliin "sukupuoli == 'm'".

Tässä on hieman toimivia ohjelman osia:

scanf("%c", &sukupuoli);

if (sukupuoli == 'm' &&

Plasmidi [23.09.2007 21:36:21]

#

Ei hemmetti sentään kun en saa millään toimimaan tätä ohjelmaa. Aina tulee "Olet mies parhaassa iässä" 0-56v naisen tekstin kohdalla. Alkaa potuttaa pikkuhiljaa... :D

Antti Laaksonen [23.09.2007 21:39:55]

#

Millainen ohjelmasi lähdekoodi on nykyään?

Plasmidi [23.09.2007 21:53:06]

#

Joo ei mitään enää sinne piti laittaa joku getchar toiminto nyt alko pelaa hemmetti kun siinä oli että luvun 4 teoriaosassa on esimerkki tutkailin sitä tossa joku tunnin varmaa mutta siin oli virhe oli luvun 5 teoriaosassa just tommonen esimerkki, mut kiitti avusta kaikille.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta