parillinen pariton tehtävään apua

Olen ihan vasta alkaja, enkä keksi miten saisin aikaan sen jos syötetään numeroita luvun sijaan ettei ohjelma tulkitse sitä numeroiksi ja anna virheellistä vastausta parillinen/pariton.

Tehtävä:
Tee ohjelma, joka pyytää käyttäjältä kokonaisluvun ja tarkistaa, onko luku parillinen vai pariton. Jos syötetty luku on parillinen, tulostetaan näytölle "Luku 2 on parillinen.", jos luku on pariton, tulostetaan näytölle "Luku 1 on pariton.". Muuten tulosta virheilmoitus.


Yritykseni:

summa = luku % 2;

if (summa==0)
{
printf("Luku %d on parillinen \n", luku);
}
else if (summa==1)
{
printf("Luku %d on pariton \n",luku);
}
else
{
printf("Vastaus vain numeroin");
}
92114
Äänestä

Muut lukivat myös

Vastaukset 9

Vanhimmat

Ainakin ohjelmasta puuttuu syötteen lukeminen.

Eikös se ole joku scanf niminen funktio C:ssä?

Äänestä
  • Tuossa+tuo+alku,+ajattelin+että+on+niin+vakio+ettei+tarvi+sitä+laittaa+:)#include+<stdio.h>int+main(){ int+luku,+summa; printf("Anna+kokonaisluku:+");++++++++scanf("%d",+&luku);++++printf("\n");

    Äänestä

Taas tuo toimimaton moderointi poisti asiallisen viestin, no nyt tähän alkuun moderointia moittivaa sisältöä, niin katsotaan on viesti sellainen kuin pitääkin.

Paremman puutteessa tätäkin voi kokeilla, kuvassa värjätyt rivit on uusia:

https://s7.gifyu.com/images/nimeton.c.png

Onkohan tuossa nyt riittävästi tekstiä, ettei taas poistu. Tämänkin turhan poistelun voisi välttää kun laittaisivat tuohon tuon hyväksyntää osoittavan väkäsen tilalle huomautuksen, että kun viesti kirjoitetaan öiseen aikaan ja siihen sisältyy linkki kuvaan täytyy viestin olla niin ja niin pitkä. Nythän siinä kirjoittajalle annetaan vain hyväksyntää osoittava väkänen ja merkkien määrä. En usko näihin korjauksiin kenenkään vastuussa olevan pystyvän joten kiusa on ja pysyy.

Äänestä

Psykiatrian parillinen. Pankit

Äänestä

Luvut koostuvat numeroista ja viimeinen numero luvussa ratkaisee sen onko luku parillinen vai pariton tähän ei mitään ohjelmaa tarvitse kun sen näkee suoraan luvusta 1, 3, 5, 7, 9 ovat parittomia muut parillisia. Eli 2 jakaminen antaa parillisella aina kokonaisluvun ja parittomilla desimaaliluvun. Eli ongelman jota ei ole ratkaisu piilee siinä onko vastaus kokonaisluku eli tyyppiä int.

Äänestä
  • Näin kymmen-järjestelmässä. Mutta binäärijärjestelmässä se on vieläkin helpompi, mihin tuo alkuperäinen ratkaisu liittyy, joskin jakolaskun laskeminen on turhan raskas operaatio, kun riittäisi ottaa alin bitti.
    bit_0 = luku & 1;

    Äänestä

  • Anonyymi00007 kirjoitti:

    Näin kymmen-järjestelmässä. Mutta binäärijärjestelmässä se on vieläkin helpompi, mihin tuo alkuperäinen ratkaisu liittyy, joskin jakolaskun laskeminen on turhan raskas operaatio, kun riittäisi ottaa alin bitti.
    bit_0 = luku & 1;

    Positiivisilla kokonaisluvuilla noin. Tehtävässä mainittiin, että ohjelma "pyytää käyttäjältä kokonaisluvun", eikä ole poissuljettua, että luku olisi etumerkillinen. Näin aloittaja oli myös koodinsa kirjoittanut.

    Etumerkillisen kokonaisluvun kanssa on se ongelma, että standardi ei kerro onko luku kahden komplemettimuodossa vaiko jossain muussa muodossa. Siten alimman bitin testaaminen ei välttämättä toimi, mutta ainakaan se ei ole standardin mukaista.

    En tiedä yhtään nykyaikaista prosessoria, jossa etumerkilliset kokonaisluvut eivät olisi kahden komplemettimuodossa. Mutta edelleenkään standardi ei sellaista oleta.

    Etumerkittömän kokonaisluvun modulo-2 on periaatteessa jakolasku, mutta kääntäjä tuskin jättää tilaisuutta käyttämättä ja optimoi sen nollabitin testaukseksi. Resurssien käytön kannalta on siis sama kirjoittaako em. testin modulo-operaattilla vaiko maskaamalla.

    Aloittajan ongelmanratkaisusta puuttuu virheentunnistus kokonaan. Scanf ei estä syöttämästä numerotiedon sijaan kirjaimia tai mitä tahansa merkkejä, jotka jäävät lukematta annettuun muuttujaan. Vähintäinkin scanf-funktion paluuarvo on syytä testata ja mielellään pyytää syöte merkkijonona puskuriin, josta numerotieto voidaan luotettavasti lukea ja tunnistaa.

    Äänestä

#include <stdio.h>
int main() {
int num;
printf("Enter an integer: ");
scanf("%d", &num);

// true if num is perfectly divisible by 2
if(num % 2 == 0)
printf("%d is even.", num);
else
printf("%d is odd.", num);

return 0;
}

Joo 5 vuotta sitten oli viellä hankalaa nykyisin ei muuta kuin kuukle hakuun

Ja tietysti ääänglänniksi.
c odd even

Äänestä
  • Ja jos näitä joku lukee niin toi alkupaska "koodi" siis kopioidaan tekstitiedostoon
    Vaikka nimeltään vittu.c sitten tuo käännetään ohjelmaksi

    gcc vittu.c -o vittu

    Näin meillä sitten hieno ohjelma nimeltä vittu. Oliko kysyttävää?

    Äänestä

Ketjusta on poistettu 2 sääntöjenvastaista viestiä.

Kommentoi aloitusta


Anonyymi kirjoitti:

Olen ihan vasta alkaja, enkä keksi miten saisin aikaan sen jos syötetään numeroita luvun sijaan ettei ohjelma tulkitse sitä numeroiksi ja anna virheellistä vastausta parillinen/pariton.

Tehtävä:
Tee ohjelma, joka pyytää käyttäjältä kokonaisluvun ja tarkistaa, onko luku parillinen vai pariton. Jos syötetty luku on parillinen, tulostetaan näytölle "Luku 2 on parillinen.", jos luku on pariton, tulostetaan näytölle "Luku 1 on pariton.". Muuten tulosta virheilmoitus.


Yritykseni:

summa = luku % 2;

if (summa==0)
{
printf("Luku %d on parillinen \n", luku);
}
else if (summa==1)
{
printf("Luku %d on pariton \n",luku);
}
else
{
printf("Vastaus vain numeroin");
}

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