• 31 odgovora
  • 28.863 pregleda
Re: Najkraći C program za računajje broja pi 29.03.2010. u 22:05 · pre 201 meseci #22
Hoces i ti da odbijes milion dolara kad ti ponude pa nas spremas polako
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Najkraći C program za računajje broja pi 29.03.2010. u 23:11 · pre 201 meseci #23
t je osnova sistema. Problem je što može biti a(j)\percent t+q/p/t >= t (konkretno, može biti jednako t, ali ne i više od toga), pa to što se ispisuje ne mora biti cifra tog sistema. To se najlakše vidi tako što se osnova smanji na 10, pa se generiše dosta cifara. No, program je napisan da ispisuje oko 1000 cifara broja pi i u tom opsegu se greška ne ispoljava, pa je izlaz dobar.
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Re: Najkraći C program za računajje broja pi 30.03.2010. u 09:26 · pre 201 meseci #24
Citat:
Goran Rakić: Nedeljko, da li ti je dobro?


Ma, dobro sam ja, nego ispravljam ovog kolegu što lupeta.

Citat:
mmix: Hoces i ti da odbijes milion dolara kad ti ponude :D pa nas spremas polako ;)


Pa, ne bi mi bilo loše sa miliončetom u džepu. Ko mi to nudi? Mogu li ja da preuzmem Grišinu nagradu umesto njega?
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Re: Najkraći C program za računajje broja pi 31.03.2010. u 16:17 · pre 201 meseci #25
Svi navedeni programi su "nategnuti" da ispale odredjen broj tačnih cifara. Kada bismo zamislili apstraktnu mašinu sa neograničenim intovima ili zamenili int sa nekom bigint klasom, na njima priloženi algoritmi ne bi ispaljivali bilo koji broj cifara broja pi tačno, već bi se dešavalo da ponegde omanu neku cifru (pa da opet iza nje imaju dugu seriju tačnih cifara).
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Re: Najkraći C program za računajje broja pi 06.04.2010. u 02:41 · pre 201 meseci #26
Evo jednog čitljivog programa bez anomalija.

Code:
#include <stdio.h>
#include <stdlib.h>

#define EXPONENT 5
#define DIGITS 1000

int main(int argc, char *argv[])
{
    int t = 1;
    int n = (DIGITS + EXPONENT - 1) / EXPONENT;
    char format[] = "%.0d ";
    int summand[n+2];
    int sum[n+2];
    int i;
    int k = 0;
    int p;
    int q;

    for (i=0; i < EXPONENT; ++i) {
        t *= 10;
    }

    n++;
    format[2] = '0' + EXPONENT;

    for (i = 0; i <= n; ++i) {
        summand[i] = sum[i] = 0;
    }

    summand[0] = 2;

    do {
        int carrier = 0;

        for (i = n; i >= 0; --i) {
            sum[i] += summand[i] + carrier;
            carrier = sum[i]/t;
            sum[i] -= carrier*t;
        }

        k++;
        p = 2*k + 1;
        q = 0;

        for (i = 0; i <= n; ++i) {
            q = summand[i]*k + q%p*t;
            summand[i] = q/p;
        }

        for (i = 0; i <= n; ++i) {
            if (summand[i] != 0) {
                break;
            }
        }
    } while(i <= n);

    printf("3.");

    for (i=1; i < n; ++i) {
        printf(format, sum[i]);

        if (i % (2*EXPONENT) == 0) {
            printf("\n  ");
        } else if ((i & 1) == 0) {
            printf(" ");
        }
    }

    if ((n - 1) % (2*EXPONENT) != 0) {
        printf("\n");
    }

    printf("\n");
    system("pause");

    return EXIT_SUCCESS;
}
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Re: Najkraći C program za računajje broja pi 22.05.2012. u 19:19 · pre 175 meseci #27
Nije C ali jeste 'kraći', 'najkraći': računanje broja pi iz singl-Excel-formule. :D

66 karaktera i samo 5 tačnih decimala (od milion iteracija -vrlo sporo konvergira!) ali je zato ultra kratko.

(J. Sondow 1997.)

http://mathworld.wolfram.com/PiFormulas.html (70)

Code:

{=PRODUCT(1+1/(4*ROW(1:1000000)^2-1))/SUM(1/(4*ROW(1:1000000)^2-1))}

Potpis
Have you found helpful examples, solutions or ideas-in-work, please consider the
following:
• Citation of *actual page* you are going to using is welcome.
• Have you saw "Value Added" examples you are going to incorporate to your
profitable blog, daily job or any money making venture: How about online donation?
↗Ana & Vlade Divac Foundation
Hvala!
Re: Najkraći C program za računajje broja pi 22.05.2012. u 20:25 · pre 175 meseci #28
Program ti jednostavno ne valja zato što koristi standardan realni tip ograničene tačnosti, pa ne možeš dobiti proizvoljan broj cifara..
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Re: Najkraći C program za računajje broja pi 22.05.2012. u 20:50 · pre 175 meseci #29
Šta je ovde "moj program"? Excel? Ja lepo potpisah autora algoritma a sad što se formule tiče, to je što je.

Inače, Excel u računanju koristi samo 15 značajnih cifara i to je obogaljujuće u ovom proračunu ali zato sam i postavio linkove i integralnu formulu, pošto Excel nije tema.
Potpis
Have you found helpful examples, solutions or ideas-in-work, please consider the
following:
• Citation of *actual page* you are going to using is welcome.
• Have you saw "Value Added" examples you are going to incorporate to your
profitable blog, daily job or any money making venture: How about online donation?
↗Ana & Vlade Divac Foundation
Hvala!
Re: Najkraći C program za računajje broja pi 22.05.2012. u 22:03 · pre 175 meseci #30
Ovde se prilažu programi koji mogu da izračunaju mnogo više cifara broja pi, nego što to podržavaju standardni realni tipovi koji su mašinski podržani. Dakle, ovde tema nisu programi koji npr. ne mogu da izračunaju 100 decimala broja pi kako treba.
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Re: Najkraći C program za računajje broja pi 23.05.2012. u 06:20 · pre 175 meseci #31
Auu koliko sujete, nemam reči. Zašto je problem napisati program u C-u tako da se podrže svi neophodni "mašinski tipovi"? A broj decimala usko je vezan za broj iteracija i dakle ne može nikako biti propisan. Kao što i nije bio. Do malopre.
Potpis
Have you found helpful examples, solutions or ideas-in-work, please consider the
following:
• Citation of *actual page* you are going to using is welcome.
• Have you saw "Value Added" examples you are going to incorporate to your
profitable blog, daily job or any money making venture: How about online donation?
↗Ana & Vlade Divac Foundation
Hvala!
Re: Najkraći C program za računajje broja pi 23.05.2012. u 12:34 · pre 175 meseci #32
Nije nikakav problem napisati program u bilo kom jeziku koji se oslanja na ugrađene tipove. Evo ti jednog

Code:
#include <iostream>
#include <cmath>
#include <iomanip>

using namespace std;

int main()
{
    cout << setprecision(50) << 4*atanl(1); << endl;
}


Broj iteracija o kome govoriš je samo jedno od ograničenja tačnosti koju ćeš dobiti. Izvršavanjem gornjeg C++ programa ćeš doboti tačnost koja odgovara long double tipu. Recimo,

3.1415926535897932385128089594061862044327426701784


Zacrnjene su dobre cifre (umesto pslednje petice treba 46..., što se zaokrugljuje na 5). Dakle, korišćeni tip ima svoja ograničenja. Možeš praviti kakve god hoćeš programe po kakvim god hoćeš formulama, izvršiti koliko god hoćeš iteracija, ali ako se osloniš na standardne tipove, nežeš dobiti veću tačnost od one koju oni podržavaju. Poenta je upravo u pisanju koji nemaju ograničenja za broj cifara koje se mogu dobiti.
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme