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

Błąd w obliczeniach

Object Storage Arubacloud
–1 głos
372 wizyt
pytanie zadane 19 sierpnia 2019 w C i C++ przez Mavimix Dyskutant (8,390 p.)

Mam taki kod:

licznik = 2;
				liczba[0] = 7;
				liczba[1] = 8;
				liczba[2] = 9;

			for(int k = licznik; k>=0; k--)
			{
				obliczenia += pow(10, k)*liczba[k];
			}

Analogicznie powinno wyświetlić 987, a wyświetla 986. Nieważne co wpiszę to i tak wynik jest o 1 mniejszy. Dlaczego?

2 odpowiedzi

0 głosów
odpowiedź 19 sierpnia 2019 przez k222 Nałogowiec (30,150 p.)

U mnie wyświetla poprawnie liczbę 987. Masz tu cały kod, porównaj ze swoim:

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    
    int licznik = 2;
    int liczba[3];
    int obliczenia = 0;
    liczba[0] = 7;
    liczba[1] = 8;
    liczba[2] = 9;
 
    for(int k = licznik; k>=0; k--) {
        obliczenia += pow(10, k)*liczba[k];
    }
    
    cout<<obliczenia<<endl;


    return 0;
}

 

0 głosów
odpowiedź 19 sierpnia 2019 przez tangarr Mędrzec (154,860 p.)
Funkcja pow zwraca double. Możliwe, że u ciebie pow(10,0) zwraca wartość  0,99999999999. Niejawna konwersja do inta powoduje obcięcie części dziesiętnej.
Masz dwie opcje:
1. Wykonuj obliczenia na double
2. Zaokrąglaj wyniki przed konwersją

Podobne pytania

0 głosów
2 odpowiedzi 270 wizyt
pytanie zadane 16 marca 2020 w C i C++ przez Berniak Początkujący (260 p.)
0 głosów
2 odpowiedzi 294 wizyt
pytanie zadane 27 czerwca 2019 w SPOJ przez magda_19 Gaduła (3,080 p.)
0 głosów
2 odpowiedzi 2,125 wizyt
pytanie zadane 25 kwietnia 2018 w C i C++ przez Marcin Reguła Początkujący (450 p.)

92,592 zapytań

141,441 odpowiedzi

319,701 komentarzy

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

...