Tag Archive: c++


Untuk membuat stack menggunakan linked list

Coba tulis seperti ini :

#include<stdio.h>
#include<stdlib.h>

typedef int ItemType;
typedef struct simpul node;
struct simpul
{
	ItemType item;
	node *next;
};

struct Stack{
	node *TOS;
};

node *baru;

void awal()
{
	puts("===================================================");
	puts("=         PROGRAM STACK DENGAN LINKED LIST        =");
	puts("===================================================\n");
	puts("NRP   :  7411030828");
	puts("Nama  :  M.Faishal Imam Choiri\n");
}

void allocate_node(ItemType x)
{
	baru = (node *) malloc (sizeof(node));
	if(baru==NULL)
	{
		printf("Alokasi Gagal\n");
		exit(1);
	}
	else
	{
		baru->item=x;
		baru->next=NULL;
	}
}

void inisialisasi(Stack *s)
{
	s->TOS = NULL;
}

int kosong(Stack *s)
{
	return s->TOS==NULL;
}

void push(Stack *s)
{
	baru->next = s->TOS;
	s->TOS = baru;
}

ItemType pop(Stack *s)
{
	node *temp;
	if(kosong(s))
	{
		printf("Data Kosong\n");
		return ' ';
	}
	else
	{
		temp = s->TOS;
		s->TOS = s->TOS->next;
		return temp->item;
		free(temp);
		temp=NULL;
	}
}

void tampil(Stack *s)
{
	Stack bantu;
	bantu = *s;
	printf("\nData Simpul ==>  ");
	while(bantu.TOS!=NULL)
	{
		printf("%d ", bantu.TOS->item);
		bantu.TOS = bantu.TOS->next;
	}
	printf("\n\n");
}

void main()
{
	int pilih, data;
	char lagi='y';
	Stack ujung;

	inisialisasi(&ujung);
	while(lagi=='y')
	{
		system("CLS");
		awal();
		//tampil(&ujung);
		printf("Menu Pilihan : \n");
		printf("1. Push\n");
		printf("2. Pop\n");
		printf("3. Tampilkan Stack\n");
		printf("\nPilih No          : ");
		scanf("%d", &pilih);
		switch(pilih)
		{
		case 1:
			printf("Masukkan data     : ");
			scanf("%d", &data);
			allocate_node(data);
			push(&ujung);
			break;
		case 2:
			pop(&ujung);
			break;
		case 3:
			tampil(&ujung);
			break;
		}
		fflush(stdin);
		printf("Lagi (y/t) ? ");
		scanf("%c", &lagi);
	}
}

Untuk penjelasan akan saya jelaskan lain waktu.

Dan contoh programnya bisa di donwload DISINI

Setelah saya posting contoh-contoh program, mungkin beberapa banyak yang belum memiliki aplikasinya,,

jadi saya upload aplikasi VISUAL STUDIO 6.

saat pengisian Serial Number, isi dengan angka 222 – 2222222

untuk link downloadnya : PART 1   &   PART 2

Pengertian shift pada kasus ini yaitu, menjadikan sebuah bilangan desimal inputan menjadi bilangan biner, lalu setelah menjadi biner, akan dilakukan dequeue lalu di enqueue sebanyak shift.

contoh :

bilangan desimal : 25

di shift : 3

maka hasilnya adalah : 7

Kenapa kok bisa 7 ??????

nah, caranya seperti ini……!!!

dari bilangan desimal 25 dikonversikan menjadi biner menjadi 11001

setelah dikonversikan, maka program di shift sebanyak 3x

11001 —> shift pertama, angka 1 yang terakhir di dequeue lalu di enqueue sehingga menjadi 11100

11100 —> shift kedua, angka 0 yang terakhir di dequeue lalu di enqueue sehingga menjadi 01110

01110 —> shift ketiga, angka 0 yang terakhir di dequeue lalu di enqueue sehingga menjadi 00111

setelah selesai menjadi bilangan biner 00111 akan dikonversikan menjadi desimal

1   —>  20 x 1    = 1

1   —>  21 x 1    = 2

1   —>  22 x 1    = 4

0   —>  23 x 0  = 0

0   —>  24 x 0  = 0

———————–  +

                         7

Untuk Skrip Dan Juga Contoh Programnya bisa di download DISINI

Membuat Program POLINOMIAL…

dengan memanfaatkan penggunaan array, polinomial bisa dibuat dengan code seperti dibawah ini :

 

 

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

void awal()
{
puts(“======================================”);
puts(” PROGRAM POLINOMIAL “);
puts(“======================================\n”);
puts(“NRP : 7411030828”);
puts(“Nama : M.Faishal Imam Choiri\n”);
puts(“Diketahui : 1. P1 = 6x^8 + 8x^7 + 5x^5 + x^3 + 15″);
puts(” 2. P2 = 3x^9 + 4x^7 + 3x^4 + 2x^3 + 2x^2 + 10″);
puts(” 3. P3 = x^2 + 5\n”);
puts(“Operasi : 1. Penjumlahan”);
puts(” 2. Pengurangan”);
puts(” 3. Perkalian”);
puts(” 4. Turunan\n”);
}

float tambah (int P1[], int P2[], int x)
{
float hasil=0;
for(int i=0; i<10; i++)
hasil += (P1[i]+P2[i]) * (float) pow(x,i);
return hasil;
}

float kurang (int P1[], int P2[], int x)
{
float hasil=0;
for(int i=0; i<10; i++)
hasil += (P1[i]-P2[i]) * (float) pow(x,i);
return hasil;
}

float kali(int P1[], int P2[], int x)
{
float hasil=0;
for(int i=0; i<10; i++)
{
for(int j=0; j<10; j++)
hasil += P1[i] * P2[j] * (float) pow(x,(i+j));
}
return hasil;
}

float turun(int P1[], int x)
{
float hasil=0;
for(int i=0; i<10; i++)
hasil = hasil + P1[i] * i * (float) pow(x,i-1);
return hasil;
}
void pilihan()
{
int operasi, pil1, pil2, x;
float hasil, hasil2;
int P1[10] = {15,0,0,1,0,5,0,8,6,0};
int P2[10] = {10,0,2,2,3,0,0,4,0,3};
int P3[10] = {5,0,1,0,0,0,0,0,0,0};

do{
printf(“Masukkan Jenis Operasi : “);
scanf(“%d”, &operasi);
} while(operasi>4 || operasi<1);

do{
printf(“Pilih Polinomial Pertama : “);
scanf(“%d”, &pil1);
} while(pil1>3 || pil1<1);

do{
printf(“Pilih Polinomial Kedua : “);
scanf(“%d”, &pil2);
} while(pil2>3 || pil2<1);

printf(“Masukkan Nilai x : “);
scanf(“%d”, &x);

if(operasi==1) /* OPERASI PENJUMLAHAN */
{
switch(pil1)
{
case 1 :
switch(pil2)
{
case 1 :
hasil = tambah(P1,P1,x);
break;
case 2 :
hasil = tambah(P1,P2,x);
break;
case 3 :
hasil = tambah(P1,P3,x);
break;
}
break;
case 2 :
switch(pil2)
{
case 1 :
hasil = tambah(P2,P1,x);
break;
case 2 :
hasil = tambah(P2,P2,x);
break;
case 3 :
hasil = tambah(P2,P3,x);
break;
}
break;
case 3 :
switch(pil2)
{
case 1 :
hasil = tambah(P3,P1,x);
break;
case 2 :
hasil = tambah(P3,P2,x);
break;
case 3 :
hasil = tambah(P3,P3,x);
break;
}
break;
}
}
else if(operasi==2) /* OPERASI PENGURANGAN */
{
switch(pil1)
{
case 1 :
switch(pil2)
{
case 1 :
hasil = kurang(P1,P1,x);
break;
case 2 :
hasil = kurang(P1,P2,x);
break;
case 3 :
hasil = kurang(P1,P3,x);
break;
}
break;
case 2 :
switch(pil2)
{
case 1 :
hasil = kurang(P2,P1,x);
break;
case 2 :
hasil = kurang(P2,P2,x);
break;
case 3 :
hasil = kurang(P2,P3,x);
break;
}
break;
case 3 :
switch(pil2)
{
case 1 :
hasil = kurang(P3,P1,x);
break;
case 2 :
hasil = kurang(P3,P2,x);
break;
case 3 :
hasil = kurang(P3,P3,x);
break;
}
break;
}
}
else if(operasi==3) /* OPERASI PERKALIAN */
{
switch(pil1)
{
case 1 :
switch(pil2)
{
case 1 :
hasil = kali(P1,P1,x);
break;
case 2 :
hasil = kali(P1,P2,x);
break;
case 3 :
hasil = kali(P1,P3,x);
break;
}
break;
case 2 :
switch(pil2)
{
case 1 :
hasil = kali(P2,P1,x);
break;
case 2 :
hasil = kali(P2,P2,x);
break;
case 3 :
hasil = kali(P2,P3,x);
break;
}
break;
case 3 :
switch(pil2)
{
case 1 :
hasil = kali(P3,P1,x);
break;
case 2 :
hasil = kali(P3,P2,x);
break;
case 3 :
hasil = kali(P3,P3,x);
break;
}
break;
}
}

else /* OPERASI PENURUNAN */
{
switch(pil1)
{
case 1 :
hasil = turun(P1,x);
break;
case 2 :
hasil = turun(P2,x);
break;
case 3 :
hasil = turun(P3,x);
break;
}
switch(pil2)
{
case 1 :
hasil2 = turun(P1,x);
break;
case 2 :
hasil2 = turun(P2,x);
break;
case 3 :
hasil2 = turun(P3,x);
break;
}
}

if(operasi<4)
printf(“Hasil = %8.2f\n\n”, hasil);
else
{
printf(“Hasil Pertama = %8.2f\n”, hasil);
printf(“Hasil Kedua = %8.2f\n\n”, hasil2);
}
}

void main()
{
char lagi=’y’;

do{
system(“CLS”);
awal();
pilihan();
printf(“Apakah Mengulang (y/n) ? “);
fflush(stdin);
scanf(“%c”, &lagi);
}
while(lagi==’y’ || lagi==’Y’);
}

untuk link download Programnya Disini