C: potrzebna pomoc

Wpis jest pisany na szybko i związany jest on jednym z śmiesznych n00b-programmer-wannabe programów jakie piszemy, by przyswoić sobie wiedzę dot. C.

Informacje o zadaniu znajdziecie na SPOJu, natomiast poniżej przedstawię swój pseudo-kod, jaki wytworzyłem.

#include "stdio.h"
#include "math.h"
 
#define PI 3.14159265
 
int main()
{
  double l;
 
  scanf("%lf", &l);
 
  double kat;
  kat = l*PI/180;
 
  printf("%.0f\n", floor(sin(kat)*10)+0.5);
  printf("%.0f\n", floor(cos(kat)*10)+0.5);
  printf("%.0f\n", floor(tan(kat)*10)+0.5);
  printf("%.0f\n", floor(1/tan(kat)*10)+0.5);
 
  return 0;
}


Na czym polega problem? Otóż wstawiam sobie dane z przykładu, 43 i 12 i otrzymuję odpowiednio wyniki:

  • dla 43:
    • 6
    • 8
    • 10
    • 10
  • dla 12:
    • 2
    • 10
    • 2
    • 48

Oczywiście prawidłowy wynik powinien wyglądać tak:

  • dla 43:
    • 7
    • 7
    • 9
    • 11
  • dla 12:
    • 2
    • 10
    • 2
    • 47

Nie mogę znaleźć błędu w kodzie, jednakże mam jakieś tam przypuszczenia. Byłbym wdzięczny za wskazanie błędu moim Czytelnikom. :)

Komentarze (2):

  1. neltam 24.10.09 | #

    Zrób tak:

    printf(“%.0f\n”, floor(sin(kat)*10+0.5));
    printf(“%.0f\n”, floor(cos(kat)*10+0.5));
    printf(“%.0f\n”, floor(tan(kat)*10+0.5));
    printf(“%.0f\n”, floor(1/tan(kat)*10+0.5));

  2. klisiu 24.10.09 | #

    @neltam: o, działa – dzięki bardzo! :)

Dodaj komentarz