Test 90 19.11.19

/* Test 90

Viết các hàm thực hiện thực hiện:
1. Nhập vào từ bàn phím số nguyên dương n, 2 số thực x, y  (y!=0)
2. In ra màn hình số chẵn <= 2n
3. Tính S1 = 1/x + 2/(x^2) + 3/(x^3) + ... + n/(x^n)
4. Tính S2 = 1! + 3! + 5! + ... + (2n+1)!
5. Tính S3 = x/y + (x^2)/(y^2) + (x^3)/(y^3) + ... + (x^n)/(y^n)
*/

#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;

// bien toan cuc
int n;
float x,y;

// ham Nhap
void Nhap(){
    cout<<"\n + Nhap bien n, x, y: ";
    do{
        cout<<"\n n = ";
        cin>>n;
        if(n<=0)
            cout<<"\n Nhap lai n !";
    }while(n<=0);
    cout<<"\n x= "; cin>> x;
    do{
        cout<<"\n y = ";
        cin>>y;
        if(y==0)
            cout<<"\n Nhap lai y !";
    }while(y==0);
}

// ham in so chan <=2n
void InSoChan(){
    cout<<"\n + In so chan: ";
    for(int i=0;i<=2*n;i=i+2)
        cout<<i<<", ";
}

// ham Tinh s1
float S1(){
    float t=0;
    for(int i=1;i<=n;i++)
        t=t+1.0/pow(x,i);
    return t;
}

// ham tinh giai thua
long GiaiThua(int a){
    long gt = 1;
    for(int i=1;i<=a;i++)
        gt=gt*i;
    return gt;
}

// ham Tinh S2
float S2()
{
    long t=0;
    for(int i=1;i<=2*n+1; i=i+2)
        t=t+GiaiThua(i);
    return t;
}

// ham tinh S3
float S3(){
    float t=0;
    for(int i=1;i<=n;i++)
        t=t+pow(x,i)/pow(y,i);
    return t;
}

// ham chinh

int main(){
    // goi ham nhap
    Nhap();
    InSoChan();
    cout<<"\n + S1 = "<<S1();
    cout<<"\n + S2 = "<<S2();
    cout<<"\n + S3 = "<<S3();
    
    cout<<"\n - END - \n ";

}