Minggu, 20 Desember 2015

Program Cari Data Dengan Bahasa C

Pencarian data tidak lepas dengan looping & array. Search juga ada beberapa jenis yaitu pencarian dengan variable logika, tanpa variable logika, & sentinel. Lalu bagaimana membuat itu semua? Saya akan menunjukan beberapa contoh project search dengan 3 jenis itu. Langsung aja!

1. Program pencarian nilai dengan variable logika, dengan menerima masukan data dari user maksimal 100 (banyaknya array) data integer lalu menentukan nilai yang akan dicari dari array tersebut.

Bahasa C :
#include <stdio.h>
int main ()
{
int a [100];
int x;
int s;
int i;
int n;
bool found;

printf ("masukan banyak data: "); scanf("%d",&n);
for (i=0;i<n;i++){
printf("masukan nilai array:");scanf("%d",&a[i]);
}
printf ("masukan nilai yang dicari: "); scanf ("%d",&x);
i=0;
found=false;
while(i<n && !found){
if(x==a[i]){
found=true;
}
else {
i++;
}
}
if (found==true){
printf("ditemukan di elemen ke- %d",i+1);
}
else{
printf("tidak ditemukan");
}
}
*karena ini menggunakan variable logika, maka di kamus terdapat type data boolean dengan variable bernama found. Lalu search juga tidak lepas dengan while.
Output/keluaran :

2. Program cari nilai tanpa variable logika, dengan menerima masukan data dari user maksimal 100 (banyaknya array) data integer lalu menentukan nilai yang akan dicari dari array tersebut.

Bahasa C :
#include<stdio.h>
int main()
{
int a [100];
int x;
int i;
int n;

printf ("masukan banyak data: "); scanf("%d",&n);
for (i=0;i<n;i++){
printf("masukan nilai array:");scanf("%d",&a[i]);
}
printf ("masukan nilai yang dicari: "); scanf ("%d",&x);
i=0;
while(i<n && a[i] != x){
i++;
}
if (a[i]==x){
printf("ditemukan di elemen ke- %d",i+1);
}
else{
printf("tidak ditemukan");
}
return 0;
}
*Perbedaannya jelas terlihat dari pemakaian variable logika saja, disini tidak di pakai jadi langsung saja setalah looping lalu ke kondisi If, lalu menampilkan hasilnya. Output/keluarannya sama saja seperti di soal pertama.

3. Program cari data dengan sentinel, dengan menerima masukan data dari user maksimal 100 (banyaknya array) data integer lalu menentukan nilai yang akan dicari dari array tersebut.

Bahasa C :
#include <stdio.h>
int main ()
{
int a [100];
int x;
int i;
int n;

printf ("masukan banyak data: "); scanf("%d",&n);
for (i=1;i<=n;i++){
printf("masukan nilai array:");scanf("%d",&a[i]);
}
printf ("masukan nilai yang dicari: "); scanf ("%d",&x);
a[n+1]=x;
i=1;
while(a[i] != x ){
i=i+1;
}

if (i != 0){
printf("ditemukan di elemen ke- %d",i);
}
else {
printf("tidak ditemukan");
}
}
*Perbedaannya jelas terletak pada array yang ditambahkan angka 1, & while.
Output/keluaran sama dengan yang diatas.

Di soal yang terakhir ini saya akan membuat program bernama Mata Kulaih, program ini meminta masukan data dari user berupa kode mata kuliah, nama mata kuliah, & jumlah sks. Jumlah data yang dimasukan maksimal 100 (banyak array), lalu meminta cari data berdasarkan kode mata kuliah, & jumlah sks. setelah itu menampilkan hasil cari itu. Saya akan menggunakan pencarian dengan menggunakan variable logika.
Contoh :
Masukan banyaknya data yang akan di input : 2
Data 1:
Kode mata kuliah : 123
Nama mata kuliah : Kalkulus
Jumlah SKS : 3

Data 2:
Kode mata kuliah : 124
Nama mata kuliah : Algoritma dan pemrograman I
Jumlah SKS : 4

Cari data berdasarkan kode : 124
Kode mata kuliah : 124
Nama mata kuliah : Algoritma dan pemrograman I
Jumlah SKS : 4

Cari berdasarkan jumlah SKS : 3
Kode mata kuliah : 123
Nama mata kuliah : Kalkulus
Jumlah SKS : 3

Bahasa C :
#include<stdio.h>
#include<iostream>

using namespace std;

int main()
{
typedef struct {
int kd_mk;
char nama_mk[50];
int jml_sks;
}mk;
mk a[100];
int x;
int i;
int n;
int s;
int d;
bool found;

printf("masukan jumlah data n:");scanf("%d",&n);
for(i=0; i<n; i++){
printf("masukan kode matkul: \n");scanf("%d",&a[i].kd_mk);
printf("masukan nama matkul: \n");scanf("%s",&a[i].nama_mk);
printf("masukan jumlah sks: \n");scanf("%d",&a[i].jml_sks);
}
printf("Cari data berdasarkan kode: \n");scanf("%d",&x);
i=0;
found=false;
while(i<n && !found){
if(a[i].kd_mk==x){
found=true;
}
else{
i=i+1;
}
}
if(a[i].kd_mk==x && found){
printf("nama matkul: %s\n",a[i].nama_mk);
printf("jumlah sks: %d\n",a[i].jml_sks);
}
else{
printf("tidak ditemukan \n");
}
printf("Cari data berdasarkan jumlah sks: \n");scanf("%d",&s);
d=0;
found=false;
while(d<n){
if(s==a[d].jml_sks){
printf("Kode matkul: %d\n",a[d].kd_mk);
printf("nama matkul: %s\n",a[d].nama_mk);
found=true;
}
d++;
}
if(found==false){
printf("tidak ditemukan \n");
}

return 0;
}
*Saya menggunakan typedef struct di programnya, typedef struct adalah type struktur di bahasa C.
Output/keluaran :

Minggu, 13 Desember 2015

Algoritma Array/Larik

Larik adalah struktur data yang statis, artinya, jumlah elemen larik harus sudah diketahui sebelumnya. Jumlah elemen larik tidak bisa diubah, ditambah, dikurangi selama running program. Mendefinisikan banyak elemen larik berarti memesan sejumlah tempat di memori dan memori akan mengalokasikan sejumlah lokasi memori sebanyak elemen larik bersangkutan.
Array tidak lepas dari looping, array juga ada beberapa macam, ada array 1 dimensi(string), ada juga array 2 dimensi(matriks). Lalu bagaimana membuat array 1&2 dimensi?

Contoh soal array 1 dimensi.

1. Menampilkan deret 1,4,9,16,25,... dengan disediakan array sebanyak 10.

Algoritma:
Program array1
Kamus
i : integer
a : array[10] of integer
Algoritma
for i=1 to 10 do
    a[i] <-- i^2
endfor

Bahasa C:
*untuk di bahasa c, pangkat 2 tidak ada maka diganti menjadi kali dengan variabel/bilangan yang sama.
Output/keluaran
2. Meminta masukan nilai dari user sebanyak n buah bilangan, lalu menampilkan nilai terkecil dari 1000 bilangan.

Algoritma:
Program array2
Kamus
n, min, i : integer
a : array[10] of integer
Algoritma
input(n)
for i=1 to n do
      input a[i]
endfor
min <-- 1000
    for 1=1 to n do
        if(min>a[i])then
            min <-- a[i]
endfor
        output(min)
endif

Bahasa C:
Output/keluaran

Contoh soal array 1 dimensi (String).

1. Meminta masukan kalimat dari user lalu minta masukan huruf yang akan dihitung, & menghitung jumlah huruf di dalam kata tersebut.

Algoritma:
Program huruf
Kamus
kalimat : string
hu, hg : character
i ; integer
Algoritma
input(kalimat)
input(hu)
input(hg)
for i=1 to len do
if(kalimat[i]=hu)then
kalimat[i] <-- hg
endif
endfor
output(kalimat)

Bahasa C:

*strlen adalah nama fungsi di bahasa C untuk menghitung banyaknya kata(string).

Output/keluaran:

Contoh soal array 2 dimensi.

1. Buat matriks dengan deret sbb:










Algoritama:
Program buatmatriks
Kamus
array c[4,4] of integer
d, e, f : integer
Algoritma
f <-- 1
for d=1 to 4 do
for e=1 to 4 do
     c[d,e] <-- f
     f <-- f+1
endfor
endfor
for d=1 to 4 do
for e=1 to 4 do
output c[d,e]
endfor
endfor

Bahasa C:




















2. Hitung 2 matriks 3x3 dengan menerima masukan dari user lalu menghitung jumlah, kurang, dan kali matriks tersebut.

Algoritma:
Program hitungmatriks
Kamus
array a[3,3] of integer
array b[3,3] of integer
array c[3,3] of integer
array d[3,3] of integer
array e[3,3] of integer
f, g :integer
Algoritma
for f=1 to 3 do
for g=1 to 3 do
    input a[f,g]
endfor
endfor
for f=1 to 3 do
for g=1 to 3 do
    input b[f,g]
endfor
endfor
for f=1 to 3 do
for g=1 to 3 do
    c[f,g] <-- a[f,g]+b[f,g]
    output c[f,g]
endfor
endfor
for f=1 to 3 do
for g=1 to 3 do
    d[f,g] <-- a[f,g]-b[f,g]
    output d[f,g]
endfor
endfor
for f=1 to 3 do
for g=1 to 3 do
    e[f,g] <-- a[f,g]*b[f,g]
    output e[f,g]
endfor
endfor

Bahasa C:
#include<stdio.h>
#include<iostream>
using namespace std;

int main()
{
int a[3][3];
int b[3][3];
int c[3][3];
int d[3][3];
int e[3][3];
int f;
int g;
int h;
for(f=0; f<3; f++){
for(g=0; g<3; g++){
printf("masukan matriks 1 :"); scanf("%d",& a[f][g]);
}
}
for(f=0; f<3; f++){
for(g=0; g<3; g++){
printf("masukan matriks 2 :"); scanf("%d",& b[f][g]);
}
}
for(f=0; f<3; f++){
for(g=0; g<3; g++){
c[f][g]=a[f][g]+b[f][g];
cout<<c[f][g]<<" ";
}
cout<<"\n";
}
for(f=0; f<3; f++){
for(g=0; g<3; g++){
c[f][g]=a[f][g]-b[f][g];
cout<<c[f][g]<<" ";
}
cout<<"\n";
}
for(f=0; f<3; f++){
for(g=0; g<3; g++){
for(h=0; h<3; h++){
c[f][g]=a[f][g]*b[f][g];
}
cout<<c[f][g]<<" ";
}
cout<<"\n";
}
return 0;
}