Skip to content

Commit fbe3f61

Browse files
authored
feat: Menambahkan materi deret_aritmatika (#17)
1 parent 266cf77 commit fbe3f61

File tree

1 file changed

+113
-0
lines changed

1 file changed

+113
-0
lines changed

math/deret_aritmatika.c

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
/**
2+
* @file deret_aritmatika.c
3+
* @brief Program untuk menentukan elemen-elemen penting dalam deret aritmatika.
4+
*
5+
* Program ini menerima input berupa deret aritmatika dari pengguna,
6+
* lalu menghitung:
7+
* - Beda antar suku (b)
8+
* - Menampilkan bentuk umum suku ke-n dalam bentuk `bn + c`
9+
* - Menghitung nilai suku ke-n berdasarkan input pengguna
10+
*
11+
* Program ini cocok untuk pembelajaran konsep dasar deret aritmatika dan implementasi
12+
* alokasi memori dinamis di C (menggunakan `malloc`).
13+
*
14+
* @author Yusuf
15+
* @date Juli 2025
16+
*/
17+
#include <stdio.h>
18+
#include <stdlib.h>
19+
/**
20+
* @brief fungsi untuk mendapatkan beda(b) dalam suatu deret
21+
* @param deret sebuah array untuk menyimpan sebuah deret aritmatika
22+
* @return mengembalikan nilai selisih antara dua suku berurutan atau disebut beda(b)
23+
*/
24+
int beda(const int deret[]){
25+
return deret[1] - deret[0];
26+
}
27+
/**
28+
* @brief fungsi untuk mendapatkan nilai suku pertama
29+
*
30+
* @param deret sebuah array untuk menyimpan sebuah deret aritmatika
31+
* @return mengambalikan nilai suku pertama
32+
*/
33+
int suku_pertama(const int deret[]){
34+
return deret[0];
35+
}
36+
/**
37+
* @brief fungsi untuk mendapatkan rumus suku ke n
38+
* @param deret sebuah array untuk menyimpan sebuah deret aritmatika
39+
* @details rumus suku ke n didefinisikan:
40+
* suku_ke_n = a + (n - 1) x b
41+
* dengan
42+
* n = suku ke n
43+
* a = suku pertama
44+
* b = beda
45+
*/
46+
void r_suku_n(const int deret[]){
47+
int a = suku_pertama(deret);
48+
int b = beda(deret);
49+
int sm = a + (b * -1);
50+
printf("%dn + %d", b, sm);
51+
}
52+
/**
53+
* @brief fungsi yang digunakan untuk mendapatkan nilai suku ke-n
54+
* @param deret sebuah array untuk menyimpan sebuah deret aritmatika di heap memory
55+
* @param x indeks suku ke-n
56+
* @param n banyak element dalam satu deret/besar dari sebuah array
57+
* @return nilai deret suku ke n
58+
* @details rumus suku ke n didefinisikan:
59+
* suku_ke_n = a + (n - 1) x b
60+
* dengan
61+
* n = suku ke n
62+
* a = suku pertama
63+
* b = beda
64+
*/
65+
int suku_n(const int deret[],int x,int n){
66+
if(x <= n && x >= 0){
67+
return deret[x];
68+
}
69+
int a = suku_pertama(deret);
70+
int b = beda(deret);
71+
int deno = (x - 1) * b;
72+
int ans;
73+
ans = a + deno;
74+
return ans;
75+
}
76+
/**
77+
* @brief Fungsi utama program.
78+
*
79+
* Fungsi ini:
80+
* 1. Meminta pengguna untuk memasukkan jumlah elemen deret.
81+
* 2. Mengalokasikan memori untuk menyimpan deret aritmatika.
82+
* 3. Meminta input elemen-elemen deret dari pengguna.
83+
* 4. Menghitung dan menampilkan beda antar suku.
84+
* 5. Menampilkan bentuk umum suku ke-n (`bn + c`).
85+
* 6. Meminta input suku ke-n yang ingin dicari, lalu menghitung dan menampilkan nilainya.
86+
*
87+
* Program mengelola memori secara manual menggunakan `malloc` dan `free`.
88+
*
89+
* @return 0 jika program berhasil dijalankan.
90+
*/
91+
int main(){
92+
int n; //banyak element
93+
printf("Masukkan panjang deret");
94+
scanf("%d",&n);
95+
int* deret = malloc((n) * sizeof(int));//mengalokasi memory di heap sebanyak n * 4 byte
96+
for(size_t i = 0;i < n;i++){
97+
printf("Masukkan data: ");
98+
scanf("%d",&deret[i]);
99+
}
100+
int result_beda = beda(deret);
101+
printf("beda sebuah deret: %d\n",result_beda);
102+
printf("\n");
103+
r_suku_n(deret);
104+
printf("\n");
105+
int x;
106+
printf("masukkan suku ke n: ");
107+
scanf("%d",&x);
108+
int result_sukun = suku_n(deret,x,n);
109+
printf("\n");
110+
printf("nilai suku ke-n %d",result_sukun);
111+
free(deret);
112+
return 0;
113+
}

0 commit comments

Comments
 (0)