Problem 'z dzieleniem' i zmiennymi.
Ostatnio zmodyfikowano 2009-01-13 07:43
malan Temat założony przez niniejszego użytkownika |
Problem 'z dzieleniem' i zmiennymi. » 2009-01-01 20:30:34 Witam. Zacząłem dopiero przygodę z C++. Postanowiłem poćwiczyć i napisać kilka prostych programów. Tylko mam mały problem może i błachy, ale nie mam pojęcia jak go rozwiązać. Chodzi o dzielenie... Znak " / " = dzielenie całkowite, np. 21 / 2 = 10 (tak podaje 'program') Napisałem taki sobie programik, aby poćwiczyć: #include <iostream> #include <conio.h> using namespace std; int main() { cout << "Program obliczajacy pole trojkata (ze wzoru 0.5a*h)." << endl << endl; int a; int b; cout << "Dlugosc podstawy wynosi: "; cin >> a; cout << "Dlugosc wysokosci wynosi: "; cin >> b; cout << "Pole trojkota wynosi: " <<( a / 2 ) * b << endl; getch(); return( 0 ); } Podstawiając za a 21, a za b 4 program podaje iż pole trójkąta wynosi 40 (gdyż 'a/2'= 10; 10*4= 40), a powinno być 42. ... i nie mam pojęcia co zrobić, ale dzielenia wykonywało się tu normalnie. Proszę o pomoc. |
|
lynx |
» 2009-01-01 20:35:18 Problem tkwi w tym że typ int zawiera tylko liczbę całkowitą. Aby program dzilił 21/2 i wyszło 10.5 musisz użyć typu obsługującego liczbę z przecinkiem. Takim typem jest np. double. Napisz: double a; zamiast: int a; Pozdrawiam, Piotrek. :) /edit: Jeżeli widzisz jakieś zmienne w których powinien być obsługiwany przecinek, to też zamień ich typ. |
|
DeBugger |
» 2009-01-01 20:40:16 Ja stosuję floata: float liczba; |
|
zori |
» 2009-01-01 20:40:20 Lub tez mozesz zastosuj zmienna typu "float" i tez bedzie wszystko ok. Bo tak jak "double" i "float" przyjmuja wartosci po przecinku co juz napisał piotrek. |
|
malan Temat założony przez niniejszego użytkownika |
» 2009-01-01 20:52:28 Teraz już będę wiedział. Poprawiłem i już działa - dzięki wielkie ;). Swoją drogą przydał by się opis tych typów w kursie, bo chyba takowego dokładnego opisu nie ma. pzdr. |
|
setless |
» 2009-01-01 21:20:59 O ile interesuje Cie sam wynik, a nie jego zapisanie do zmiennej, to można to zrobić i w ten sposób: cout << "Pole trojkota wynosi: " <<( a * 0.5 ) * b << endl;
Mnożymy przez liczbę zmiennoprzecinkową, wynik automatycznie będzie wypisywany jako typ ułamkowy, chyba że przypiszemy go do zmiennej typu całkowitego. W owym wypadku część ułamkowa liczby, po wykonaniu operacji arytmetycznych, zostanie utracona. |
|
pekfos |
» 2009-01-01 22:42:28 odnoszę wrażenie że wzór na pole trójkąta w c++ piszę się tak: a*b/2 |
|
zori |
» 2009-01-01 22:58:31 Wzór ja pole trójka można napisac na kilka sposobów np.: P = a * b / 2 P = a / 2 * b P = 0.5 * a * b P = 1 / 2 * a * b P = a * b * 0.5 itp Jak widac jest kilka sposobów i tak po podstawieniu każdego z tych wzorów wyjdzie jedno i to samo :P /edit Tak teraz patrze do kursu i sa opisanie zmienne tylko trzeba umiec czytać :P [url href="http://kursy.ddt.pl/?LessonId=4" nazwa="http://kursy.ddt.pl/?LessonId=4"/] |
|
« 1 » 2 3 |