{"id":233258,"date":"2023-02-09T11:45:00","date_gmt":"2023-02-09T08:45:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233258"},"modified":"2023-02-09T11:58:28","modified_gmt":"2023-02-09T08:58:28","slug":"funkcja-formatu-liczb-waluty-c","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/funkcja-formatu-liczb-waluty-c\/","title":{"rendered":"Funkcja formatu liczb waluty C++"},"content":{"rendered":"<blockquote>\n<p>Grosik za twoje my\u015bli<\/p>\n<p>Maj\u0105c dodatni\u0105 liczb\u0119 ca\u0142kowit\u0105 n reprezentuj\u0105c\u0105 ilo\u015b\u0107 posiadanych cent\u00f3w, zwr\u00f3\u0107 kwot\u0119 w sformatowanej walucie. Na przyk\u0142ad, bior\u0105c pod uwag\u0119 n = 123456, zwr\u00f3\u0107 \u201e1234,56&quot;.<\/p>\n<p>Przyk\u0142ad 1<br \/>\nWej\u015bcie<br \/>\nn = 132<br \/>\nWyj\u015bcie<br \/>\n\u201e1.32&#8243;<\/p>\n<p>Przyk\u0142ad 2<br \/>\nWej\u015bcie<br \/>\nn = 2<br \/>\nWyj\u015bcie<br \/>\n\u201e0,02&#8243;<\/p>\n<p>Przyk\u0142ad 3<br \/>\nWej\u015bcie<br \/>\nn = 100000000<br \/>\nWyj\u015bcie<br \/>\n\u201e1 000 000,00&#8243;<\/p>\n<\/blockquote>\n<h3>Sformatuj numer waluty za pomoc\u0105 C++<\/h3>\n<p>Chocia\u017c to zadanie mo\u017ce wydawa\u0107 si\u0119 proste w przypadku <a href=\"https:\/\/wordpress.mediadoma.com\/pl\/zastap-wbudowane-pole-wyszukiwania-wordpress-wyszukiwarka-google-customize-search\/\" title=\"wbudowanej\">wbudowanej<\/a> funkcji, takiej jak printf lub format String (w Pythonie), zaimplementowanie tego formatowania liczby\/waluty nie wydaje si\u0119 trywialnym zadaniem. Najpierw musieliby\u015bmy uzyska\u0107 cz\u0119\u015b\u0107 groszow\u0105 (u\u0142amek), obliczaj\u0105c dwie ostatnie cyfry (reszta przez 100). Nast\u0119pnie musimy zgrupowa\u0107 <a href=\"https:\/\/helloacm.com\/power-digit-sum-what-is-the-sum-of-the-digits-of-the-number-21000\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">pozosta\u0142e cyfry<\/a> w trzy.<\/p>\n<p>Potrzebujemy funkcji string pad, aby doda\u0107 wiod\u0105ce zera dla \u015brodkowych grup, a tak\u017ce grosz (do 2 cyfr, np. 0,01). Najwa\u017cniejsza grupa nie powinna dodawa\u0107 <a href=\"https:\/\/helloacm.com\/how-to-compute-the-number-complement-for-integers\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wiod\u0105cych zer.<\/a> Liczby s\u0105 oddzielone przecinkiem.<\/p>\n<pre><code>string solve(int n) {\n\u00a0 \u00a0 auto pad = [](int v, int d) {\n\u00a0 \u00a0 \u00a0 \u00a0 string ans = std::to_string(v);\n\u00a0 \u00a0 \u00a0 \u00a0 if (ans.size() &lt; d) {\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ans = string(d - (int)ans.size(), '0') + ans;\n\u00a0 \u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 \u00a0 \u00a0 return ans;\n\u00a0 \u00a0 };\n\u00a0 \u00a0 int cents = n % 100;\n\u00a0 \u00a0 n \/= 100;\n\u00a0 \u00a0 vector&lt;int&gt; groups;\n\u00a0 \u00a0 while (n &gt; 0) {\n\u00a0 \u00a0 \u00a0 \u00a0 groups.insert(begin(groups), n % 1000);\n\u00a0 \u00a0 \u00a0 \u00a0 n \/= 1000;\n\u00a0 \u00a0 }\n\u00a0 \u00a0 string ans = \"\";\n\u00a0 \u00a0 if (!groups.empty()) {\n\u00a0 \u00a0 \u00a0 \u00a0 ans += std::to_string(groups[0]);\n\u00a0 \u00a0 \u00a0 \u00a0 if (groups.size() &gt; 1) {\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ans += \",\";\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 for (int i = 1; i + 1 &lt; groups.size(); ++ i) {\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ans += pad(groups[i], 3) + \",\";\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 } \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ans += pad(groups.back(), 3);\n\u00a0 \u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 } else {\n\u00a0 \u00a0 \u00a0 \u00a0 ans += \"0\";\n\u00a0 \u00a0 }\n\u00a0 \u00a0 ans += \".\";\n\u00a0 \u00a0 ans += pad(cents, 2);\n\u00a0 \u00a0 return ans;\n}<\/code><\/pre>\n<p>Powy\u017csza funkcja C++ deklaruje lokaln\u0105 funkcj\u0119 <a href=\"https:\/\/helloacm.com\/how-to-define-lambda-functions-in-c11\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">lambda<\/a> przy u\u017cyciu sk\u0142adni funkcjonalnej. Nast\u0119pnie grupujemy cyfry w trzy i umieszczamy je w wektorze. Nast\u0119pnie wype\u0142niamy ka\u017cd\u0105 grup\u0119, w tym cz\u0119\u015b\u0107 pensow\u0105.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Funkcja formatu liczb waluty C++<\/p>\n","protected":false},"author":1,"featured_media":224867,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[1068,721,721,1068,1110,845,845],"tags":[1169],"class_list":["post-233258","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-komputer","category-deweloper","category-n-a","category-samouczki","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/233258","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=233258"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/233258\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/224867"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=233258"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=233258"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=233258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}