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

Pole pewnego koła

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

#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;
}
 
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

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!

0

A coś konkretnie? Bo kod w takiej wersji:

#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.

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.

1

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

#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!!!

#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;
}
0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1