raz wychodzi wynik a raz nie
Ostatnio zmodyfikowano 2014-01-09 18:00
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; } |
|
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. |
|
alixir |
» 2014-01-09 12:26:19 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ł :) |
|
szirot Temat założony przez niniejszego użytkownika |
» 2014-01-09 18:00:51 dzieki wielkie, program smiga. |
|
« 1 » |