• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pole pewnego koła - błąd kompilacji mimo dobrego kodu

0 głosów
118 wizyt
pytanie zadane 9 października 2018 w SPOJ przez coderCpp93 Gaduła (3,990 p.)

Witam kolegów programistów.


Mam pewien problem z zadaniem z SPOJ'a pole koła. Mimo prawidłowych wyników statusem jest błąd kompilacji. Nie tylko w tym zadaniu to zauważyłem, ale w wszystkich, w których dołączam biblioteki inne oprócz iostream. Czyżby SPOJ byłby aż tak wybredny i kazał wymyślać własne funkcje? Nie wiem, czy moje twierdzenie jest słuszne, może to jednak problem z kodem? Oto kod:

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

float radius, lengthBetweenCenter, height, radiusOfCircle, fieldOfCircle;

int main() {
    cin >> radius >> lengthBetweenCenter;
    height = radius - lengthBetweenCenter / 2;

    radiusOfCircle = pow((2 * radius - height) * height, 0.5);
    fieldOfCircle = radiusOfCircle * radiusOfCircle * M_PI;

    cout<< setprecission(15) << (round(fieldOfCircle * 100) / 100) << endl;

    return 0;
}

 

Dziękuję za wszelkie odpowiedzi i porady.

3 odpowiedzi

0 głosów
odpowiedź 9 października 2018 przez niezalogowany

Kod nie może się kompilować, bo masz błąd w nazwie funkcji. Powinno być:

setprecision(15)

Do tego konstrukcja jest bez sensu. Jeżeli chcesz wypisać liczbę z dokładnością do 2 cyfr po przecinku musisz użyć std::fixed oprócz std::setprecision:

cout << fixed << setprecision(2) << fieldOfCircle << endl;

Właściwie w tym zadaniu nie powiedziane, że trzeba coś zaokrąglić - wystarczy, że wynik będzie poprawny do drugiego miejsca po przecinku. Musisz jeszcze nad tym popracować, bo rozwiązanie nie jest zbyt dobre.

0 głosów
odpowiedź 9 października 2018 przez Dominik Kostencki Użytkownik (650 p.)
możesz też zamienic float na double, sędzia powinien to przyjąć
–1 głos
odpowiedź 9 października 2018 przez Aisekai Nałogowiec (36,720 p.)

Nie pisze w C++ ale: 

Nadsyłane programy będą kompilowane i uruchamiane w automatycznym środowisku testowym pracującym pod systemem Linux

Czy math.h nie jest biblioteką tylko dla windowsa? Nie powinieneś używać cmath?

1
komentarz 9 października 2018 przez coderCpp93 Gaduła (3,990 p.)
Zmieniłem na cmath, lecz nie rozwiązało to problemu. W książce Symfonia C++, którą polecam, przeczytałem, iż biblioteki z rozszeżeniem .h są starymi bibliotekami z jezyka C. W C++ nadal można z nich korzystać. Nie zauważyłem tego wcześniej, że mogę wykorzystać twierdzenie Pitagorasa. Dzięki za sugestię.
1
komentarz 9 października 2018 przez niezalogowany
edycja 9 października 2018
Można z nich korzystać, ale są zdeprecjonowane i lepiej używać ich odpowiedników (<c*>). Nieprzenośne biblioteki, to np. conio.h, windows.h (nawet nie są w standardzie).

Podobne pytania

0 głosów
1 odpowiedź 94 wizyt
pytanie zadane 25 lutego w SPOJ przez matzar24 Nowicjusz (230 p.)
0 głosów
1 odpowiedź 252 wizyt
pytanie zadane 19 marca 2016 w C i C++ przez Adrian1999 Nałogowiec (33,280 p.)
0 głosów
1 odpowiedź 40 wizyt
Porady nie od parady
Zadając pytanie postaraj się o poprawną pisownię i czytelne formatowanie tekstu.Kompozycja

66,398 zapytań

113,152 odpowiedzi

239,540 komentarzy

46,660 pasjonatów

Przeglądających: 312
Pasjonatów: 14 Gości: 298

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...