• Tidak ada hasil yang ditemukan

REVIEW dan Latihan Soal

Dalam dokumen Algoritma Pemrograman dan Struktur Data (Halaman 68-78)

Buatlah function pangkat dengan input a dan b untuk menghitung a^b. Function ini mengembalikan (return) hasil perhitungan kepada function yang memanggilnya.

Contoh : 3^4 = 3 x 3 x 3 x 3 = 81 4^3= 4 x 4 x 4 = 64. Contoh Codingnya: #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <ctype.h> #include <string.h> int main () { int a,b,c,d ;

printf("Masukan Angka A: ");scanf("%d", &a); printf("Masukan Angka B: ");scanf("%d", &b); d=1; c=1; while (d <= b){ d=d+1; c=c*a; } printf("\nNilai = %d",c); getch (); return 0;

}

Buatlah function faktorial dengan input bilangan bulat positif a. Function ini mengembalikan (return) hasil perhitungan kepada function yang memanggilnya. “a!” dibaca “Faktorial dari

a” Contoh : 3! = 3 x 2 x 1 = 6 5! = 5 x 4 x 3 x 2 x 1 = 120 contoh codingnya: #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <ctype.h> #include <string.h> int main () { int a,b,c,d ;

printf("Masukan Angka A: ");scanf("%d", &a); d=1; c=1; b=a; while (d <= a) { d=d+1; c=c*b; b=b-1; } printf("\nnilai = %d",c); getch (); return 0; }

Buatlah program Penjumlahan 2 Matriks berukuran sama yang masing-masing berukuran tidak lebih dari 10 x 10

# include <stdio.h> # include <conio.h>

void isi_matriks (int a[10][10], int brs, int klm) { int i, j, posisi_brs; printf("\nMatriks %d x %d\n", brs, klm); posisi_brs = wherey(); for (i = 0; i < brs; i++) { for (j = 0; j < klm; j++) { gotoxy(j * 5 + 1, posisi_brs); scanf("%d", &a[i][j]); } posisi_brs++; } printf("\n"); }

void jumlah_matriks (int a[10][10], int b[10][10], int c[10][10], int brs, int klm) {

int i, j;

for (i = 0; i < brs; i++) for (j = 0; j < klm; j++) c [i] [j] = a[i][j] + b[i][j]; }

void cetak_matriks (int a[10][10], int brs, int klm) { int i, j; for (i = 0; i < brs; i++) { for (j = 0; j < klm; j++) printf("%3d ", a[i][j]); printf("\n"); } } int main () {

int mat_a[10][10], mat_b[10][10], mat_c[10][10]; int baris, kolom;

printf("ukuran baris ? "); scanf("%d", &baris); printf("ukuran kolom ? "); scanf("%d", &kolom); isi_matriks(mat_a, baris, kolom);

isi_matriks(mat_b, baris, kolom);

printf("\nHasil jumlah:\n");

cetak_matriks(mat_c, baris, kolom); fflush(stdin); getchar();

return 0; }

Buatlah algoritma dan program untuk menampilkan 10 bilangan secara menurun yaitu 10, 9, 8, 7, ..., 1 dengan menggunakan linked list.

Algoritma :

1. Tentukan struktur untuk menampung data dalam linked list. 2. Tentukan data-data yang akan dimasukkan ke dalam linked list. 3. Lakukan perulangan terhadap semua data.

4. Tampilkan data.

5. Ulangi langkah 3 sampai semua data dimasukkan. 6. Selesai.

Implementasi dari Algoritma di atas pada program adalah sebagai berikut : #include<iostream.h>

typedef struct item { int val;

item * next; } item;

int main() {

item * head = NULL; int i;

for (i=1; i<= 10; i++) { item * curr = new item; curr->val = i; curr->next = head; head = curr; } while (head) { cout << head->val << " ";

head = head->next; }

return 0; }

Buatlah algoritma dan program untuk memasukkan dan mengeluarkan data dalam antrian. Algoritma dari permasalahan di atas adalah :

1. Deklarasikan elemen yang akan dimasukkan dalam antrian. 2. Deklarasikan struktur untuk menampung elemen tersebut. 3. Tentukan fungsi untuk memasukkan elemen pada antrian. 4. Tentukan fungsi untuk mengambil elemen dari antrian.

5. Tentukan fungsi untuk menampilkan semua elemen pada antrian.

6. Masukkan huruf ke dalam antrian. Jika huruf yang dimasukkan selain huruf x dan angka 1, kerjakan langkah 3.

7. Jika yang dimasukkan adalah angka 1, kerjakan langkah 5. 8. Jika yang dimasukkan adalah huruf x maka kerjakan langkah 9. 9. Selesai.

Code Programnya adalah : #include <stdio.h>

#include <conio.h> typedef char Titem; // The interface of queue #define MAXN 5

typedef enum {NOT_OK, OK } Tboolean; typedef struct {

Titem array [MAXN]; int first;

int last;

int number_of_items; } Tqueue;

void initialize_queue (Tqueue *Pqueue); Tboolean enqueue (Tqueue *p, Titem item);

Tboolean dequeue (Tqueue *p, Titem *Pitem); void print_queue(const Tqueue *Pqueue); // Application #include <ctype.h> void main(void) { Tqueue queue; Tboolean succeed; char chr; initialize_queue(&queue);

printf("\nMasukkan sebuah huruf untuk masuk dalam antrian ");

printf("\natau Tekan angka 1 untuk mengeluarkan sebuah huruf dalam antrian"); printf("\natau Tekan angka X untuk keluar\n");

chr = getche(); while (chr != 10 && chr != 13) { if (isalpha (chr)) { succeed=enqueue(&queue, chr); print_queue(&queue); if (!succeed)

printf("\n Enqueue operation failed\n"); } if (chr == '1') { succeed = dequeue(&queue, &chr);

if (succeed) {

printf("\n huruf keluar dari antrian %c", chr); print_queue(&queue); }

else printf("\nDequeue operation failed\n "); } chr = getche(); } }

// The implementations of operation functions of the queue void initialize_queue (Tqueue *Pqueue) {

Pqueue->first = 0; Pqueue -> last = -1;

Pqueue -> number_of_items = 0; }

Tboolean enqueue ( Tqueue *Pqueue, Titem item) { if (Pqueue -> number_of_items >= MAXN)

return (NOT_OK); else {

if (Pqueue -> last > MAXN -1) Pqueue -> last = 0;

Pqueue -> array[Pqueue->last] = item; Pqueue -> number_of_items++; return (OK); } }

Tboolean dequeue(Tqueue *Pqueue, Titem *Pitem) { if (Pqueue -> number_of_items == 0)

return (NOT_OK); else {

*Pitem = Pqueue -> array[Pqueue->first++]; if (Pqueue -> first > MAXN -1)

Pqueue -> first = 0;

Pqueue -> number_of_items--; return (OK); } }

void print_queue (const Tqueue *Pqueue) { int i, n; printf("\nQueue now: \n\n");

for (n=1, i=Pqueue->first ; n <= Pqueue->number_of_items; n++) { printf(" %c ", Pqueue -> array[i] ) ;

i++;

if (i>MAXN-1) i= 0; } printf("\n\n"); }

Buatlah algoritma dan program untuk memasukkan 10 buah data dengan menggunakan metode bubble sort dan tampilkan data tersebut secara ascending. Input data terserah. Algoritma :

1. Tentukan data-data yang akan diurutkan dan disimpan dalam suatu array. 2. Lakukan pengulangan dari data-data tersebut.

3. Lakukan pembandingan antara data yang satu dengan data yang lain, dimana kalau data yang satu lebih kecil dari data yang lain, maka posisinya ditukar. Kalau tidak, posisinya tetap.

4. Tampilkan data hasil pembandingan.

5. Ulangi langkah 3, sampai semua data dibandingkan. 6. Selesai.

//Program:bubblesortascending.cpp # include <iostream.h>

# include <conio.h>

void bubble_sort(long [],int); main()

{ clrscr();

const int array_size=10; long array[array_size]={0};

cout<<"\n * Array size = 10" <<endl; cout<<"\ * Data Type = long"<<endl; gotoxy(1,24);

cout<<" ************************************* "; gotoxy(1,25);

cout<<" ************************************* "; gotoxy(1,10);

cout<<" Enter the Array: "<<endl<<endl;

for(int count_1=0;count_1<array_size;count_1++) { cout<<"\t Element["<<count_1<<"] = "; cin>>array[count_1]; } bubble_sort(array,array_size); gotoxy(40,10);

cout<<" Sorted Array: ";

for(int count_2=0;count_2<array_size;count_2++) {

gotoxy(50,12+count_2);

cout<<" Element["<<count_2<<"]= "<<array[count_2]<<endl; }

getch(); return 0; }

void bubble_sort(long array[], int array_size) { for(int count_1=0;count_1<array_size;count_1++) { for(int count_2=0;count_2<array_size;count_2++) { if(array[count_2]>array[count_2+1]) { long temp=array[count_2]; array[count_2]= array[count_2+1]; array[count_2+1]=temp; } } } }

Buatlah algoritma dan program untuk memasukkan 10 buah data dengan menggunakan metode selection sort dan tampilkan data tersebut secara ascending. Input data terserah.

Daftar Pustaka

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta, 2009. Teddy Marcus Zakaria dan Agus Prijono, Konsep dan Implementasi Struktur Data, Informatika, Bandung, 2006

Thompson Susabda Ngoen, Pengantar Algoritma dengan Bahasa C, Salemba Teknika, Jakarta, 2004

MODUL PERKULIAHAN

Algoritma

Pemrograman

dan Struktur

Data

Modul Standar untuk

digunakan dalam Perkuliahan

di Universitas Mercu Buana

Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh

Ilmu Komputer Sistem Informasi

08

87007 Team Dosen

Abstract Kompetensi

A B C D E F G H I J K L M 2. Binary Tree Dan penyelesaiannya

Dalam dokumen Algoritma Pemrograman dan Struktur Data (Halaman 68-78)

Dokumen terkait