Program do obliczania pola i obwodu koła nie kompiluje się poprawnie

0

Witam, napisałem program który po wpisaniu promienia(pr)liczy obwód i pole koła , a potem to pokazuje z dokładnością do 3 miejsc po przecinku.Program się kompiluje poprawnie , ale po włączeni i wpisaniu jakiejś liczby (np 7.0) wywalał mi błąd (brak odpowiedzi)

#include <cstdio>
#include <math.h>

int main()
{
	float pr;
	scanf("%f", pr);
	float o;
	float p;
	p=M_PI*pow(pr,2);
	o=2*M_PI*pr;
	float precyzja=3.0;
	printf("%.PRECYZJAf\n",p);
	printf("%.PRECYZJAf\n",o);
} 

dodanie znacznika <code class="cpp"> - furious programming

2

To co piszesz to C, nie C++.

scanf("%f", pr);

powinno być:

scanf("%f", &pr);
    float precyzja=3.0;
    printf("%.PRECYZJAf\n",p);
    printf("%.PRECYZJAf\n",o);

To nie ma szans zadziałać, na początku sobie precyzję hardkoduj a zmienną zostaw na później.

    p=M_PI*pow(pr,2);
    o=2*M_PI*pr;

M_PI nie jest stałą standardową, staraj się unikać rozwiązań, które przywiązują Cię do konkretnego kompilatora.

1

Nie wiem, co Ty tam chciałeś wykombinować, ale prawidłowo powinno być tak:

#include <cstdio>
#include <cmath>

#define PI 3.14159265358979323846

using namespace std ;

int main()
{
    double pr ;
    double o ;
    double p ;
    
    scanf("%lf", &pr) ;
    
    p = PI * pow(pr, 2) ;
    o = 2 * PI * pr ;
    
    printf("%.3lf\n", p) ;
    printf("%.3lf\n", o) ;
}
4

z precyzją:

    int precyzja=3;
    printf("%.*f\n",precyzja,p);
    printf("%.*f\n",precyzja,o);
0

Dzięki za pomoc wszystko działa.

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