Lista 2 -- Wstęp do informatyki, W. Hebisch

Zadanie 1

Wypróbować poniższy program:

/* 
   Program oblicza sumę częściową szergu zadającego 
   funkcję wykładniczą.
   Kompilacja 
   gcc -o expsum expsum.c -lm
*/
#include <stdio.h>
#include <math.h>

int main(void)
{
	double suma = 1.0;
	double wyraz = 1.0;
	double x = -2.0;
	int n = 10;
        int i;
	for(i=1; i<=n; i=i+1) {
		wyraz = wyraz * x/i;
		suma = suma + wyraz;
	}
	printf("Suma dla n=%d wynosi %20.16f, błąd %20.16f\n", 
		n, suma, suma - exp(x));
        return 0;
}
Zmodyfikować program tak by:

Zadanie 2

Wiadomo że jeśli f jest funkcją ciągłą na odcinku [0,1] to suma (f(0)+f(1/n)+...+f((n-1)/n)+f(1))/(n+1) dąży do całki z f gdy n dąży do nieskończoności. Oznacza to że powyższa suma może być użyta to przybliżonego obliczania całki. Napisać program który w obliczy przybliżoną wartość całki (tzn. powyższą sumę) dla f(x)=x oraz dla f(x)=x*x. Obliczyć analitycznie dokładne wartości tych całek i wstawiając dokładną wartość do programu obliczyć błąd przybliżenia dla kilku różnych n.

Zastąpić powyższą sumę przez (f(1/n)+...+f((n-1)/n)+f(1))/n oraz przez (f(0)/2+f(1/n)+...+f((n-1)/n)+f(1)/2)/n, porównać błędy przybliżenia dla f(x)=x oraz dla f(x)=x*x.

Zadanie 3

Wypróbować poniższy program:
#include <stdio.h>

int main(void)
{
        char tab[21][21];
        int i,j;
        /* Inicjujemy tabelę spacjami */
        for(i=0; i<21; i=i+1) {
                for(j=0; j<21; j=j+1) {
                        tab[i][j]=' ';
                }
        }
        /* Wpisujemy dużego X-a do tabeli */
        for(i=0; i<21; i=i+1) {
                tab[i][i] = '*';
                tab[i][21-i-1] = '*';
        }
	/* Wypisujemy tabelę na ekranie */
        for(i=0; i<21; i=i+1) {
                for(j=0; j<21; j=j+1) {
                        putchar(tab[i][j]);
                }
                putchar('\n');
        }
            return 0;
}
Zmodyfikować program by:

Zadanie 4

Napisać program który obliczy n silnia (ograniczyć się do małych n).

Zadanie 5

Napisać program który obliczy wpółczynnik Newtona "n nad k" (tzn. n!/(k!(n-k)!)). Jak to zrobić żeby nie mieć problemu z wielkością silni dla (np.) n=32?