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

Zadanie 1.10 Nie wyświetlają się liczby rzeczywiste

Ostatnio zmodyfikowano 2016-08-27 12:12
Autor Wiadomość
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,
P-151033
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.
P-151034
michal11
» 2016-08-22 20:06:35
Możesz na przykład dodać
std::cout << std::fixed;
.
P-151035
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,
P-151036
michal11
» 2016-08-22 23:45:04
float c = 3, 66;

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:
C/C++
#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()
P-151040
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?
P-151060
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.
P-151061
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
P-151138
« 1 »
  Strona 1 z 1