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

Program do obliczania pola i obwodu koła nie kompiluje się poprawnie
UN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
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)

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

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
2

To co piszesz to C, nie C++.

Kopiuj
scanf("%f", pr);

powinno być:

Kopiuj
scanf("%f", &pr);
Kopiuj
    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.

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

Lucas Darkstorm
  • Rejestracja: dni
  • Ostatnio: dni
1

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

Kopiuj
#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) ;
}
Johnny_Bit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kielce
4

z precyzją:

Kopiuj
    int precyzja=3;
    printf("%.*f\n",precyzja,p);
    printf("%.*f\n",precyzja,o);
UN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Dzięki za pomoc wszystko działa.

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.