Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

raz wychodzi wynik a raz nie

Ostatnio zmodyfikowano 2014-01-09 18:00
Autor Wiadomość
szirot
Temat założony przez niniejszego użytkownika
raz wychodzi wynik a raz nie
» 2014-01-09 10:41:03
Witam. Wydaje mi sie ze problem tkwi we wzorzena obliczanie kąta, wczoraj juz do pozna siedzialem probujac wybrnac z problemu i dzisiaj od rana jednak do tej pory nie moge podolac. Bardzo prosilbym o pomoc, gdyz wydaje mi sie ze jest tylko mala usterka w tym kodzie.

tresc zadnia :
Zadanie Trójkąt

Dany jest trójkąt prostokątny. Znamy długość przyprostokątnych. Oblicz długość przeciwprostokątnej (zaokrąglonej w górę do najbliższej liczby całkowitej) oraz wielkość najmniejszego z kątów w tym trójkącie, wyrażoną w stopniach, zaokrągloną do liczby całkowitej.

Wejście

Pierwsza linia wejścia składa się z jednej liczby całkowitej x (1<= x <= 1000) oznaczającej zestawów danych.
Każdy zestaw składa się z dwóch liczb naturalnych (od 1 do 1000) oznaczających długości przyprostokątnych w trójkącie.

Wyjście

Dla każdego zestawu należy wypisać dwie liczby całkowite, z których pierwsza oznacza zaokrągloną w górę długość przeciwprostokątnej, a druga to wielkość najmniejszego z kątów wyrażona w stopniach (po zaokrągleniu).

Przykład

Wejście:

3
2 2
3 4
9 8

Wyjście:

3 45
5 37
13 42

Mój kod :

#include <iostream>
#include <string>
#include <conio.h>
#include <math.h>
using namespace std;


int main()
{
int n;
cin >>n;
for(int i=0;i<n;i++)
{
    int a,b,oo;
    const float pi = 3.14;


    double s1,s2;
    double prze;
    cin >> a >> b;
    prze = a*a + b*b;

    prze = sqrt(prze);

    prze = ceil( prze );
    s1 = cos(a/prze);

    s1 = s1*180/pi;



    s1 = round( s1);




    s2 = cos(b/prze);

    s2 = s2*180/pi;


    s2 = round(s2);


    if(s1<s2)
        oo = s1;
        oo = s2;

cout << prze << " " << oo;
    }
    return 0;
}
P-101657
OSA_PL
» 2014-01-09 12:14:32
Funkcje sin, cos, tan jako argumenty przyjmują kąty, a nie stosunek boków. Do obliczania kątów służą funkcje odwrotne - acos, asin, atan, które przyjmują jako argument stosunek odpowiednich boków. Dodatkowo radziłbym Ci zaokrąglać długość przeciwprostokątnej po obliczeniu kątów, bo tak możesz mieć spore błędy obliczeniowe.

Swój kod daj w znaczniki
[cpp] ... [/cpp]

@alixir Usunę swoje, po co ma być dwa razy to samo.

P-101660
alixir
» 2014-01-09 12:26:19
C/C++
if( s1 < s2 )
     oo = s1;

oo = s2;

niezaleznie od warunku oo zawsze będzie równy s2

Hehe widzę że napisałem w czasie gdy OSA_PL odpowiadał :)
P-101661
szirot
Temat założony przez niniejszego użytkownika
» 2014-01-09 18:00:51
dzieki wielkie, program smiga.
P-101676
« 1 »
  Strona 1 z 1