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;
}
#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;
}
Vastaukset 8
Vanhimmat
ota noi ylimääräset " merkit pois
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
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.
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;
}
saa
merkkikoodilla
255
...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;
joo kiitos kaikkille vastanneille. koitampa saada sen toimimaan