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

Dzielenie zwraca tylko liczby calkowite

Object Storage Arubacloud
0 głosów
95 wizyt
pytanie zadane 10 kwietnia w C i C++ przez Doge Gaduła (3,370 p.)

Witam, piszę funkcję liczącą pole pod wykresem, natomiast napotkałem na problem, ponieważ kod wygląda tak:

#include <bits/stdc++.h>

using namespace std;

long long f(long long x)
{
    return x*x;
}

int main()
{
    long long a, b, n, P;
    cout<<"Podaj przedzial: "<<endl;
    cout<<"Od: "; cin>>a;
    cout<<"Do: "; cin>>b;
    cout<<"Podaj dokladnosc (ile prostokatow): "; cin>>n;
    long long bok1 = (b-a)/n;

    cout<<"bok1: "<<bok1<<endl;
    for(int i=0; i<n; i++)
    {
        P += bok1 * f(a+bok1*i);
    }
    cout<<"Pole: "<<P<<endl;

    return 0;
}

natomiast zmienna bok1

long long bok1 = (b-a)/n;

przy przypisaniu wartości takiej, że z dzielenia jest liczba mniejsza od 1, jest ustawiana na 0. O co chodzi? Przecież ustawiłem typ zmiennej long long, więc powinno się wyświetlać po przecinku.

2 odpowiedzi

+2 głosów
odpowiedź 10 kwietnia przez adrian17 Ekspert (345,160 p.)
wybrane 10 kwietnia przez Doge
 
Najlepsza

Przecież ustawiłem typ zmiennej long long, więc powinno się wyświetlać po przecinku.

`long long` to wciąż liczba całkowita, tylko potencjalnie o większym zakresie od inta.

Jeśli chcesz liczby rzeczywiste, to operuj na float lub double (plus co najmniej jedna ze stron dzielenia musi być rzeczywista żeby wynik był rzeczywisty).

komentarz 10 kwietnia przez Doge Gaduła (3,370 p.)
Wyszukiwałem typy zmiennych i źle spojrzałem które to które... Dziękuję bardzo za odpowiedź! Teraz wszystko działa
komentarz 10 kwietnia przez Oscar Nałogowiec (29,320 p.)

@adrian17,  formalnie to nie ma typu long, czy long long - są long int i long long int, tyle że typ int jest jakoś tam domyślny i to słowo czasami można pominąć. Podobnie z unsigned.

+1 głos
odpowiedź 10 kwietnia przez toko Dyskutant (7,670 p.)

Nie. To tak nie działa. Typy całkowite (integer) NIE MAJĄ NICZEGO po przecinku. Trzymają one liczby całkowite. Żeby mieć liczby po przecinku, użyj liczb zmiennoprzecinkowych. long long czy int, jedyna różnica to ile cyfr jest w stanie zapisać, ale nie po przecinku, tylko przed.

Podobne pytania

0 głosów
1 odpowiedź 155 wizyt
0 głosów
1 odpowiedź 216 wizyt
0 głosów
0 odpowiedzi 85 wizyt

92,617 zapytań

141,467 odpowiedzi

319,783 komentarzy

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

...