Memahami contoh program array C dan penjelasannya adalah langkah fundamental dalam mempelajari struktur data. Array merupakan salah satu konsep paling penting dalam pemrograman C yang memungkinkan penyimpanan multiple data dengan tipe yang sama dalam satu variabel. Artikel ini akan membahas berbagai contoh program array mulai dari yang sederhana hingga kompleks, lengkap dengan penjelasan detail dan implementasi praktis.
Apa itu Array dalam Bahasa C?
Array adalah kumpulan elemen dengan tipe data yang sama yang disimpan dalam lokasi memori yang berurutan. Setiap elemen dalam array dapat diakses menggunakan indeks yang dimulai dari 0. Array sangat berguna untuk menyimpan dan mengelola data dalam jumlah besar dengan efisien.
Visualisasi Array
• Akses data yang cepat menggunakan indeks
• Penyimpanan data yang efisien dalam memori
• Mudah untuk iterasi dan manipulasi data
• Mendukung operasi matematika dan logika
• Dasar untuk struktur data yang lebih kompleks
Sintaks Dasar Array dalam C
Sebelum mempelajari contoh program, penting untuk memahami sintaks dasar deklarasi dan inisialisasi array:
tipe_data nama_array[ukuran];// Contoh deklarasi
int angka[5]; // Array integer dengan 5 elemen
float nilai[10]; // Array float dengan 10 elemen
char huruf[26]; // Array karakter dengan 26 elemen// Inisialisasi array
int data[] = {1, 2, 3, 4, 5};
int matrix[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}};
Contoh Program Array C #1: Array Satu Dimensi Dasar
Mari mulai dengan contoh program array satu dimensi yang paling sederhana:
// Deklarasi dan inisialisasi array
int angka[5] = {10, 20, 30, 40, 50};
int i;// Menampilkan elemen array
printf(“=== ISI ARRAY ===\n”);
for (i = 0; i < 5; i++) {
printf(“angka[%d] = %d\n”, i, angka[i]);
}// Menghitung jumlah total
int total = 0;
for (i = 0; i < 5; i++) {
total += angka[i];
}
printf(“\nJumlah total: %d\n”, total);
printf(“Rata-rata: %.2f\n”, (float)total / 5);
return 0;
}
=== ISI ARRAY ===
angka[0] = 10
angka[1] = 20
angka[2] = 30
angka[3] = 40
angka[4] = 50Jumlah total: 150
Rata-rata: 30.00
• Array
angka[5]
dideklarasikan dengan 5 elemen• Inisialisasi dilakukan bersamaan dengan deklarasi
• Loop for digunakan untuk mengakses setiap elemen
• Indeks array dimulai dari 0 hingga n-1
• Perhitungan total dan rata-rata menggunakan akumulasi
Contoh Program Array C #2: Input Array dari User
Program berikut mendemonstrasikan cara menerima input array dari pengguna:
int n, i;// Input ukuran array
printf(“Masukkan jumlah elemen array: “);
scanf(“%d”, &n);int data[n]; // Variable Length Array (VLA)
// Input elemen array
printf(“Masukkan %d elemen:\n”, n);
for (i = 0; i < n; i++) {
printf(“Elemen ke-%d: “, i + 1);
scanf(“%d”, &data[i]);
}
// Menampilkan array
printf(“\n=== ARRAY YANG DIMASUKKAN ===\n”);
for (i = 0; i < n; i++) {
printf(“%d “, data[i]);
}
// Mencari nilai maksimum dan minimum
int max = data[0], min = data[0];
for (i = 1; i < n; i++) {
if (data[i] > max) max = data[i];
if (data[i] < min) min = data[i];
}
printf(“\n\nNilai maksimum: %d\n”, max);
printf(“Nilai minimum: %d\n”, min);
return 0;
}
Masukkan jumlah elemen array: 4
Masukkan 4 elemen:
Elemen ke-1: 25
Elemen ke-2: 10
Elemen ke-3: 35
Elemen ke-4: 15=== ARRAY YANG DIMASUKKAN ===
25 10 35 15Nilai maksimum: 35
Nilai minimum: 10
Contoh Program Array C #3: Pencarian dalam Array
Untuk mempelajari algoritma pencarian yang lebih advanced, Anda bisa mengikuti Algoritma Pencarian dan Sorting di Kelas Programmer.
int data[] = {15, 23, 8, 42, 17, 31, 9, 25};
int ukuran = sizeof(data) / sizeof(data[0]);
int cari, i, ditemukan = 0, posisi = -1;// Menampilkan array
printf(“Array: “);
for (i = 0; i < ukuran; i++) {
printf(“%d “, data[i]);
}// Input nilai yang dicari
printf(“\n\nMasukkan nilai yang dicari: “);
scanf(“%d”, &cari);
// Pencarian linear
for (i = 0; i < ukuran; i++) {
if (data[i] == cari) {
ditemukan = 1;
posisi = i;
break; // Keluar dari loop jika ditemukan
}
}
// Menampilkan hasil
if (ditemukan) {
printf(“Nilai %d ditemukan pada indeks ke-%d\n”, cari, posisi);
printf(“Posisi dalam array: %d\n”, posisi + 1);
} else {
printf(“Nilai %d tidak ditemukan dalam array\n”, cari);
}
// Menghitung berapa kali nilai muncul
int jumlah = 0;
for (i = 0; i < ukuran; i++) {
if (data[i] == cari) {
jumlah++;
}
}
if (jumlah > 0) {
printf(“Nilai %d muncul sebanyak %d kali\n”, cari, jumlah);
}
return 0;
}
Array: 15 23 8 42 17 31 9 25Masukkan nilai yang dicari: 23
Nilai 23 ditemukan pada indeks ke-1
Posisi dalam array: 2
Nilai 23 muncul sebanyak 1 kali
Contoh Program Array C #4: Sorting Array (Bubble Sort)
int i, j, temp;for (i = 0; i < n – 1; i++) {
for (j = 0; j < n – i – 1; j++) {
if (arr[j] > arr[j + 1]) {
// Tukar elemen
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}void tampilkanArray(int arr[], int n) {
int i;
for (i = 0; i < n; i++) {
printf(“%d “, arr[i]);
}
printf(“\n”);
}
int main() {
int data[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(data) / sizeof(data[0]);
printf(“Array sebelum sorting:\n”);
tampilkanArray(data, n);
// Melakukan bubble sort
bubbleSort(data, n);
printf(“Array setelah sorting:\n”);
tampilkanArray(data, n);
// Mencari median
float median;
if (n % 2 == 0) {
median = (data[n/2 – 1] + data[n/2]) / 2.0;
} else {
median = data[n/2];
}
printf(“Median: %.1f\n”, median);
return 0;
}
Array sebelum sorting:
64 34 25 12 22 11 90
Array setelah sorting:
11 12 22 25 34 64 90
Median: 25.0
Contoh Program Array C #5: Array Dua Dimensi (Matrix)
Array dua dimensi atau matrix sangat berguna untuk menyimpan data dalam bentuk tabel:
int matrix[3][3];
int i, j;
int jumlah_baris[3] = {0};
int jumlah_kolom[3] = {0};
int total = 0;// Input elemen matrix
printf(“Masukkan elemen matrix 3×3:\n”);
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf(“Matrix[%d][%d]: “, i, j);
scanf(“%d”, &matrix[i][j]);
}
}// Menampilkan matrix
printf(“\n=== MATRIX 3×3 ===\n”);
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf(“%4d “, matrix[i][j]);
}
printf(“\n”);
}
// Menghitung jumlah per baris dan kolom
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
jumlah_baris[i] += matrix[i][j];
jumlah_kolom[j] += matrix[i][j];
total += matrix[i][j];
}
}
// Menampilkan hasil perhitungan
printf(“\n=== ANALISIS MATRIX ===\n”);
for (i = 0; i < 3; i++) {
printf(“Jumlah baris %d: %d\n”, i + 1, jumlah_baris[i]);
}
printf(“\n”);
for (j = 0; j < 3; j++) {
printf(“Jumlah kolom %d: %d\n”, j + 1, jumlah_kolom[j]);
}
printf(“\nTotal semua elemen: %d\n”, total);
printf(“Rata-rata: %.2f\n”, (float)total / 9);
return 0;
}
Masukkan elemen matrix 3×3:
Matrix[0][0]: 1
Matrix[0][1]: 2
Matrix[0][2]: 3
Matrix[1][0]: 4
Matrix[1][1]: 5
Matrix[1][2]: 6
Matrix[2][0]: 7
Matrix[2][1]: 8
Matrix[2][2]: 9=== MATRIX 3×3 ===
1 2 3
4 5 6
7 8 9=== ANALISIS MATRIX ===
Jumlah baris 1: 6
Jumlah baris 2: 15
Jumlah baris 3: 24Jumlah kolom 1: 12
Jumlah kolom 2: 15
Jumlah kolom 3: 18
Total semua elemen: 45
Rata-rata: 5.00
Contoh Program Array C #6: Manipulasi String (Array Karakter)
String dalam C adalah array karakter yang diakhiri dengan null terminator (\0):
#include <string.h>int hitungKarakter(char str[], char c) {
int count = 0, i;
for (i = 0; str[i] != ‘\0’; i++) {
if (str[i] == c) count++;
}
return count;
}void balikString(char str[]) {
int len = strlen(str);
int i;
char temp;for (i = 0; i < len / 2; i++) {
temp = str[i];
str[i] = str[len – 1 – i];
str[len – 1 – i] = temp;
}
}
int main() {
char kalimat[100];
char cari;
int i, vokal = 0, konsonan = 0;
printf(“Masukkan kalimat: “);
fgets(kalimat, sizeof(kalimat), stdin);
// Menghilangkan newline dari fgets
kalimat[strcspn(kalimat, “\n”)] = 0;
printf(“Kalimat asli: %s\n”, kalimat);
printf(“Panjang string: %d karakter\n”, (int)strlen(kalimat));
// Menghitung vokal dan konsonan
for (i = 0; kalimat[i] != ‘\0’; i++) {
char c = kalimat[i];
if ((c >= ‘a’ && c <= ‘z’) || (c >= ‘A’ && c <= ‘Z’)) {
if (c == ‘a’ || c == ‘e’ || c == ‘i’ || c == ‘o’ || c == ‘u’ ||
c == ‘A’ || c == ‘E’ || c == ‘I’ || c == ‘O’ || c == ‘U’) {
vokal++;
} else {
konsonan++;
}
}
}
printf(“Jumlah vokal: %d\n”, vokal);
printf(“Jumlah konsonan: %d\n”, konsonan);
// Mencari karakter tertentu
printf(“Masukkan karakter yang dicari: “);
scanf(” %c”, &cari);
int jumlah = hitungKarakter(kalimat, cari);
printf(“Karakter ‘%c’ muncul %d kali\n”, cari, jumlah);
// Membalik string
balikString(kalimat);
printf(“String terbalik: %s\n”, kalimat);
return 0;
}
Masukkan kalimat: Hello World
Kalimat asli: Hello World
Panjang string: 11 karakter
Jumlah vokal: 3
Jumlah konsonan: 7
Masukkan karakter yang dicari: l
Karakter ‘l’ muncul 3 kali
String terbalik: dlroW olleH
Contoh Program Array C #7: Array Struktur
Untuk memahami konsep struktur data yang lebih kompleks, silakan pelajari Struktur Data Advanced di Kelas Programmer.
#include <string.h>struct Mahasiswa {
char nama[50];
char nim[15];
float ipk;
int semester;
};void tampilkanMahasiswa(struct Mahasiswa mhs[], int n) {
int i;
printf(“\n=== DATA MAHASISWA ===\n”);
printf(“%-20s %-12s %-6s %-8s\n”, “Nama”, “NIM”, “IPK”, “Semester”);
printf(“—————————————————-\n”);for (i = 0; i < n; i++) {
printf(“%-20s %-12s %-6.2f %-8d\n”,
mhs[i].nama, mhs[i].nim, mhs[i].ipk, mhs[i].semester);
}
}
float hitungRataIPK(struct Mahasiswa mhs[], int n) {
float total = 0;
int i;
for (i = 0; i < n; i++) {
total += mhs[i].ipk;
}
return total / n;
}
int cariMahasiswaTerbaik(struct Mahasiswa mhs[], int n) {
int terbaik = 0;
int i;
for (i = 1; i < n; i++) {
if (mhs[i].ipk > mhs[terbaik].ipk) {
terbaik = i;
}
}
return terbaik;
}
int main() {
struct Mahasiswa mahasiswa[3];
int i;
// Input data mahasiswa
printf(“=== INPUT DATA MAHASISWA ===\n”);
for (i = 0; i < 3; i++) {
printf(“\nMahasiswa ke-%d:\n”, i + 1);
printf(“Nama: “);
scanf(“%s”, mahasiswa[i].nama);
printf(“NIM: “);
scanf(“%s”, mahasiswa[i].nim);
printf(“IPK: “);
scanf(“%f”, &mahasiswa[i].ipk);
printf(“Semester: “);
scanf(“%d”, &mahasiswa[i].semester);
}
// Menampilkan data
tampilkanMahasiswa(mahasiswa, 3);
// Analisis data
float rataIPK = hitungRataIPK(mahasiswa, 3);
int indexTerbaik = cariMahasiswaTerbaik(mahasiswa, 3);
printf(“\n=== ANALISIS ===\n”);
printf(“Rata-rata IPK: %.2f\n”, rataIPK);
printf(“Mahasiswa terbaik: %s (IPK: %.2f)\n”,
mahasiswa[indexTerbaik].nama, mahasiswa[indexTerbaik].ipk);
// Menghitung mahasiswa per semester
int semester_count[9] = {0}; // Asumsi maksimal semester 8
for (i = 0; i < 3; i++) {
if (mahasiswa[i].semester >= 1 && mahasiswa[i].semester <= 8) {
semester_count[mahasiswa[i].semester]++;
}
}
printf(“\nDistribusi per semester:\n”);
for (i = 1; i <= 8; i++) {
if (semester_count[i] > 0) {
printf(“Semester %d: %d mahasiswa\n”, i, semester_count[i]);
}
}
return 0;
}
Contoh Program Array C #8: Operasi Matrix
int i, j;
printf(“Masukkan elemen %s (%dx%d):\n”, nama, baris, 3);
for (i = 0; i < baris; i++) {
for (j = 0; j < 3; j++) {
printf(“%s[%d][%d]: “, nama, i, j);
scanf(“%d”, &matrix[i][j]);
}
}
}void tampilkanMatrix(int matrix[][3], int baris, char nama[]) {
int i, j;
printf(“\n%s:\n”, nama);
for (i = 0; i < baris; i++) {
for (j = 0; j < 3; j++) {
printf(“%4d “, matrix[i][j]);
}
printf(“\n”);
}
}void tambahMatrix(int a[][3], int b[][3], int hasil[][3], int baris) {
int i, j;
for (i = 0; i < baris; i++) {
for (j = 0; j < 3; j++) {
hasil[i][j] = a[i][j] + b[i][j];
}
}
}
void transposeMatrix(int matrix[][3], int transpose[][3], int baris) {
int i, j;
for (i = 0; i < baris; i++) {
for (j = 0; j < 3; j++) {
transpose[j][i] = matrix[i][j];
}
}
}
int main() {
int matrixA[3][3], matrixB[3][3];
int hasil[3][3], transpose[3][3];
// Input matrix A dan B
inputMatrix(matrixA, 3, “Matrix A”);
inputMatrix(matrixB, 3, “Matrix B”);
// Menampilkan matrix asli
tampilkanMatrix(matrixA, 3, “Matrix A”);
tampilkanMatrix(matrixB, 3, “Matrix B”);
// Penjumlahan matrix
tambahMatrix(matrixA, matrixB, hasil, 3);
tampilkanMatrix(hasil, 3, “Matrix A + B”);
// Transpose matrix A
transposeMatrix(matrixA, transpose, 3);
tampilkanMatrix(transpose, 3, “Transpose Matrix A”);
// Mencari determinan matrix 3×3 (Matrix A)
int det = matrixA[0][0] * (matrixA[1][1] * matrixA[2][2] – matrixA[1][2] * matrixA[2][1])
– matrixA[0][1] * (matrixA[1][0] * matrixA[2][2] – matrixA[1][2] * matrixA[2][0])
+ matrixA[0][2] * (matrixA[1][0] * matrixA[2][1] – matrixA[1][1] * matrixA[2][0]);
printf(“\nDeterminan Matrix A: %d\n”, det);
return 0;
}
Contoh Program Array C #9: Array Dinamis dengan Malloc
#include <stdlib.h>int main() {
int n, i;
int *array;
int pilihan, nilai, posisi;// Input ukuran array
printf(“Masukkan ukuran array: “);
scanf(“%d”, &n);// Alokasi memori dinamis
array = (int*)malloc(n * sizeof(int));
if (array == NULL) {
printf(“Error: Gagal mengalokasi memori!\n”);
return 1;
}
// Input elemen array
printf(“Masukkan %d elemen:\n”, n);
for (i = 0; i < n; i++) {
printf(“Elemen ke-%d: “, i + 1);
scanf(“%d”, &array[i]);
}
do {
// Menu operasi
printf(“\n=== MENU OPERASI ARRAY ===\n”);
printf(“1. Tampilkan array\n”);
printf(“2. Cari nilai\n”);
printf(“3. Update nilai\n”);
printf(“4. Hitung statistik\n”);
printf(“5. Keluar\n”);
printf(“Pilihan: “);
scanf(“%d”, &pilihan);
switch (pilihan) {
case 1:
printf(“Array: “);
for (i = 0; i < n; i++) {
printf(“%d “, array[i]);
}
printf(“\n”);
break;
case 2:
printf(“Masukkan nilai yang dicari: “);
scanf(“%d”, &nilai);
int ditemukan = 0;
for (i = 0; i < n; i++) {
if (array[i] == nilai) {
printf(“Nilai %d ditemukan pada indeks %d\n”, nilai, i);
ditemukan = 1;
}
}
if (!ditemukan) {
printf(“Nilai %d tidak ditemukan\n”, nilai);
}
break;
case 3:
printf(“Masukkan posisi (0-%d): “, n-1);
scanf(“%d”, &posisi);
if (posisi >= 0 && posisi < n) {
printf(“Nilai lama: %d\n”, array[posisi]);
printf(“Masukkan nilai baru: “);
scanf(“%d”, &array[posisi]);
printf(“Nilai berhasil diupdate!\n”);
} else {
printf(“Posisi tidak valid!\n”);
}
break;
case 4:
// Hitung statistik
int sum = 0, max = array[0], min = array[0];
for (i = 0; i < n; i++) {
sum += array[i];
if (array[i] > max) max = array[i];
if (array[i] < min) min = array[i];
}
printf(“=== STATISTIK ARRAY ===\n”);
printf(“Jumlah: %d\n”, sum);
printf(“Rata-rata: %.2f\n”, (float)sum / n);
printf(“Maksimum: %d\n”, max);
printf(“Minimum: %d\n”, min);
break;
case 5:
printf(“Terima kasih!\n”);
break;
default:
printf(“Pilihan tidak valid!\n”);
}
} while (pilihan != 5);
// Bebaskan memori
free(array);
return 0;
}
Contoh Program Array C #10: Histogram dan Analisis Data
Untuk mempelajari teknik analisis data yang lebih mendalam, kunjungi Data Analysis Programming di Kelas Programmer.
int data[] = {85, 92, 78, 96, 87, 91, 83, 88, 94, 79,
90, 86, 82, 95, 89, 77, 93, 84, 81, 97};
int n = sizeof(data) / sizeof(data[0]);
int histogram[11] = {0}; // 70-79, 80-89, 90-99
int i, j;printf(“=== DATA NILAI MAHASISWA ===\n”);
printf(“Jumlah data: %d\n”, n);// Menampilkan data
printf(“Data: “);
for (i = 0; i < n; i++) {
printf(“%d “, data[i]);
if ((i + 1) % 10 == 0) printf(“\n “);
}
printf(“\n”);
// Membuat histogram berdasarkan rentang nilai
for (i = 0; i < n; i++) {
if (data[i] >= 70 && data[i] <= 79) {
histogram[0]++;
} else if (data[i] >= 80 && data[i] <= 89) {
histogram[1]++;
} else if (data[i] >= 90 && data[i] <= 99) {
histogram[2]++;
}
}
// Menampilkan histogram
printf(“\n=== HISTOGRAM NILAI ===\n”);
printf(“70-79: “);
for (j = 0; j < histogram[0]; j++) printf(“*”);
printf(” (%d)\n”, histogram[0]);
printf(“80-89: “);
for (j = 0; j < histogram[1]; j++) printf(“*”);
printf(” (%d)\n”, histogram[1]);
printf(“90-99: “);
for (j = 0; j < histogram[2]; j++) printf(“*”);
printf(” (%d)\n”, histogram[2]);
// Analisis statistik
int sum = 0, max = data[0], min = data[0];
for (i = 0; i < n; i++) {
sum += data[i];
if (data[i] > max) max = data[i];
if (data[i] < min) min = data[i];
}
float rata = (float)sum / n;
// Hitung standar deviasi
float variance = 0;
for (i = 0; i < n; i++) {
variance += (data[i] – rata) * (data[i] – rata);
}
variance /= n;
printf(“\n=== ANALISIS STATISTIK ===\n”);
printf(“Rata-rata: %.2f\n”, rata);
printf(“Nilai tertinggi: %d\n”, max);
printf(“Nilai terendah: %d\n”, min);
printf(“Range: %d\n”, max – min);
printf(“Variance: %.2f\n”, variance);
// Menentukan grade distribusi
int lulus = 0;
for (i = 0; i < n; i++) {
if (data[i] >= 75) lulus++;
}
printf(“\n=== HASIL EVALUASI ===\n”);
printf(“Mahasiswa lulus (≥75): %d dari %d (%.1f%%)\n”,
lulus, n, (float)lulus / n * 100);
printf(“Mahasiswa tidak lulus: %d dari %d (%.1f%%)\n”,
n – lulus, n, (float)(n – lulus) / n * 100);
return 0;
}
=== DATA NILAI MAHASISWA ===
Jumlah data: 20
Data: 85 92 78 96 87 91 83 88 94 79
90 86 82 95 89 77 93 84 81 97=== HISTOGRAM NILAI ===
70-79: ** (2)
80-89: ********* (9)
90-99: ********* (9)=== ANALISIS STATISTIK ===
Rata-rata: 87.60
Nilai tertinggi: 97
Nilai terendah: 77
Range: 20
Variance: 32.44=== HASIL EVALUASI ===
Mahasiswa lulus (≥75): 20 dari 20 (100.0%)
Mahasiswa tidak lulus: 0 dari 20 (0.0%)
Tips dan Best Practices Array dalam C
• Selalu inisialisasi array sebelum digunakan
• Periksa batas array untuk menghindari buffer overflow
• Gunakan konstanta untuk ukuran array yang tetap
• Bebaskan memori dinamis dengan free() setelah selesai
• Gunakan fungsi untuk operasi array yang kompleks
• Dokumentasikan tujuan dan struktur array dalam komentar
Tabel Perbandingan Jenis Array
Jenis Array | Deklarasi | Keunggulan | Kekurangan |
---|---|---|---|
Static Array | int arr[10]; | Cepat, sederhana | Ukuran tetap |
Dynamic Array | int *arr = malloc(n*sizeof(int)); | Ukuran fleksibel | Perlu manajemen memori |
VLA (Variable Length) | int arr[n]; | Ukuran runtime | Terbatas pada fungsi |
Multidimensional | int arr[3][4]; | Struktur data kompleks | Konsumsi memori besar |
Common Errors dan Debugging
• Array Index Out of Bounds: Mengakses indeks di luar batas array
• Uninitialized Array: Menggunakan array tanpa inisialisasi
• Memory Leak: Tidak membebaskan memori dinamis
• Buffer Overflow: Menulis data melebihi kapasitas array
• Wrong Size Calculation: Salah menghitung ukuran array
Contoh Debugging Array
int arr[5];
for (i = 0; i <= 5; i++) { // Error: i=5 keluar batas
arr[i] = i;
}// ✅ BENAR – Periksa batas array
int arr[5];
for (i = 0; i < 5; i++) { // Benar: i < 5
arr[i] = i;
}// ❌ SALAH – Memory leak
int *ptr = malloc(10 * sizeof(int));
// … menggunakan ptr …
// Lupa free(ptr);// ✅ BENAR – Proper memory management
int *ptr = malloc(10 * sizeof(int));
if (ptr != NULL) {
// … menggunakan ptr …
free(ptr);
ptr = NULL;
}
Latihan dan Exercise
Cobalah buat program array C untuk:
- Mencari elemen terbesar kedua dalam array
- Menggabungkan dua array yang sudah terurut
- Mencari pasangan elemen yang jumlahnya sama dengan target
- Merotasi array ke kiri atau kanan sebanyak n posisi
- Mencari subarray dengan jumlah maksimum
- Menghapus duplikat dari array
- Implementasi stack menggunakan array
- Mencari intersection dari dua array
Contoh Solusi: Mencari Elemen Terbesar Kedua
#include <limits.h>int cariTerbesarKedua(int arr[], int n) {
int terbesar = INT_MIN, terbesarKedua = INT_MIN;
int i;for (i = 0; i < n; i++) {
if (arr[i] > terbesar) {
terbesarKedua = terbesar;
terbesar = arr[i];
} else if (arr[i] > terbesarKedua && arr[i] != terbesar) {
terbesarKedua = arr[i];
}
}return terbesarKedua;
}
int main() {
int data[] = {12, 35, 1, 10, 34, 1};
int n = sizeof(data) / sizeof(data[0]);
int hasil = cariTerbesarKedua(data, n);
if (hasil != INT_MIN) {
printf(“Elemen terbesar kedua: %d\n”, hasil);
} else {
printf(“Tidak ada elemen terbesar kedua\n”);
}
return 0;
}
❓ Frequently Asked Questions (FAQ)
Kesimpulan
Contoh program array C dan penjelasannya yang telah dibahas dalam artikel ini memberikan pemahaman komprehensif tentang penggunaan array dalam pemrograman C. Mulai dari array satu dimensi sederhana hingga implementasi struktur data yang kompleks, setiap contoh dirancang untuk membangun skill programming secara bertahap.
• Array adalah struktur data fundamental yang wajib dikuasai
• Pahami perbedaan array statis, dinamis, dan multidimensi
• Selalu perhatikan batas array untuk menghindari error
• Praktikkan berbagai algoritma sorting dan searching
• Gunakan array untuk memecahkan masalah real-world
• Kombinasikan array dengan struktur data lain untuk solusi optimal
Penguasaan array dalam bahasa C akan menjadi fondasi kuat untuk mempelajari struktur data yang lebih advanced seperti linked list, stack, queue, dan tree. Terus berlatih dengan berbagai variasi soal dan implementasi untuk meningkatkan kemampuan problem-solving Anda. Array bukan hanya sekedar penyimpanan data, tetapi juga alat powerful untuk mengorganisir dan memanipulasi informasi secara efisien.
Contoh Program Array C dan Penjelasannya: Panduan Lengkap untuk Pemula
Memahami contoh program array C dan penjelasannya adalah langkah fundamental dalam mempelajari struktur data. Array merupakan salah satu konsep paling penting dalam pemrograman C yang memungkinkan penyimpanan multiple data dengan tipe yang sama dalam satu variabel. Artikel ini akan membahas berbagai contoh program array mulai dari yang sederhana hingga kompleks, lengkap dengan penjelasan detail dan implementasi praktis.
Apa itu Array dalam Bahasa C?
Array adalah kumpulan elemen dengan tipe data yang sama yang disimpan dalam lokasi memori yang berurutan. Setiap elemen dalam array dapat diakses menggunakan indeks yang dimulai dari 0. Array sangat berguna untuk menyimpan dan mengelola data dalam jumlah besar dengan efisien.
💡 Keunggulan Array:
• Akses data yang cepat menggunakan indeks
• Penyimpanan data yang efisien dalam memori
• Mudah untuk iterasi dan manipulasi data
• Mendukung operasi matematika dan logika
• Dasar untuk struktur data yang lebih kompleks
Sintaks Dasar Array dalam C
Sebelum mempelajari contoh program, penting untuk memahami sintaks dasar deklarasi dan inisialisasi array:
// Deklarasi array
tipe_data nama_array[ukuran];
// Contoh deklarasi
int angka[5]; // Array integer dengan 5 elemen
float nilai[10]; // Array float dengan 10 elemen
char huruf[26]; // Array karakter dengan 26 elemen
// Inisialisasi array
int data[] = {1, 2, 3, 4, 5};
int matrix[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}};
Contoh Program Array C #1: Array Satu Dimensi Dasar
Mari mulai dengan contoh program array satu dimensi yang paling sederhana:
📊 Program Array Dasar
#include <stdio.h>
int main() {
// Deklarasi dan inisialisasi array
int angka[5] = {10, 20, 30, 40, 50};
int i;
// Menampilkan elemen array
printf("=== ISI ARRAY ===\n");
for (i = 0; i < 5; i++) {
printf("angka[%d] = %d\n", i, angka[i]);
}
// Menghitung jumlah total
int total = 0;
for (i = 0; i < 5; i++) {
total += angka[i];
}
printf("\nJumlah total: %d\n", total);
printf("Rata-rata: %.2f\n", (float)total / 5);
return 0;
}
Output:
=== ISI ARRAY ===
angka[0] = 10
angka[1] = 20
angka[2] = 30
angka[3] = 40
angka[4] = 50
Jumlah total: 150
Rata-rata: 30.00
Penjelasan Program:
• Arrayangka[5]
dideklarasikan dengan 5 elemen
• Inisialisasi dilakukan bersamaan dengan deklarasi
• Loop for digunakan untuk mengakses setiap elemen
• Indeks array dimulai dari 0 hingga n-1
• Perhitungan total dan rata-rata menggunakan akumulasi
Contoh Program Array C #2: Input Array dari User
Program berikut mendemonstrasikan cara menerima input array dari pengguna:
⌨️ Program Input Array Dinamis
#include <stdio.h>
int main() {
int n, i;
// Input ukuran array
printf("Masukkan jumlah elemen array: ");
scanf("%d", &n);
int data[n]; // Variable Length Array (VLA)
// Input elemen array
printf("Masukkan %d elemen:\n", n);
for (i = 0; i < n; i++) {
printf("Elemen ke-%d: ", i + 1);
scanf("%d", &data[i]);
}
// Menampilkan array
printf("\n=== ARRAY YANG DIMASUKKAN ===\n");
for (i = 0; i < n; i++) {
printf("%d ", data[i]);
}
// Mencari nilai maksimum dan minimum
int max = data[0], min = data[0];
for (i = 1; i < n; i++) { if (data[i] > max) max = data[i];
if (data[i] < min) min = data[i];
}
printf("\n\nNilai maksimum: %d\n", max);
printf("Nilai minimum: %d\n", min);
return 0;
}
Output (contoh input):
Masukkan jumlah elemen array: 4
Masukkan 4 elemen:
Elemen ke-1: 25
Elemen ke-2: 10
Elemen ke-3: 35
Elemen ke-4: 15
=== ARRAY YANG DIMASUKKAN ===
25 10 35 15
Nilai maksimum: 35
Nilai minimum: 10
Contoh Program Array C #3: Pencarian dalam Array
Untuk mempelajari algoritma pencarian yang lebih advanced, Anda bisa mengikuti Algoritma Pencarian dan Sorting di Kelas Programmer.
🔍 Program Pencarian Linear
#include <stdio.h>
int main() {
int data[] = {15, 23, 8, 42, 17, 31, 9, 25};
int ukuran = sizeof(data) / sizeof(data[0]);
int cari, i, ditemukan = 0, posisi = -1;
// Menampilkan array
printf("Array: ");
for (i = 0; i < ukuran; i++) {
printf("%d ", data[i]);
}
// Input nilai yang dicari
printf("\n\nMasukkan nilai yang dicari: ");
scanf("%d", &cari);
// Pencarian linear
for (i = 0; i < ukuran; i++) {
if (data[i] == cari) {
ditemukan = 1;
posisi = i;
break; // Keluar dari loop jika ditemukan
}
}
// Menampilkan hasil
if (ditemukan) {
printf("Nilai %d ditemukan pada indeks ke-%d\n", cari, posisi);
printf("Posisi dalam array: %d\n", posisi + 1);
} else {
printf("Nilai %d tidak ditemukan dalam array\n", cari);
}
// Menghitung berapa kali nilai muncul
int jumlah = 0;
for (i = 0; i < ukuran; i++) { if (data[i] == cari) { jumlah++; } } if (jumlah > 0) {
printf("Nilai %d muncul sebanyak %d kali\n", cari, jumlah);
}
return 0;
}
Output (contoh input 23):
Array: 15 23 8 42 17 31 9 25
Masukkan nilai yang dicari: 23
Nilai 23 ditemukan pada indeks ke-1
Posisi dalam array: 2
Nilai 23 muncul sebanyak 1 kali
Contoh Program Array C #4: Sorting Array (Bubble Sort)
🔄 Program Sorting Bubble Sort
#include <stdio.h>
void bubbleSort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) {
// Tukar elemen
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
void tampilkanArray(int arr[], int n) {
int i;
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int data[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(data) / sizeof(data[0]);
printf("Array sebelum sorting:\n");
tampilkanArray(data, n);
// Melakukan bubble sort
bubbleSort(data, n);
printf("Array setelah sorting:\n");
tampilkanArray(data, n);
// Mencari median
float median;
if (n % 2 == 0) {
median = (data[n/2 - 1] + data[n/2]) / 2.0;
} else {
median = data[n/2];
}
printf("Median: %.1f\n", median);
return 0;
}
Output:
Array sebelum sorting:
64 34 25 12 22 11 90
Array setelah sorting:
11 12 22 25 34 64 90
Median: 25.0
Contoh Program Array C #5: Array Dua Dimensi (Matrix)
Array dua dimensi atau matrix sangat berguna untuk menyimpan data dalam bentuk tabel:
📋 Program Matrix 3×3
#include <stdio.h>
int main() {
int matrix[3][3];
int i, j;
int jumlah_baris[3] = {0};
int jumlah_kolom[3] = {0};
int total = 0;
// Input elemen matrix
printf("Masukkan elemen matrix 3x3:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("Matrix[%d][%d]: ", i, j);
scanf("%d", &matrix[i][j]);
}
}
// Menampilkan matrix
printf("\n=== MATRIX 3x3 ===\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("%4d ", matrix[i][j]);
}
printf("\n");
}
// Menghitung jumlah per baris dan kolom
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
jumlah_baris[i] += matrix[i][j];
jumlah_kolom[j] += matrix[i][j];
total += matrix[i][j];
}
}
// Menampilkan hasil perhitungan
printf("\n=== ANALISIS MATRIX ===\n");
for (i = 0; i < 3; i++) {
printf("Jumlah baris %d: %d\n", i + 1, jumlah_baris[i]);
}
printf("\n");
for (j = 0; j < 3; j++) {
printf("Jumlah kolom %d: %d\n", j + 1, jumlah_kolom[j]);
}
printf("\nTotal semua elemen: %d\n", total);
printf("Rata-rata: %.2f\n", (float)total / 9);
return 0;
}
Contoh Program Array C #6: Manipulasi String (Array Karakter)
String dalam C adalah array karakter yang diakhiri dengan null terminator (\0):
🔤 Program Manipulasi String
#include <stdio.h>
#include <string.h>
int hitungKarakter(char str[], char c) {
int count = 0, i;
for (i = 0; str[i] != '\0'; i++) {
if (str[i] == c) count++;
}
return count;
}
void balikString(char str[]) {
int len = strlen(str);
int i;
char temp;
for (i = 0; i < len / 2; i++) { temp = str[i]; str[i] = str[len - 1 - i]; str[len - 1 - i] = temp; } } int main() { char kalimat[100]; char cari; int i, vokal = 0, konsonan = 0; printf("Masukkan kalimat: "); fgets(kalimat, sizeof(kalimat), stdin); // Menghilangkan newline dari fgets kalimat[strcspn(kalimat, "\n")] = 0; printf("Kalimat asli: %s\n", kalimat); printf("Panjang string: %d karakter\n", (int)strlen(kalimat)); // Menghitung vokal dan konsonan for (i = 0; kalimat[i] != '\0'; i++) { char c = kalimat[i]; if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' ||
c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U') {
vokal++;
} else {
konsonan++;
}
}
}
printf("Jumlah vokal: %d\n", vokal);
printf("Jumlah konsonan: %d\n", konsonan);
// Mencari karakter tertentu
printf("Masukkan karakter yang dicari: ");
scanf(" %c", &cari);
int jumlah = hitungKarakter(kalimat, cari);
printf("Karakter '%c' muncul %d kali\n", cari, jumlah);
// Membalik string
balikString(kalimat);
printf("String terbalik: %s\n", kalimat);
return 0;
}
Contoh Program Array C #7: Array Struktur
Untuk memahami konsep struktur data yang lebih kompleks, silakan pelajari Struktur Data Advanced di Kelas Programmer.
👥 Program Array Struktur Mahasiswa
#include <stdio.h>
#include <string.h>
struct Mahasiswa {
char nama[50];
char nim[15];
float ipk;
int semester;
};
void tampilkanMahasiswa(struct Mahasiswa mhs[], int n) {
int i;
printf("\n=== DATA MAHASISWA ===\n");
printf("%-20s %-12s %-6s %-8s\n", "Nama", "NIM", "IPK", "Semester");
printf("----------------------------------------------------\n");
for (i = 0; i < n; i++) {
printf("%-20s %-12s %-6.2f %-8d\n",
mhs[i].nama, mhs[i].nim, mhs[i].ipk, mhs[i].semester);
}
}
float hitungRataIPK(struct Mahasiswa mhs[], int n) {
float total = 0;
int i;
for (i = 0; i < n; i++) {
total += mhs[i].ipk;
}
return total / n;
}
int cariMahasiswaTerbaik(struct Mahasiswa mhs[], int n) {
int terbaik = 0;
int i;
for (i = 1; i < n; i++) { if (mhs[i].ipk > mhs[terbaik].ipk) {
terbaik = i;
}
}
return terbaik;
}
int main() {
struct Mahasiswa mahasiswa[3];
int i;
// Input data mahasiswa
printf("=== INPUT DATA MAHASISWA ===\n");
for (i = 0; i < 3; i++) {
printf("\nMahasiswa ke-%d:\n", i + 1);
printf("Nama: ");
scanf("%s", mahasiswa[i].nama);
printf("NIM: ");
scanf("%s", mahasiswa[i].nim);
printf("IPK: ");
scanf("%f", &mahasiswa[i].ipk);
printf("Semester: ");
scanf("%d", &mahasiswa[i].semester);
}
// Menampilkan data
tampilkanMahasiswa(mahasiswa, 3);
// Analisis data
float rataIPK = hitungRataIPK(mahasiswa, 3);
int indexTerbaik = cariMahasiswaTerbaik(mahasiswa, 3);
printf("\n=== ANALISIS ===\n");
printf("Rata-rata IPK: %.2f\n", rataIPK);
printf("Mahasiswa terbaik: %s (IPK: %.2f)\n",
mahasiswa[indexTerbaik].nama, mahasiswa[indexTerbaik].ipk);
return 0;
}
Contoh Program Array C #8: Histogram dan Analisis Data
Untuk mempelajari teknik analisis data yang lebih mendalam, kunjungi Data Analysis Programming di Kelas Programmer.
📊 Program Histogram Data
#include <stdio.h>
int main() {
int data[] = {85, 92, 78, 96, 87, 91, 83, 88, 94, 79,
90, 86, 82, 95, 89, 77, 93, 84, 81, 97};
int n = sizeof(data) / sizeof(data[0]);
int histogram[11] = {0}; // 70-79, 80-89, 90-99
int i, j;
printf("=== DATA NILAI MAHASISWA ===\n");
printf("Jumlah data: %d\n", n);
// Menampilkan data
printf("Data: ");
for (i = 0; i < n; i++) {
printf("%d ", data[i]);
if ((i + 1) % 10 == 0) printf("\n ");
}
printf("\n");
// Membuat histogram berdasarkan rentang nilai
for (i = 0; i < n; i++) { if (data[i] >= 70 && data[i] <= 79) { histogram[0]++; } else if (data[i] >= 80 && data[i] <= 89) { histogram[1]++; } else if (data[i] >= 90 && data[i] <= 99) {
histogram[2]++;
}
}
// Menampilkan histogram
printf("\n=== HISTOGRAM NILAI ===\n");
printf("70-79: ");
for (j = 0; j < histogram[0]; j++) printf("*");
printf(" (%d)\n", histogram[0]);
printf("80-89: ");
for (j = 0; j < histogram[1]; j++) printf("*");
printf(" (%d)\n", histogram[1]);
printf("90-99: ");
for (j = 0; j < histogram[2]; j++) printf("*");
printf(" (%d)\n", histogram[2]);
// Analisis statistik
int sum = 0, max = data[0], min = data[0];
for (i = 0; i < n; i++) { sum += data[i]; if (data[i] > max) max = data[i];
if (data[i] < min) min = data[i];
}
float rata = (float)sum / n;
printf("\n=== ANALISIS STATISTIK ===\n");
printf("Rata-rata: %.2f\n", rata);
printf("Nilai tertinggi: %d\n", max);
printf("Nilai terendah: %d\n", min);
printf("Range: %d\n", max - min);
// Menentukan grade distribusi
int lulus = 0;
for (i = 0; i < n; i++) { if (data[i] >= 75) lulus++;
}
printf("\n=== HASIL EVALUASI ===\n");
printf("Mahasiswa lulus (≥75): %d dari %d (%.1f%%)\n",
lulus, n, (float)lulus / n * 100);
printf("Mahasiswa tidak lulus: %d dari %d (%.1f%%)\n",
n - lulus, n, (float)(n - lulus) / n * 100);
return 0;
}
Tips dan Best Practices Array dalam C
🎯 Best Practices Array:
• Selalu inisialisasi array sebelum digunakan
• Periksa batas array untuk menghindari buffer overflow
• Gunakan konstanta untuk ukuran array yang tetap
• Bebaskan memori dinamis dengan free() setelah selesai
• Gunakan fungsi untuk operasi array yang kompleks
• Dokumentasikan tujuan dan struktur array dalam komentar
Tabel Perbandingan Jenis Array
Jenis Array | Deklarasi | Keunggulan | Kekurangan |
---|---|---|---|
Static Array | int arr[10]; | Cepat, sederhana | Ukuran tetap |
Dynamic Array | int *arr = malloc(n*sizeof(int)); | Ukuran fleksibel | Perlu manajemen memori |
VLA (Variable Length) | int arr[n]; | Ukuran runtime | Terbatas pada fungsi |
Multidimensional | int arr[3][4]; | Struktur data kompleks | Konsumsi memori besar |
Common Errors dan Debugging
⚠️ Error Umum dalam Array:
• Array Index Out of Bounds: Mengakses indeks di luar batas array
• Uninitialized Array: Menggunakan array tanpa inisialisasi
• Memory Leak: Tidak membebaskan memori dinamis
• Buffer Overflow: Menulis data melebihi kapasitas array
• Wrong Size Calculation: Salah menghitung ukuran array
Contoh Debugging Array
// ❌ SALAH - Array index out of bounds
int arr[5];
for (i = 0; i <= 5; i++) { // Error: i=5 keluar batas
arr[i] = i;
}
// ✅ BENAR - Periksa batas array
int arr[5];
for (i = 0; i < 5; i++) { // Benar: i < 5
arr[i] = i;
}
// ❌ SALAH - Memory leak
int *ptr = malloc(10 * sizeof(int));
// ... menggunakan ptr ...
// Lupa free(ptr);
// ✅ BENAR - Proper memory management
int *ptr = malloc(10 * sizeof(int));
if (ptr != NULL) {
// ... menggunakan ptr ...
free(ptr);
ptr = NULL;
}
Latihan dan Exercise
💪 Latihan Mandiri
Cobalah buat program array C untuk:
1. Mencari elemen terbesar kedua dalam array
2. Menggabungkan dua array yang sudah terurut
3. Mencari pasangan elemen yang jumlahnya sama dengan target
4. Merotasi array ke kiri atau kanan sebanyak n posisi
5. Mencari subarray dengan jumlah maksimum
6. Menghapus duplikat dari array
7. Implementasi stack menggunakan array
8. Mencari intersection dari dua array
Contoh Solusi: Mencari Elemen Terbesar Kedua
#include <stdio.h>
#include <limits.h>
int cariTerbesarKedua(int arr[], int n) {
int terbesar = INT_MIN, terbesarKedua = INT_MIN;
int i;
for (i = 0; i < n; i++) { if (arr[i] > terbesar) {
terbesarKedua = terbesar;
terbesar = arr[i];
} else if (arr[i] > terbesarKedua && arr[i] != terbesar) {
terbesarKedua = arr[i];
}
}
return terbesarKedua;
}
int main() {
int data[] = {12, 35, 1, 10, 34, 1};
int n = sizeof(data) / sizeof(data[0]);
int hasil = cariTerbesarKedua(data, n);
if (hasil != INT_MIN) {
printf("Elemen terbesar kedua: %d\n", hasil);
} else {
printf("Tidak ada elemen terbesar kedua\n");
}
return 0;
}
❓ Frequently Asked Questions (FAQ)
Q: Apa perbedaan antara array dan pointer dalam bahasa C?
A: Array adalah kumpulan elemen dengan tipe sama yang disimpan berurutan, sedangkan pointer adalah variabel yang menyimpan alamat memori. Array name adalah pointer konstan ke elemen pertama, namun pointer dapat diubah untuk menunjuk ke alamat lain.
Q: Bagaimana cara mengetahui ukuran array dalam C?
A: Gunakan sizeof(array)/sizeof(array[0]) untuk array statis. Untuk array dinamis, Anda harus menyimpan ukurannya dalam variabel terpisah karena sizeof() akan mengembalikan ukuran pointer, bukan array.
Q: Mengapa indeks array dimulai dari 0 bukan 1?
A: Indeks array dimulai dari 0 karena indeks merepresentasikan offset dari alamat base array. Elemen pertama berada di alamat base + 0, elemen kedua di base + 1*sizeof(type), dan seterusnya.
Q: Apa itu buffer overflow dan bagaimana mencegahnya?
A: Buffer overflow terjadi ketika program menulis data melebihi batas array. Pencegahan: sel