Program C++

Permasalahan
Bagaimana program menghitung beda, suku pertama, suku ke - n, dan jumlah suku ke - n, serta menampilkan deret aritmatika dan geometri?

Solusi
A.    Deret Aritmatika
1.      Pengertian
Deret aritmatika adalah jumlah suku-suku dari suatu barisan aritmatika.
2.      Menentukan beda
Misal:
Suku ke-x = k
Suku ke-y = l

Un = a + ( n - 1 ) b
k =  a + ( x – 1 ) b
l = a + ( y – 1 ) b

a = k – ( x – 1 ) b
l = k  - ( x – 1 ) b + ( y – 1 ) b
l = k – bx + by
bx – by = k – l
b ( x – y ) = k – l
            b =  
3.      Menentukan suku pertama
k = a + ( x – 1 ) b
k = a + ( x – 1 )
a = k – ( x – 1 )
4.      Menentukan suku ke – n
Un = a + ( n - 1 ) b
5.      Menentukan jumlah suku ke – n
 
6.      Menampilkan deret aritmatika
 

B.     Deret Geometri
1.      Pengertian deret geometri  
Deret geometri adalah jumlah dari beberapa suku pada deret geometri.
2.      Suku ke-n barisan geometri adalah
 
3.      Rasio deret geometri adalah
 
4.      Suku pertama deret geometri adalah
 
5.      Menentukan suku ke-n deret geometri
 
6.      Menentukan jumlah suku ke-n deret geometri
 
7.      Menampilkan deret geometri
Uj=e*ri



Algoritma
1.      Mulai program
2.      Cetak “ Deret Aritmatika atau deret Geometri”
3.      Jika t= =1, kerjakan langkah 4, jika tidak lanjut ke langkah 19
4.      Input nilai aritmatika
5.      Kerjakan b=(k-l)/(x-y)
6.      Cetak b
7.      Kerjakan a=k-(x-1)*b
8.      Cetak a
9.      Tanyakan Un yang dicari
10.  If(n<=0) , Jika benar cetak “input tidak boleh negatif atau 0. Jika salah, lanjut ke langkah berikutnya.
11.  Kerjakan Un = a+(n-1)b
12.  Cetak Un
13.  Kerjakan Sn=  * (a+Un)
14.  Cetak Sn
15.  Identifikasikan for (i=1;i<n;i++)
16.  Kerjakan Ui = a+(i*b)
17.  Cetak Ui
18.  Identifikasikan while (z = =’y’||z = = ‘Y’), jika benar kembali ke langkah 4, jika salah lanjut ke langkah 36
19.  Jika t= = 2, kerjakan langkah 20
20.  Input nilai geometri
21.  Kerjakan g =  , h=  , r = pow(g, h)
22.  Cetak r
23.  Kerjakan v = c – 1, m = pow ( r , v), e =
24.  Cetak e
25.  Tanyakan Uq yang akan dicari
26.  Kerjakan o = Uq – 1 , p = pow ( r, o) , q = pow (r , Uq) ,Ug = e * p
27.  Cetak Ug
28.  Kerjakan Sg = e * (1 - q) / (1 - r)
29.  Jika (1-r)=0, cetak nilai tidak terdefinisi, jika salah lanjut ke langkah berikutnya
30.  Cetak Sg
31.  Identifikasikan for (i = 0; i< Uq ;i++)
32.  Kerjakan Uj = e * (pow(r , i))
33.  Cetak Uj
34.  Identifikasikan (z ==’y’||z==’Y’)
35.  Program kembali ke awal atau tidak
36.  Program selesai


Flowchart


C Source Code
#include<math.h>
#include<stdio.h>
void main()
{
 float t,x,k,y,l,b,a,n,Un,Sn,Ui,i,z,c,Ux,d,Uy,g,h,r,v,m,e,Uq,o,p,q,Ug,Sg,Uo,Uz,Uj,j;
 printf(" Deret aritmatika atau geometri?\n\n");
 printf("\n\n 1. Deret aritmatika.\n");
 printf("\n\n 2. Deret geometri.\n\n");
 printf("\n Menu yang Anda pilih = ");
 scanf("%f",&t);
 do
 if(t==1)
 {
  do
  {
   system("cls");
   {
    printf("      ###  Program deret aritmatika  ###\n\n");
    printf(" a.Suku ke berapa : ");
    scanf("%f",&x);
    printf("   berapa nilainya: ");
    scanf("%f",&k);
    printf("\n b.Suku ke berapa : ");
    scanf("%f",&y);
    printf("   berapa nilainya: ");
    scanf("%f",&l);
    b=(k-l)/(x-y);
    printf("\n\n =>Bedanya adalah %f\n\n",b);
    a=k-(x-1)*b;
    printf(" =>Suku pertama adalah %f\n\n",a);

    printf(" Berapa suku ke-n yang akan dicari: ");
    scanf("%f",&n);
    if(n<=0)printf(" Input tidak boleh negatif atau 0",n);
    else
    {
     Un=a+(n-1)*b;
     printf("\n Nilainya adalah %f\n",Un);
     Sn=n/2*(a+Un);
     printf(" Jumlah deretnya adalah %f\n",Sn);

     printf("\n Deret aritmatikanya adalah: ");
     a=a;
     printf("%f+",a);
     for(i=1;i<n;i++)
     {
      Ui=a+(i*b);
      printf("%f+",Ui);
     }
    }
   }
  printf("\n\n");
  printf(" Apakah anda ingin mengulangi?\n Tekan (y/t)");
  z=getch();
  printf("\n\n");
 }
 while(z=='y'||z=='Y');
}
 else if(t==2)
 {
  system("cls");
  printf("    ### Program Deret Geometri ###\n\n");
  printf("  a. Suku ke berapa : ");
  scanf("%f",&c);
  printf("     berapa nilainya: ");
  scanf("%f",&Ux);
  printf("  b. Suku ke berapa : ");
  scanf("%f",&d);
  printf("     berapa nilainya: ");
  scanf("%f",&Uy);
  g=Uy/Ux;
  h=1/(d-c);
  r=pow(g,h);
  printf("\n => Rasionya adalah %f",r);
  v=c-1;
  m=pow(r,v);
  e=Ux/m;
  printf("\n => Suku pertama adalah %f\n",e);

  printf("\n Berapa suku yang akan dicari: ");
  scanf("%f",&Uq);
  o=Uq-1;
  p=pow(r,o);
  q=pow(r,Uq);
  Ug=e*p;
  printf("\n Nilai suku yang dicari adalah %f\n",Ug);
  Sg=e*(1-q)/(1-r);
  if((1-r)==0)printf(" Hasil jumlah deretnya tidak terdefinisi");
  else
  {
   printf(" Jumlah deretnya adalah %f\n\n",Sg);
   printf(" Deret Geometrinya adalah: ");
   for(j=0;j<Uq;j++)
   {
    Uj=e*(pow(r,j));
    printf(" %f+",Uj);
   }
  }
  printf("\n\n");
  printf(" Apakah anda ingin mengulangi?\n Tekan (y/t)");
  z=getch();
  printf("\n\n");
 }
 else
 {
 printf("Nomor yang anda masukan tidak ada dalam menu\n");
 system("pause");
 }
 while(z=='y'||z=='Y');




eliminasi Gauss

#include <stdio.h>
#define MAX 20
void gauss2(double a[MAX][MAX], double b[MAX], int, int, double x[MAX]);
void cetak(double a[MAX][MAX], double b[MAX], int);
void hasil(double a[MAX][MAX], double b[MAX], int);
main(){
double a[MAX][MAX], b[MAX], x[MAX];
int dimensi, baris, kolom, flag;
char z;
do{
system("cls");
printf("Masukkan dimensi : ");
scanf("%d", &dimensi);
printf("masukkan koefisien matriks :\n");
for(baris=1; baris<=dimensi; baris++){
for(kolom=1; kolom<=dimensi; kolom++){
printf("a(baris[%d],kolom[%d]) : ", baris, kolom);
scanf("%lf", &a[baris][kolom]);
}
}
printf("\nmasukkan vektor hasil :\n");
for(baris=1; baris<=dimensi; baris++){
printf("b(baris[%d]) : ", baris);
scanf("%lf", &b[baris]);
}
cetak(a, b, dimensi);
printf("\nTekan sembarang tombol untuk memulai perhitungan\n");
getch();
gauss2(a, b, dimensi, flag, x);
if(flag!=0){
printf("\nTekan sembarang tombol untuk memulai perhitungan nilai x\n");
getch();
hasil(a, b, dimensi);
}
printf("\n\nNgulangi lagi ?(y/t) >");
z=getch();
printf("\n\n");
}while(z=='y'||z=='Y');
}
void gauss2(double a[MAX][MAX], double b[MAX], int dimensi, int flag, double x[MAX]){
double pivot1, pivot2;
int pos, baris, kolom;
flag = 1;
for(pos=1; pos<=dimensi; pos++){
pivot1 = a[pos][pos];
if(pivot1 == 0){
flag=0;
printf("pivot pada a[%d][%d] bernilai nol, tidak ada penyelesaian", pos, pos);
break;
}
else{
for(kolom=1; kolom<=dimensi; kolom++)
a[pos][kolom]=a[pos][kolom]/pivot1;
b[pos]=b[pos]/pivot1;
cetak(a, b, dimensi);
for(baris=pos; baris<=dimensi; baris++){
if(baris+1<=dimensi){
pivot2 = a[baris+1][pos];
for(kolom=1; kolom<=dimensi; kolom++)
a[baris+1][kolom]=a[pos][kolom]*(-pivot2)+a[baris+1][kolom];
b[baris+1]=b[pos]*(-pivot2)+b[baris+1];
cetak(a, b, dimensi);
}
}
}
}
}
void cetak(double a[MAX][MAX], double b[MAX], int dimensi){
int baris, kolom;
printf("\n");
for(kolom=1; kolom<=dimensi; kolom++)
printf(" a%d ", kolom);
printf(" b \n");
for(baris=1; baris<=dimensi; baris++){
for(kolom=1; kolom<=dimensi; kolom++)
printf("%6.2lf", a[baris][kolom]);
printf("%6.2lf\n", b[baris]);
}
}
void hasil(double a[MAX][MAX], double b[MAX], int dimensi){
int pos, kolom, i;
double x[MAX], temp;
x[dimensi]=b[dimensi]/a[dimensi][dimensi];
for (pos=dimensi-1;pos>=1;pos--){
temp=b[pos];
for(kolom=pos+1;kolom<=dimensi;kolom++)
temp=temp-a[pos][kolom]*x[kolom];
x[pos]=temp/a[pos][pos];
}
printf("\n\nHASILNYA ADALAH\n");
printf("----------\n");
printf("| I | X(I) |\n");
printf("----------\n");
for (i=1;i<=dimensi;i++)
{
printf("|");
printf("%5d", i);
printf("\t |");
printf("%15lf |\n", x[i]);
}
printf("----------\n");
system ("pause");
}

No comments:

Post a Comment