[ proka_92 @ 30.11.2010. 12:20 ] @
Citat:
I i Ti su vanzemaljci sa svemirskim brodom koji radi na planetarnu energiju, tj. gorivo dobija tako što proždire planete na koje naiđe. Znajući koordinate planeta u ravni broda i putanju po kojoj se on kreće (brod se kreće po pravoj liniji), pomozite Iju i Tiju da saznaju hoće li imati dovoljno goriva za svoj put.

INPUT:
Prvi red standardnog ulaza sadrži realne brojeve m i b, koji određuju pravu, putanju broda, datu jednačinom prave y = mx + b. U sledećem redu nalazi se prirodan broj n (1 <= n <= 10<sup>6</sup>), broj planeta u ravni broda. U svakom od narednih n redova nalaze se po dva realna broja, pi i qi, koji predstavljaju koordinate i-te planete. Smatrati da je brod započeo kretanje u tački x = 0, i da se kreće po onoj polupravoj gde je x-koordinata pozitivna.

OUTPUT:
U prvi i jedini red standardnog izlaza ispisati broj planeta koje će brod proždrati tokom svog putešestvija.

Ulaz:
2.0 3.0
9
-4.0 -5.0
0.0 3.0
0.0 0.0
7.0 17.0
10.4 24.0
4.2 11.4
5.5 14.0
2.8 8.6
-1.0 1.0


Izlaz:
5

Objašnjenje:
Biće proždrane planete s rednim brojevima 2, 4, 6, 7 i 8.

Ja sam odradio ovako:
Code:
#include<stdio.h>
int main(void)
{
    double y,k,x,n,line;
    long i,j,cnt=0;
    scanf("%lf%lf",&k,&n);
    scanf("%ld",&i);
    for(j=0;j<i;j++)
    {
        scanf("%lf%lf",&x,&y);
        line=k*x+n;
        if((line==y)&&(x>=0))
            cnt++;
    }
    printf("%ld",cnt);
    return 0;
}

Samo dva test primera prolaze, za ostale mi je Wrong result.
[ pajaja @ 30.11.2010. 18:03 ] @
Pozdrav,

mozes li okaciti i ostale test primere koje si pokusao. Nisam uspeo da na prvi pogled pronadjem ikakvu gresku.
[ proka_92 @ 30.11.2010. 18:16 ] @
Nemam test primere, to je zadatak sa z-treninga... Ovo je link do zadatka: klik
[ Picsel @ 30.11.2010. 21:29 ] @
Aritmetika realnih brojeva nije precizna da mozes da koristis line==y
Zameni if sa
Code:
if (fabs(line-y)<0.00001 && x>=0)


[ proka_92 @ 30.11.2010. 22:32 ] @
Da, to je to, sada prolaze svi test primeri. Znao sam da je neki problem sa tacnoscu kod realnih brojeva, ali nisam znao kako da premostim to. Hvala na pomoci!