Pole pewnego koła

Pole pewnego koła

Wątek zablokowany 2018-10-23 16:46 przez Patryk27.

GA
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 6 lat
  • Postów:125
0

Witam robię zadanie ze spoja: http://pl.spoj.com/problems/ETI06F1/
W moim rozwiązaniu nie widzę błędu, ale spoj mi go nie akceptuje
Proszę o pomoc

Kopiuj
#include <iostream>
#include <math.h>
#include <iomanip>
#include <sstream>
using namespace std;
float r, d, r_2;
int main()
{
  for(int i=0; i<20; i++)
  {
  cout<<"Wej\230cie:"<<endl;
    cin >>r;
    cin>>d;
    r_2=r*r-d*d/4;
  long double pole=3.141592654*r_2;
    int pole_2=round(pole);
ostringstream ss;
ss << pole_2;
string pole_3 = ss.str();
int dlugosc=pole_3.length();
    cout<<"Wyj\230cie:"<<endl<<setprecision(dlugosc+2)<<pole<<endl;
    }
    return 0;
}
 
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Ty tak serio? Nie masz wypisywać żadnego "wejście" ani samego wejścia. To jest tylko dla ciebie w tym zadaniu żebyś miał przykładowe dane. Masz wypisywać TYLKO wyniki.
Masz jak byk napisane Należy wypisać pojedynczą liczbę zmiennoprzecinkową S oznaczającą pole koła. Dopuszczalny błąd wyniku wynosi 0.01. Wydzisz tam gdzieś ze masz wypisywać "wejście" albo "wyjście"? :D


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
GA
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 6 lat
  • Postów:125
0

W przykładzie było wypisywane to, dlatego może się podkusiłem.
Mimo skasowanie tych napisów problem cały czas ten sam.
Pomocy!

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

A coś konkretnie? Bo kod w takiej wersji:

Kopiuj
#include <iostream>
#include <cmath>
#include <iomanip>
#include <sstream>
using namespace std;
float r, d, r_2;
int main()
{
  for(int i=0; i<20; i++)
  {
    cin >>r;
    cin>>d;
    r_2=r*r-d*d/4;
    long double pole=3.141592654*r_2;
    int pole_2=round(pole);
    ostringstream ss;
    ss << pole_2;
    string pole_3 = ss.str();
    int dlugosc=pole_3.length();
    cout<<setprecision(dlugosc+2)<<pole<<endl;
  }
    return 0;
}

powinien być ok o ile algorytm jest poprawny.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
xfin
  • Rejestracja:prawie 12 lat
  • Ostatnio:10 miesięcy
  • Lokalizacja:Genewa
  • Postów:597
0

IMO ta pętla może nie być potrzebna. Na wejściu są zawsze dwie liczby, a spoj tylko informuje o 20 testach. I się zawiesza oczekując na kolejne dane w wyniku czego przekracza czas.

edytowany 1x, ostatnio: xfin
Heheczek
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 5 lat
  • Postów:148
1

Usuń tą pętle i wtedy zadziała.

Kopiuj
#include <iostream>
#include <cmath>
#include <iomanip>
#include <sstream>
using namespace std;
float r, d, r_2;

int main()
{
    cin >>r;
    cin>>d;
    r_2=r*r-d*d/4;
    long double pole=3.141592654*r_2;
    int pole_2=round(pole);
    ostringstream ss;
    ss << pole_2;
    string pole_3 = ss.str();
    int dlugosc=pole_3.length();
    cout<<setprecision(dlugosc+2)<<pole<<endl;
  
    return 0;
}

EDIT: 100% poprawnych odpowiedzi!!!

Kopiuj
#include <iostream>
#include <cmath>
#include <iomanip>

using namespace std;
double r, d, P;

int main()
{
    cin >>r;
    cin>>d;
    P=(pow(r,2)-pow(d,2)/4.0)*M_PI;
	
    printf("%.2f",P);
  
    return 0;
}
edytowany 1x, ostatnio: Heheczek
GA
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 6 lat
  • Postów:125
0

Jesteście wielcy ludzie!!
Dzięki wam, już któryś raz na tym forum dostaje super rady i odpowiedzi. Dzięki!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.