C++

Program konversi postfik ke infiks dengan C++

Posted on Updated on


Pada artikel ini saya akan membahas tentang program yang saya buat yaitu program konversi notasi postfik ke dalam notasi infik,, konversi postfik ke infik ini merupakan salah satu aplikasi dari penggunaan stack. yang agak rumit di program ini adalah mengatur tampilan programnya.(bikin saya nangis bombay)hahaa,,,lebay.langsung aja kita liat listingnya:

#include <iostream.h>

#include <conio.h>

#include <stdlib.h>

#include <stdio.h>

#include <string.h>

int karakter,top2,maks,pindah,top,i,j,a,b;

char ulang;

char infiks[20];

char postfiks[20];

char stack2[10];

char hasil[20];

void konversi(int y){

int a,z;

int b = 0;

pindah = 0;

top2 = 0;

fflush(stdin);

for(i=0;i<y;i++){

z = 0;

if(infiks[i]=='(‘){

stack2[top2]=infiks[i];

top2 = top2 + 1;

}

else if(infiks[i]==’)’){

a = top2 – 1;

while(stack2[a]!='(‘){

if(a < 0){

break;

}

else{

hasil[b]=stack2[a];

b = b+1;

a = a-1;

top2 = top2 – 1;

}

}

if(a < 0){

gotoxy(3,15);printf(“hasil : error => (kurang kurung buka)”);

break;

}

top2 = top2 – 1;

}

else if(infiks[i]==’+’){

if((stack2[top2-1]==’-‘)||(stack2[top2-1]==’*’)||(stack2[top2-1]==’/’)||(stack2[top2-1]==’^’)){

hasil[b]=stack2[top2-1];

b = b+1;

stack2[top2-1]=infiks[i];

}

else{

stack2[top2]=infiks[i];

top2 = top2 + 1;

}

}

else if(infiks[i]==’-‘){

if((stack2[top2-1]==’+’)||(stack2[top2-1]==’*’)||(stack2[top2-1]==’/’)||(stack2[top2-1]==’^’)){

hasil[b]=stack2[top2-1];

b = b+1;

stack2[top2-1]=infiks[i];

}

else{

stack2[top2]=infiks[i];

top2 = top2 + 1;

}

}

else if(infiks[i]==’*’){

if((stack2[top2-1]==’/’)||(stack2[top2-1]==’^’)){

hasil[b]=stack2[top2-1];

b = b+1;

stack2[top2-1]=infiks[i];

}

else{

stack2[top2]=infiks[i];

top2 = top2 + 1;

}

}

else if(infiks[i]==’/’){

if((stack2[top2-1]==’*’)||(stack2[top2-1]==’^’)){

hasil[b]=stack2[top2-1];

b = b+1;

stack2[top2-1]=infiks[i];

}

else{

stack2[top2]=infiks[i];

top2 = top2 + 1;

}

}

else if(infiks[i]==’^’){

if(stack2[top2-1]==’^’){

hasil[b]=stack2[top2-1];

b = b+1;

stack2[top2-1]=infiks[i];

}

else{

stack2[top2]=infiks[i];

top2 = top2 + 1;

}

}

else if(infiks[i]==’;’){

if(top2>0){

a = top2 – 1;

while(a>=0){

if(stack2[a]=='(‘){

gotoxy(3,15);printf(“hasil : error => (kurang kurung tutup)”);

a = a-1;

break;

}

else{

hasil[b]=stack2[a];

b = b+1;

a = a-1;

top2 = top2 – 1;

}

}

}

}

else{

hasil[b]=infiks[i];

b = b+1;

}

gotoxy(3+(i*2),7);cout<<“–“;

gotoxy(3+(i*2),8);cout<<infiks[i];

gotoxy(3+(i*2),9);cout<<“–“;

for(j=(top2-1);j>=0;j–){

gotoxy(3+(i*2),10+z);cout<<stack2[j];

z++;

}

}

gotoxy(3,15);cout<<“hasil :  “;

for(i=0;i<b;i++){

gotoxy(11+i,15);cout<<hasil[i];

}

}

void main(){

do{

for(i=0;i<20;i++){

gotoxy(1,i);cout<<”                                                                        “;

}

maks=0;

top =0;

gotoxy(3,4);printf(“Masukan statement infix (akhiri dengan tanda ;): “);

gotoxy(3,5);cin>>infiks;

karakter = strlen(infiks);

konversi(karakter);

gotoxy(3,17);cout<<“ulangi program[Y/T]: “;cin>>ulang;

}

while(ulang==’y’||ulang==’Y’);

}

output program:

demikian program konversi postfik ke infiks yang saya buat, semoga bisa bermanfaat, ^_^ jangan lupa comment..



Web development jakarta

Iklan

Program animasi operasi stack dengan C++

Posted on Updated on


wahh udah lama nih ga curhat di blog hehee,, lagi jamannya ujian sihh..

oke,,

Pada artikel ini saya akan membahas tentang program simulasi stack dengan menggunakan C++, stack adalah salah satu struktur data pada komputer,, disebut juga dengan tumpukan,, program ini adalah tugas dari dosen mata kuliah strujtur data saya,langsung saja kita lihat listingnya :

#include <iostream.h>

#include <conio.h>

#include <stdlib.h>

#include <stdio.h>

#include <string.h>

int maks,top,pil,karakter,i;

int top2;

char elemen,aa,bb;

char stack[20];

char infiks[20];

char postfiks[20];

char stack2[10];

char hasil[20];

void delay();

void create(int x){

top = 0;

gotoxy(50,3);printf(”                      “);

for(i=0;i<100;i++){

gotoxy(59,4+i);printf(”      “);

}

if(x<=20){

for(i=0;i<=x;i++){

if(i==x){

gotoxy(60,4+i);printf(“—“);

}

else{

gotoxy(59,4+i);printf(“|   |”);

}

}

}

}

void push(char aa){

gotoxy(50,2);printf(”                                “);

if(top == maks){

gotoxy(53,2);printf(“—-OVERFLOW—-“);

}

else{

stack[top]=aa;

for(i=0;i<11;i++){

gotoxy(50+i,3);cout<<” “;

gotoxy(51+i,3);cout<<aa;

delay();

}

for(i=0;i<(maks-top);i++){

gotoxy(61,3+i);cout<<” “;

gotoxy(61,4+i);cout<<aa;

delay();

}

top = top + 1;

}

}

void pop(){

gotoxy(50,2);printf(”                               “);

if(top == 0){

gotoxy(53,2);printf(“—-UNDERFLOW—-“);

}

else{

bb = stack[top-1];

for(i=(maks-(top-1));i>0;i–){

gotoxy(61,3+i);cout<<” “;

gotoxy(61,2+i);cout<<bb;

delay();

}

for(i=10;i<21;i++){

gotoxy(50+i,3);cout<<” “;

gotoxy(51+i,3);cout<<bb;

delay();

}

gotoxy(71,3);printf(” “);

top = top – 1;

}

}

void main(){

maks = 0;

top = 0;

do{

gotoxy(3,1);printf(“====================================”);

gotoxy(3,2);printf(”         PROGRAM STACK 2IA01        “);

gotoxy(3,3);printf(“====================================”);

gotoxy(4,4);printf(“1 : BUAT STACK BARU (CREATE)”);

gotoxy(4,5);printf(“2 : TAMBAH ELEMEN (PUSH)”);

gotoxy(4,6);printf(“3 : HAPUS ELEMEN (POP)”);

gotoxy(4,7);printf(“4 : KELUAR”);

gotoxy(3,9);printf(“====================================”);

for(i=10;i<20;i++){

gotoxy(3,i);printf(”                                                 “);

}

gotoxy(3,10);printf(“Masukan pilihan : “);cin>>pil;

switch(pil){

case 1:{

gotoxy(3,12);printf(“Masukan kapasitas stack (maksimal 20) : “);cin>>maks;

create(maks);

break;

}

case 2:{

if(maks==0){

gotoxy(3,12);printf(“Stack belum dibuat.Create stack terlebih dahulu”);

getch();

}

else{

gotoxy(3,12);printf(“masukan satu karakter : “);cin>>elemen;

push(elemen);

}

break;

}

case 3:{

if(maks==0){

gotoxy(3,12);printf(“Stack belum dibuat.Create stack terlebih dahulu”);

getch();

}

else{

pop();

}

break;

}

}

}

while(pil!=4);

}

void delay()

{

for(int y=1;y<100;y++)

for(int x=1;x<100;x++)

for(int p=1;p<30;p++)

cout<<“”;

}

output program:

hehe,, agak panjang ya listingnya,,

tapi program ini akan sangat berguna bagi anda yang sulit mengerti tentang operasi – operasi yang ada pada stack,, karena program ini mensimulasikan operasi – operasi yang ada pada stack dengan sedikit animasi, sehingga anda akan cepat mengerti begaimana sebenarnya cara kerja suatu stack itu.

buat anda yang males copas listingnya,, bisa langsung download aja programnya disini

demikian sedikit penjelasan dari saya semoga bermanfaat^_^ jangan lupa comment ya..



Web development jakarta

Program Flip Flop Dengan C++

Posted on Updated on


Pada Post kali ini saya akan membahas tentang program untuk menentukan hasil dari berbagai mode operasi flip flop dari beberapa jenis flip flop (SR flip flop, CSR flip flop, dan JK Flip Flop).

Menurut wikipedia indonesia Flip-flop adalah rangkaian digital yang digunakan untuk menyimpan satu bit data secara semi permanen sampai ada suatu perintah untuk menghapus atau mengganti isi dari bit yang tersimpan tersebut. Prinsip dasar dari flip-flop adalah suatu komponen elektronika dasar seperti transistor, resistor dan dioda yang di rangkai menjadi suatu gerbang logika yang dapat bekerja secara sekuensial.

Dengan program yang akan dibahas kali ini, kita dapat menentukan hasil dari berbagai mode operasi yang dilakukan.Listing program dibuat dengan menggunakan C++.

download listing program disini

Output Program:



Web development jakarta

PROGRAM PETA KARNAUGH DENGAN C++

Posted on Updated on


outputnya hampir sama sama yang di lab,, ini ga sampe 100 line listingnya.bedanya sama yang di lab, yang ini cuma nampilin hasil pertamanya aja, belom disederhanain.



Web development jakarta

listing program bisa di download disini.

output program:

Operator logika pada c++

Posted on Updated on


pada posting kali ini,, saya share  program untuk melakukan operasi logika pada c++,, operasi logika yang dibahas antara lain AND, OR, NAND(Not And), NOR(Not Or), XOR(Exclusive Or),dan XNOR(Exclusive Not Or).

  1. AND, bernilai benar jika semua kondisi bernilai benar.
  2. OR, bernilai benar jka terdapat salah satu kondisi yang bernilai benar.
  3. NAND, bernilai benar jika terdapat salah satu kondisi yang bernilai salah, atau sama dengan melakuakn operasi NOT pada hasil dari operasi AND.
  4. NOR, bernilai benar jika semua kondisi bernilai salah, atau sama dengan melakuakn operasi NOT pada hasil dari operasi AND.
  5. XOR, bernilai benar jika satu kondisi bernilai benar dan satu kondisi bernilai salah.
  6. XNOR, bernilai benar jika semua kondisi bernilai benar atau semua kondisi bernilai salah.

listing program:



Web development jakarta

#include <stdio.h>

#include <conio.h>

void main(){

int a,b,pil;

char ulang;

do{

do{

clrscr();

printf(“masukan dua bilangan biner: \n”);

scanf(“\n%d”,&a);

scanf(“\n%d”,&b);

}

while(!((a==0||a==1)&&(b==0||b==1)));

do{

printf(“\n\n pilih gerbang logika: “);

printf(“\n1 = AND\n2 = OR\n3 = NAND\n4 = NOR\n5 = XOR\n6 = XNOR”);

printf(“\n ————————\n pilihan: “);

scanf(“\n%d”,&pil);

switch(pil){

case 1:{

if((a==1)&&(b==1)){

printf(“\n\n AND \n 1_satisfied”);

}

else{

printf(“\n\n AND \n 0_satisfied”);

}

break;

}

case 2:{

if((a==1)||(b==1)){

printf(“\n\n OR \n 1_satisfied”);

}

else{

printf(“\n\n OR \n 0_satisfied”);

}

break;

}

case 3:{

if(!((a==1)&&(b==1))){

printf(“\n\n NAND \n 1_satisfied”);

}

else{

printf(“\n\n NAND \n 0_satisfied”);

}

break;

}

case 4:{

if(!((a==1)||(b==1))){

printf(“\n\n NOR \n 1_satisfied”);

}

else{

printf(“\n\n NOR \n 0_satisfied”);

}

break;

}

case 5:{

if(((a==0)&&(b==1))||((a==1)&&(b==0))){

printf(“\n\n XOR \n 1_satisfied”);

}

else{

printf(“\n\n XOR \n 0_satisfied”);

}

break;

}

case 6:{

if(((a==0)&&(b==0))||((a==1)&&(b==1))){

printf(“\n\n XNOR \n 1_satisfied”);

}

else{

printf(“\n\n XNOR \n 0_satisfied”);

}

break;

}

default:{

printf(“pilihan tidak tersedia”);

}

}

}

while((pil<1)||(pil>6));

printf(“\n ulang program?? <Y/y>: “);

fflush(stdin);

scanf(“%c”,&ulang);

}

while((ulang==’Y’)||(ulang==’y’));

}

output program: