Dziwny wynik prostego dzialania w C++
Ostatnio zmodyfikowano 2015-11-21 00:14
pawi125 Temat założony przez niniejszego użytkownika |
Dziwny wynik prostego dzialania w C++ » 2015-11-20 22:30:31 Witam, jestem na początku swojej przygody z C++ i właśnie tworze proste programy. Jeden z nich dotyczył obliczenia pola trójkąta z wprowadzonych zmiennych. Użyłem do sprawdzenia poprawności kodu dwóch programów (Code Blocks i Visual Studio 2015). Problem polega na tym że dla wprowadzonych wartości a=1 i h=2 według programu pole jest równe 0. Natomiast dla wiekszych liczb np a=10 i h=20 liczy już poprawnie matematycznie. W czym tkwi problem?
Kod programu
#include <iostream>
using namespace std;
int a, h; float p;
int main() { cout << "Wprowadz dlugosc boku a oraz wysokosc :" << endl; cin >> a>> h; p = a/2 * h; cout << "Pole jest rowne :" << p << endl;
return 0; }
|
|
danek121 |
» 2015-11-20 22:35:38 Zmienne int to liczby całkowite tak więc jeśli dzielisz 1/2 w tym wypadku to wynik będzie zero. Wniosek wrzuć a jako float i po sprawie.
#edit3 I najlepiej jakbyś h też jako typ zmiennej float jeśli będziesz chciał dawać liczby z przecinkiem. |
|
pawi125 Temat założony przez niniejszego użytkownika |
inne zadanie » 2015-11-20 23:43:23 A w tym kodzie co jest nie tak? Polecenie: Oblicz objętość kuli z wprowadzonego r. Wynik wychodzi 0...
#include <iostream> #define _USE_MATH_DEFINES #include <math.h>
using namespace std;
float r,v;
int main() { cout << "Wprowadz promien :" << endl; cin >> r; v = 3 / 4 * M_PI*pow(r, 3); cout << "Objetosc = " << v << endl;
return 0; } |
|
carlosmay |
» 2015-11-21 00:14:54 A w tym kodzie co jest nie tak? |
ogólnie matematyka. v =( 4 / 3.0 ) * M_PI * pow( r, 3 );
|
|
« 1 » |