mateuszs Temat założony przez niniejszego użytkownika |
Zadanie 1.10 Nie wyświetlają się liczby rzeczywiste » 2016-08-22 19:42:52 Cześć,
W przypadku napisania programu ze zmiennymi typu float program nie wyświetla mi liczb rzeczywistych. Przykładowy wynik po podaniu pierwszej liczby 4, a drugiej 5 to 1, bez przecinków. Jednocześnie - program nie wyświetla liczb rzeczywistych nawet wtedy gdy tworzę zmienną c, której przypisuję wartość dzielenia a/b i chcę ją wyświetlić poprzez printf(%.2f, c);. Używam programu Visual Studio 2015. Proszę o wskazówki dotyczące zmiany kodu tak, by wyświetlał liczby rzeczywiste.
Kod programu: #include "stdafx.h" #include <iostream>
using namespace std;
int main() { float a, b; cout << "Podaj a" << endl; cin >> a; cout << "Podaj b" << endl; cin >> b; cout << "a - b = " << a - b << endl; cout << "a + b = " << a + b << endl; cout << "a * b = " << a * b << endl; cout << "a % b = " << a % b << endl; getchar(); return 0; }
Pozdrawiam, |
|
kistel66 |
» 2016-08-22 19:51:33 Nie do końca rozumiem - dziwisz się, że różnicą 4 - 5 jest -1? Jak ma ci się tu wyświetlić przecinek? Jak chcesz przecinki, to wpisuj np. 4.4 i 5.5.
|
|
michal11 |
» 2016-08-22 20:06:35 Możesz na przykład dodać std::cout << std::fixed; . |
|
mateuszs Temat założony przez niniejszego użytkownika |
» 2016-08-22 22:00:17 kistel66, w przypadku wpisywania liczb całkowitych chodzi mi o wynik operacji dzielenia, wspomniałem o przykładzie z tworzeniem zmiennej c. michal11, próbowałem wcześniej, ale niestety nie pomaga. W przypadku dopisania do kodu cout << fixed; float c = 3, 66; cout << c; tuż po otwarciu klamry int main program po prostu przechodzi do linijki cout << "Podaj a" << endl; i zupełnie pomija wyświetlenie wartości zmiennej c.
Pozdrawiam,
|
|
michal11 |
» 2016-08-22 23:45:04 To wyświetla liczbę całkowitą (zapewne 66) ponieważ tak działa operator, (przecinek) do zapisywania liczb zmiennoprzecinkowych używa się kropki. Sprawdź taki kod: #include <iostream> using namespace std;
int main() { float a = 2.5, b = 3.3; cout << "a - b = " << a - b << endl; cout << "a + b = " << a + b << endl; cout << "a * b = " << a * b << endl; cout << "a / b = " << a / b << endl; getchar(); return 0; }
napisz jaki dostajesz output. Swoją droga dziwne, że twój kod się kompiluje, do operacji modulo na floatach powinno się używać fmod() |
|
mateuszs Temat założony przez niniejszego użytkownika |
» 2016-08-24 07:36:04 Dzięki za pomoc i wskazanie tych kropek, teraz jak najbardziej działa. Mam jednak jeszcze jedno pytanie - dlaczego pierwotnie wklejony przeze mnie program nie dzielił liczb zwracając wynik w liczbach rzeczywistych? |
|
michal11 |
» 2016-08-24 11:14:32 Ja nigdzie nie widzę dzielenia w twoim pierwszym programie. Jeżeli masz na myśli to działanie a % b to jest to modulo czyli zwrócenie reszty z dzielenia. |
|
mateuszs Temat założony przez niniejszego użytkownika |
» 2016-08-27 12:12:34 Możliwe, że usunąłem to wraz z usunięciem printf(%.2f, c); , o czym wspominałem wcześniej, albo faktycznie tego nie miałem. Tak czy tak - dzięki za pomoc, w przypadku, gdyby problem znowu się pojawił wrócę na forum z odpowiednim pytaniem.
Pozdrawiam |
|
« 1 » |