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

Dzielenie zwraca tylko liczby calkowite

42 Warsaw Coding Academy
0 głosów
174 wizyt
pytanie zadane 10 kwietnia 2024 w C i C++ przez Doge Gaduła (3,420 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 2024 przez adrian17 Mentor (353,220 p.)
wybrane 10 kwietnia 2024 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 2024 przez Doge Gaduła (3,420 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 2024 przez Oscar Nałogowiec (29,360 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 2024 przez toko Dyskutant (8,030 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ź 209 wizyt
0 głosów
1 odpowiedź 273 wizyt
0 głosów
0 odpowiedzi 146 wizyt

93,377 zapytań

142,379 odpowiedzi

322,527 komentarzy

62,724 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...