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

Program nie pokazuje poprawnego wyniku (C++)

Object Storage Arubacloud
0 głosów
639 wizyt
pytanie zadane 2 września 2017 w C i C++ przez Huberti Gaduła (4,500 p.)

Witam, chcę stworzyć program, który obliczy procent, jaki populacja Polski stanowi w populacji świata, jednak mam pewien problem. Program nie pokazuje poprawnego wyniku (daje wynik 0%), dlaczego?

Kod:

#include <iostream>

using namespace std;

int main()
{
    long long swiat = 6898758899;
    long long kraj = 38482919;

    long long x = kraj*100;
    long double populacja = x/swiat;

    cout<<"Populacja Polski stanowi "<<populacja<<"% populacji swiata."<<endl;
    return 0;
}

 

3 odpowiedzi

+1 głos
odpowiedź 2 września 2017 przez niezalogowany
 
Najlepsza

Zmienna typu long long jest całkowitoliczbowa. Dzielenie na typach całkowitoliczbowych wygląda tak:
1/2 = 0 // ucinanie części ułamkowej
Masz dwie możliwości, albo zapisać populację świata jako liczbę zmiennoprzecinkową, albo co jest lepszą opcją rzutować zmienną long long na long double:

#include <iostream>
 
using namespace std;
 
int main()
{
    long long swiat = 6898758899;
    long long kraj = 38482919;
 
    long long x = kraj*100;
    long double populacja = long double(x)/swiat; 
 
    cout<<"Populacja Polski stanowi "<<populacja<<"% populacji swiata."<<endl;
    return 0;
}

Możesz też zastosować rzutowanie w C++:

long double populacja = static_cast<long double>(x) / swiat;
komentarz 2 września 2017 przez 10kw10 Pasjonat (22,880 p.)

long double populacja = long double(x)/swiat; 

Możesz też zastosować rzutowanie w C++:

long double populacja = static_cast<long double>(x) / swiat;

A to pierwsze to w jakim jezyku ? :D

 

1
komentarz 2 września 2017 przez niezalogowany
Właśnie tam powinno być rzutowanie w stylu C ;)
komentarz 2 września 2017 przez Huberti Gaduła (4,500 p.)

Hipcio dzięki za odpowiedź, mam do ciebie jeszcze jedno pytanie. 

Czy ten zapis jest prawidłowy?

long double populacja = long double (x)/(swiat);

 

1
komentarz 2 września 2017 przez niezalogowany
Jest ;)
komentarz 2 września 2017 przez Huberti Gaduła (4,500 p.)
Dzięki :)
0 głosów
odpowiedź 2 września 2017 przez Velta Maniak (52,370 p.)
przywrócone 2 września 2017 przez Eryk Andrzejewski
long long x = kraj*100;
long double populacja = x/swiat;

Po co? Ta operacja jest zupełnie bez sensu. Wystarczy zrobić takie coś:

cout << "Populacja Polski stanowi " << (kraj / swiat) * 100 << "% populacji swiata." << endl;

Do zmniejszenia wyświetlanej precyzji możesz użyć precision().

0 głosów
odpowiedź 3 września 2017 przez Sic Dyskutant (8,510 p.)

Jednym ze sposobów jest również użycia typów zmiennoprzecinkowych. 

double swiat = 6,898e+6;
double kraj = 3.848e+3;

Jednak wyniki mogą utracić na dokładności.

Podobne pytania

0 głosów
0 odpowiedzi 49 wizyt
pytanie zadane 18 czerwca 2019 w C i C++ przez Myerinio Nowicjusz (120 p.)
0 głosów
1 odpowiedź 149 wizyt
pytanie zadane 15 stycznia 2020 w C i C++ przez xZenit Użytkownik (760 p.)
0 głosów
0 odpowiedzi 268 wizyt
pytanie zadane 4 stycznia 2022 w C i C++ przez Arkadiusz Grządziel Nowicjusz (120 p.)

92,584 zapytań

141,434 odpowiedzi

319,669 komentarzy

61,967 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!

...