lunes, 1 de octubre de 2001

Sucesiones geométrica. Un ejercicio de programación en C/C++

//-----------------------------------------------------------------
// Progressions geomètriques 
// 
// Joan Aranès Clua
// data: 17/12/2001
// 
// Aquest programa mostra els n primers termes 
// de la successió a(n) -- entrant el primer terme (a), 
// la raó de la p. (r) i el nombre de termes (n) --
// i calcula la suma d'aquests n primers termes
// Comprova també el resutlat de la suma, comparant-lo
// amb el resultat de la fórmula de la suma de la p. geomètrica

//-----------------------------------------------------------------
#include <stdio.h>
#include <math.h>

void main(){

	// declaració de les variables corresponents a les dades d'entrada
    double a_1,r; // primer terme i raó de la progressió
	unsigned int n; // nombre de termes 
	// declaració de les variables corresponents a les dades de sortida
    double suma;
	double a_i; // termes de la successió (i = 1,...,n)
    
    printf("Una progressi\x0A2 geom\x08Atrica \x082s una successi\x0A2 el terme\n");
    printf("general de la qual \x082s de la forma a_i=a_1*r^(i-1); (i=1,...,n)\n");


    printf("\nIntrodu\x08Bu el valor del primer terme a_1 =");
    scanf("%lf",&a_1);


    printf("\nIntrodu\x08Bu el valor de la ra\x0A2 r = ");
    scanf("%lf",&r);


    printf("\nIntrodu\x08Bu el nombre de termes n=");
    scanf("%d",&n);

    suma=0;
    for (unsigned int i=1;i<=n;i++)
	{
		a_i = a_1*pow(r,i-1);
		printf("a(%d)=%lf\n",i,a_i);	
        suma=suma+a_i;
    }

 
    printf("----------------------------------\n");
    printf("La suma dels %d primers termes \x082s %lf\n",n,suma);
    printf("\nTamb\x082 \x082s pot determinar el valor d'aquesta suma fent servir\n");
    printf("la f\x0A2rmula s_n = a_1*(r^(n-1))/(r-1) ... 
            i, efectivament s'obt\x08A: %lf\n",a_1*((pow(r,n)-1)/(r-1)));	
}