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