TUJUAN
Mahasiswa mampu menerapkan konsep stack untuk persamaan matematis
Percobaan 1: Persamaan Matematis dalam Program yang Membingungkan
Salin dan jalankan coding berikut ini kemudian beri komentar pada setiap baris coding.
#include <stdio.h> #include <conio.h> #define MAX 5 struct stack { char kur; struct stack *next; }; struct stack *ujung,*temp; int j=0; char kode; void push(char xp) { if (j==0) { ujung=(struct stack*)malloc(sizeof(struct stack)); ujung->kur=xp; //hasil push masuk ke sini ujung->next=NULL; } else { temp=(struct stack*)malloc(sizeof(struct stack)); temp->kur=xp; temp->next=ujung; //hasil push masuk ke sini ujung=temp; } j++; } void pop() { //printf("\n Data stack [%d] : %c",ujung->atas,ujung->data); kode=ujung->kur; //ambil data buka kurung temp=ujung; ujung=ujung->next; free(temp); //return kode; } void tampil() { while(ujung!=NULL) { pop(); } } int cek(char c) { //char m; //m=c; //char s; //printf("%c",s); if(c=='(') return 1; else if (c=='{') return 1; else if (c=='[') return 1; else if(c==')') return 2; else if (c=='}') return 2; else if(c==']') return 2; else return 0; } int valid(char v) { pop(); if(kode=='('&&v==')') return 1; else if(kode=='{'&&v=='}') return 1; else if (kode=='['&&v==']') return 1; else return 0; //jika buka kurung sesuai dengan tutup kurung, return 1. jika tidak return 0 } void main() { char dat; int l; printf("Program checking persamaan matematis\n"); printf("====================================\n"); printf("Masukkan persamaan matematis dengan kesalahan tanda kurung, misal (a+b*(c+b)]\n"); while((dat=getche())!=13) { //1=dat; //printf("%c",dat); if(cek(dat)==1) //jika dat = salah satu jenis buka kurung { push(dat); //push dat } if(cek(dat)==2) //jika dat = salah satu jenis tutup kurung { if(valid(dat)==1) { continue; //jika valid, continue } else { printf("Anda salah!"); //print jika tutup kurung tidak sesuai getch(); } } } }
Dari percobaan yang telah dilakukan, jawab pertanyaan berikut ini:
- Tampilkan hasil program setelah dijalankan
- Deskripsikan fungsi program tersebut
Program ini mencari typo dalam pengetikan tanda kurung dalam operasi aritmatika.
fungsi cek() digunakan untuk menentukan apakah input merupakan tutup kurung, buka kurung, atau bukan
fungsi push() digunakan untuk menyimpan buka kurung
fungsi valid() digunakan untuk membandingkan kurung yang disimpan dengan push() dengan kurung penutup.
fimgsi pop() digunakan untuk mengambil buka kurung dari struct. - Gambarkan flowchart dari program tersebut dengan benar [100]
Incoming Terms
- Laporan Praktikum Modul Matematis