Błąd przy ustawianiu pola i obwodu koła jako zmienne

0

Napisałem program liczący obwód i pole koła :

#include <iostream>

using namespace std;

int main()
{
    float r;
    float pi=3.14;


    cout << "Program liczacy pole i obwod kola." << endl;
    cout << "Podaj promien kola:" << endl;
    cin >> r;
    cout << "Pole kola jest rowne:" << pi*r*r << endl;
    cout << "Obwod kola jest rowny:" << 2*pi*r << endl;
    return 0;
}

Ten program działa. Problem natomiast występuje, kiedy próbuję jako zmienne ustawić też pole i obwód koła:

#include <iostream>

using namespace std;

int main()
{
    float r;
    float pi=3.14;
    float p=pi*r*r;
    float o=2*pi*r;


    cout << "Program liczacy pole i obwod kola." << endl;
    cout << "Podaj promien kola:" << endl;
    cin >> r;
    cout << "Pole kola jest rowne:" << p << endl;
    cout << "Obwod kola jest rowny:" << o << endl;
    return 0;
}

Wtedy pole = inf a obwód jakaś też liczba z kosmosu...
Mógłby mi ktoś powiedzieć dlaczemu tak się dzieje?
Piszę to w Code Blocks, jakby to miało znaczenie.

1

Kłopot w tym że r w momencie wykonywania obliczeń (p=pirr) jest zerem lub inną liczbą ustalaną przez kompilator. Zmienną r wypełniasz dopiero po wprowadzeniu jej z klawiatury. Więc kod powinien wyglądać tak:

 #include <iostream>
 
using namespace std;
 
int main()
{
    float r;
    float pi=3.14;
    cout << "Program liczacy pole i obwod kola." << endl;
    cout << "Podaj promien kola:" << endl;
    cin >> r;
    float p=pi*r*r;
    float o=2*pi*r;
    cout << "Pole kola jest rowne:" << p << endl;
    cout << "Obwod kola jest rowny:" << o << endl;
    return 0;
}
0

Dzięki wielkie.

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