jotain vikana

opettelen c ohjelmointia ja eka ohjelma olisi melkein valmis mutta dev-C ohjelma valittaa että rivilla 12 on vika ja en itse keksi syytä joten ajattelin että kaipa joku viisaampi voisi auttaa mitä toissa on vikana en itse ole keksinyt sitä

#include

int main(int argc, char *argv[])
{

int luku, luku2;
Printf("anna kaksi lukua: ");
scanf("%d %d", &luku, &luku2);

if "(luku < 0) || (luku > 100) || (luku2 < 0) || (luku2 > 100);

"printf("luvut eivat saa olla negatiivisiä tai yli sata. \n"); /* tällä rivillä on vikaa */
"printf("Anna luku ja luku2 uudestan. ");
scanf("%d %d", &luku, &luku2);

else (x >= 0) && (x < 10)

int luku3;
luku3 = &luku - &luku2;
"printf(" luku3 on %d \n");

return 0;
}
8665
Äänestä

Muut lukivat myös

Vastaukset 8

Vanhimmat

ota noi ylimääräset " merkit pois

Äänestä
  • siis tarkotat varmaan noita " merkkejä jos niitä ei oo tossa printf niin se valittaa sen jälkeen että virheitä löytyy 8:sta kohdasta. sori unohdin mainita että se antaa
    In function `main':
    12: parse error before string constant

    tollaset virhe ilmotukset siis tossa rivillä 12 on jotain ohjelmasta poikeavaa. mutta jatkan koittamista

    Äänestä

  • harjottelee kirjoitti:

    siis tarkotat varmaan noita " merkkejä jos niitä ei oo tossa printf niin se valittaa sen jälkeen että virheitä löytyy 8:sta kohdasta. sori unohdin mainita että se antaa
    In function `main':
    12: parse error before string constant

    tollaset virhe ilmotukset siis tossa rivillä 12 on jotain ohjelmasta poikeavaa. mutta jatkan koittamista

    poistin noi kolme turhaa merkkiä ja nyt tuli kaks virhe ilmotusta että rivillä 10 on virheita ja rivillä 20 ja rivi 10 on toi

    if "(luku < 0) || (luku > 100) || (luku2 < 0) || (luku2 > 100);

    tolle 10 rivill virhe ilmotus on 10 untitled3.c
    possible real start of unterminated constant
    tollanen

    ja rivi 20 on

    printf(" luku3 on %d \n");

    virhe ilmotus riville 20 on tämän näkönen
    20 untitled3.c
    unterminated string or character constant

    Äänestä

En ole moneen vuoteen ohjelmonut C:llä, mutta vanhasta muistista arvailisin...

if "(luku < 0) || (luku > 100) || (luku2 < 0) || (luku2 > 100);

Vertailu ei tee mitään, koska olet päättänyt rivin ";" -merkillä. Sun pitää laittaa {} -sulkujen sisään suoritettava lohko. Lainausmerkki pois if sanan jälkeen.

else (x >= 0) && (x < 10)

Olet käyttänyt esittelemätöntä muuttujaa "x". Eikä kyseinen rivi muutenkaan tee mitään.

luku3 = &luku - &luku2;

Laskutoimituksissa ei tarvita "&" -merkkejä muuttujien edessä.

Ohjelman rakennetta kannattaa muuttaa, ettei tarvi kahdessa eri kohdassa kysyä lukuja. Voit käyttää esim do-while rakennetta.

Äänestä

Näköjään sisennykset häviää kun postaa viestin

#include

int main()
{
int vastaus, luku1, luku2;
int uusinta = 1;

while (uusinta)
{
printf("Anna kaksi lukua: ");
scanf("%d %d", &luku1, &luku2);

if (luku1 < 0 || luku1 > 100 || luku2 < 0 || luku2 > 100)
printf("Luvut eivat saa olla negatiivisiä tai yli sata.\n");

else
{
vastaus = luku1 - luku2;
printf("Vastaus on %d",vastaus);
uusinta = 0;
}
}
return 0;
}

Äänestä
  • saa
      merkkikoodilla
        255

    Äänestä

...että scanf paluuarvo kantsii tarkistaa:

if (scanf("%d %d", &luku1, &luku2) != 2)
{
printf("Koita nyt vain syöttää ne kaksi lukua\n");

}

eli, mikäli käyttäjä eo syötäkkään kahta lukua vaan vaikkapa vai yhden toiseen muuttujaan jää arvo, joka sillä oli ennen scanfia. Siitä tulee mieleen toinen kauneusvirhe eli muuttujien alustus...

int luku = -1;
int luku2 = -1;

Äänestä
  • joo kiitos kaikkille vastanneille. koitampa saada sen toimimaan

    Äänestä

Kommentoi aloitusta


harjottelee kirjoitti:

opettelen c ohjelmointia ja eka ohjelma olisi melkein valmis mutta dev-C ohjelma valittaa että rivilla 12 on vika ja en itse keksi syytä joten ajattelin että kaipa joku viisaampi voisi auttaa mitä toissa on vikana en itse ole keksinyt sitä

#include

int main(int argc, char *argv[])
{

int luku, luku2;
Printf("anna kaksi lukua: ");
scanf("%d %d", &luku, &luku2);

if "(luku < 0) || (luku > 100) || (luku2 < 0) || (luku2 > 100);

"printf("luvut eivat saa olla negatiivisiä tai yli sata. \n"); /* tällä rivillä on vikaa */
"printf("Anna luku ja luku2 uudestan. ");
scanf("%d %d", &luku, &luku2);

else (x >= 0) && (x < 10)

int luku3;
luku3 = &luku - &luku2;
"printf(" luku3 on %d \n");

return 0;
}

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