C/Zaawansowane operacje matematyczne: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
m →‎sumowanie: ++ pre
m →‎produkt ( iloczyn): C/Zaawansowane_operacje_matematyczne#Przekroczenie_zakresu_liczb_całkowitych
Linia 161:
 
:<math>\prod_{i=1}^{n} x_i = x_1 \cdot x_2 \cdot x_3 \cdot \ldots \cdot x_n</math>
 
 
<syntaxhighlight lang="c">
#include <stdio.h>
 
int product(const int m, const int n )
{
int p = 1;
for(int i=m; i<=n; ++i)
{
p *= i;
}
return p;
}
 
 
 
int main()
{
int p;
int m = 1; // lower index
int n = 10; // upper index
p = product(m,n);
printf("product of integer numbers from %d to %d is %d\n", m, n, p);
}
</syntaxhighlight>
 
Dla zakresu [1,10] program działa poprawnie
<syntaxhighlight lang="bash">
gcc p.c -Wall -Wextra
./a.out
product of integer numbers from 1 to 10 is 3628800
</syntaxhighlight>
 
Dla zakresu [1,100] program daje dziwny wynuk:
<syntaxhighlight lang="bash">
gcc p.c -Wall -Wextra
./a.out
product of integer numbers from 1 to 100 is 0
</syntaxhighlight>
 
 
 
Wartość iloczynu możemy obliczyć za pomoca wolfram alfa.
<pre>
Product[k, {k, 1, 100}] = 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
</pre>
 
Liczba ma 159 cyfr, to więcej niż [[C/Zaawansowane_operacje_matematyczne#całkowitych|zakres dostępnych standardowych liczb całkowitych]]. [[C/Zaawansowane_operacje_matematyczne#Przekroczenie_zakresu_liczb_całkowitych|Przekroczenie zakresu]] powoduje błędny wynik.
 
==Obliczenia numeryczne==