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

C++ iteracja

Object Storage Arubacloud
0 głosów
175 wizyt
pytanie zadane 27 marca 2020 w C i C++ przez Patryk Muzalewski Nowicjusz (120 p.)
edycja 28 marca 2020 przez Patryk Muzalewski

Witam, mam pydanie odnosnie dwoch petli które są sumą szeregów zwiększającą się o 1/i razy, za każdym razem sumują wartość. Defakto wyniki wychodzą z dwóch pętli praktycznie tak samo, ale niestety są delikatne przekłamania . Mam pytanie dlaczego w tej drugiej pętli (z dekrementacją ) są mniejsze przekłamania w porównaniu do pierwszej gdzie jest inkrementacja  ? Dziękuje bardzo za odpowiedź

for(int j=1;j<=1000;j++)
        {
            for (int i=1; i<=j; i++)
               {
               sa[j]+=(1.0/i);
               sad[j]+=(1.0/i);
               }

            for(int i=j;i>=1;i--)
            {
            sb[j]+=(1.0/i);
            sbd[j]+=(1.0/i);
            }

}
 

 

komentarz 27 marca 2020 przez tkz Nałogowiec (42,000 p.)
Używasz float, czy double? Rozchodzi się o samą dokładność i długość mantysy w obu przypadkach. Przy sporej wartości "i" będą śmieci.
komentarz 28 marca 2020 przez Patryk Muzalewski Nowicjusz (120 p.)
na typie double i float w pętlach dlatego są dwie zmienne . Na float poprostu szybciej widać ta różnice między jedną a drugą pętla. W sumie to mam teorie że przy dekrementacja jest wyższa dokładność ponieważ jest dłuższa mantysa
komentarz 28 marca 2020 przez j23 Mędrzec (194,920 p.)
Dlaczego indeksujesz od 1 a nie 0? Jeśli tablice mają po 1000 elementów, to masz błąd.
komentarz 28 marca 2020 przez Patryk Muzalewski Nowicjusz (120 p.)
indeksuje od 1 poniewaz jest to suma szeregow 1/i nie moze byc rowne 0. KOD jest dobrze napisany chodzi mi tylko czemu w drugiej petli jest mniejsze przeklamanie w wynikach w sensie wynik  jest bardziej dokladny.
komentarz 28 marca 2020 przez tkz Nałogowiec (42,000 p.)
Kod nie jest dobrze napisany. j23 miał na myśli, że tablice zaczynają się od 0, nie 1 jak w Twoim przypadku. A co do dokładności zmiennoprzecinkowych liczb, taka charakterystyka tego typu zmiennych, właściwie nic nie poradzisz. Przy double późnij zauważysz przekłamania, bo tak jak pisałem posiada większą mantysę, 81 bitów podajże.
komentarz 28 marca 2020 przez Patryk Muzalewski Nowicjusz (120 p.)
edycja 28 marca 2020 przez Patryk Muzalewski
^^ nie chodzi o przeklamania ze są

na doubel tez sa. Chyba zle sformulowalem pytanie.

Mamy dwie petle jedna dziala w sposob iteracyjnie w sensie idzie do momentu dopisujac 1/i1 +1/2 +1/3 ......

druga dziala w sposob dekrementacyjnie ale wyniki wychodza tak samo (z roznica w przeklamaniach) 1/1+1/2+1/3.....  za kazdym razem sie konczy tylko glowna petla ja trzyma by caly czas pracowala.

pytanie jest takie czemu jest ROZNICA w przeklamaniu miedzy jedna a druga  petla

miedzy typami float i doubel

a nie dlaczego sa bo wiem ze sa i beda spowodu ograniczonych miejsc po przecinku w doubel tez.

CHODzi o roznice czemu ona nastepuje miedzy jedna petla a druga dlaczego w tej gornej tablicy float i doubel maja wieksze przeklamanie niz float i doubel w drugiej petli
komentarz 28 marca 2020 przez tkz Nałogowiec (42,000 p.)
MANTYSA LICZB ZMIENNOPRZECINKOWYCH.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
5 odpowiedzi 1,062 wizyt
0 głosów
1 odpowiedź 345 wizyt
pytanie zadane 11 lutego 2019 w C i C++ przez Teslum_369 Gaduła (4,190 p.)

92,573 zapytań

141,423 odpowiedzi

319,648 komentarzy

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

...