Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dziwny wynik prostego dzialania w C++

Ostatnio zmodyfikowano 2015-11-21 00:14
Autor Wiadomość
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;
}
P-140471
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.
P-140473
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;
}
P-140476
carlosmay
» 2015-11-21 00:14:54
A w tym kodzie co jest nie tak?
 ogólnie matematyka.
C/C++
v =( 4 / 3.0 ) * M_PI * pow( r, 3 ); // zapis 3.0 sugeruje, aby wynik dzielenia był liczbą typu doduble
 
P-140478
« 1 »
  Strona 1 z 1