• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Klasa 'konwertujaca'

Object Storage Arubacloud
0 głosów
199 wizyt
pytanie zadane 17 marca 2020 w C i C++ przez Aleksandra01 Użytkownik (530 p.)
w jaki sposób mogę zapewnić narzedzie tej linijce kodu
eng ma być klasą konwertującą double na float :

const float numEng = ((eng)2.4);
komentarz 17 marca 2020 przez Aleksandra01 Użytkownik (530 p.)
wywołanie dla polskiego zapisu:

const float numPol = ((pol)3,4)
1
komentarz 17 marca 2020 przez tkz Nałogowiec (42,000 p.)

https://stackoverflow.com/questions/15220861/how-can-i-set-the-decimal-separator-to-be-a-comma 

W samym kodzie nie możesz użyć "," przy liczbach zmiennoprzecinkowych, po prostu język na to nie pozwoli. 

komentarz 17 marca 2020 przez Aleksandra01 Użytkownik (530 p.)
tych dwóch linijek nie mogę zmieniać, muszę resztę dopasować tak,żeby to działało
komentarz 17 marca 2020 przez tkz Nałogowiec (42,000 p.)
Po linii najmniejszego oporu możesz zrobić statyczną metodę przyjmującą dwie argumenty, liczbę przed przecinkiem i po przecinku, następnie je "łączymy" i zwracamy.
komentarz 17 marca 2020 przez jankustosz1 Nałogowiec (35,880 p.)

@Aleksandra01, na górze programu wpisz 

#define eng float

A klasy są teraz zamknięte z powodu koronawirusa. 

3 odpowiedzi

0 głosów
odpowiedź 17 marca 2020 przez dawid2002 Mądrala (5,190 p.)
Skoro chcesz za pomocą jakieś klasy przekształcić wartość double na float, to najprościej byłoby zrobić w tej klasie "eng" statyczną metodę, która jako parametr przyjmuje wartość double, a zwraca tą samą wartość ale w postaci float'a. Wywołujesz tą statyczną metodę z odpowiednim argumentem i ona zwraca float'a twojej zmiennej.

Jeśli tobie te rozwiązanie nie odpowiada i chcesz aby twoja podana linijka kodu działała to możesz w tej klasie stworzyć konstruktor z jednym parametrem typu double i zapisać tę wartość w polu tej klasy. Dzięki temu operacja rzutowania z double na obiekt klasy "eng" się powiedzie. Taki konstruktor jest nazywany konstruktorem konwertującym (poczytaj sobie o nim to zrozumiesz jak to wszystko działa). Następnie stwórz w klasie operator konwersji na typ float (również jak nie znasz operatora konwersji to też o nim poczytaj). Który przekonwertuje podaną wartość double, zapisaną w polu klasy na float.

PS.

W C++ stosujemy raczej static_cast zamiast rzutowania w stylu C
komentarz 17 marca 2020 przez tkz Nałogowiec (42,000 p.)

Należy zdefiniować klasę pozwalającą na używanie w kodzie ang. i pol. zapisu liczb dziesietnych (polski zapis to druga część której tu nie podaje) tzn. przy użyciu kropki (lub przecinka)

0 głosów
odpowiedź 17 marca 2020 przez jankustosz1 Nałogowiec (35,880 p.)

Zażartowałem sobie w komentarzu, ale całkiem możliwe, że chodziło o co innego niż klasę.

Obstawiam, że chodziło o to:

typedef float eng;

 

komentarz 17 marca 2020 przez tkz Nałogowiec (42,000 p.)
Spróbuj wywołać to dla liczby "3,4", pamiętaj o przecinku.
komentarz 17 marca 2020 przez jankustosz1 Nałogowiec (35,880 p.)
Czemu przecinek? Przecież autor pytania użył kropki
komentarz 17 marca 2020 przez jankustosz1 Nałogowiec (35,880 p.)
A dobra, teraz doczytałem komentarze.
0 głosów
odpowiedź 17 marca 2020 przez j23 Mędrzec (194,920 p.)
edycja 17 marca 2020 przez j23
struct pol {
    int a_, b_;    

    pol(int a) 
    : a_(a) {}

    operator float () const { return /* tu pomyśl */ ; }
    friend pol operator, (pol obj, int b) { obj.b_ = b; return obj; }
};

 

Podobne pytania

0 głosów
0 odpowiedzi 99 wizyt
pytanie zadane 5 stycznia 2023 w C i C++ przez dextermorgan Nowicjusz (120 p.)
0 głosów
1 odpowiedź 256 wizyt
pytanie zadane 27 listopada 2022 w C i C++ przez benny13 Obywatel (1,150 p.)
0 głosów
1 odpowiedź 205 wizyt
pytanie zadane 8 stycznia 2021 w C i C++ przez Eriss69 Gaduła (4,470 p.)

92,556 zapytań

141,404 odpowiedzi

319,561 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...