Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehLanny Tedja Telah diubah "6 tahun yang lalu
1
Contoh-contoh Pemecahan Masalah 2 TEE 2103 Algoritma & Pemograman
Dosen: Abdillah, MIT HP: Website:
2
Tujuan Mahasiswa mampu menyelesaikan masalah berdasar pada contoh-contoh algoritma penyelesaian masalah dan programnya.
3
Daftar Masalah Validasi Password Menentukan Selisih Hari
Mencari Nilai Tertinggi Mencari Nilai Terendah Menghitung Titik Tengah
4
1. Validasi Password Buatlah algoritma dan program password yang membaca kata sandi kemudian memanggil prosedur validasi yang mengecek kebenaran kata sandi. Program password memberi kesempatan 3 kali untuk memasukkan sandi hingga menampilkan pesan peringatan di layar monitor.
5
Algoritma Prosedur procedure validasi (input password : integer)
{ Menampilkan pesan selamat datang jika password benar } DEKLARASI sah, pencacah : integer { variabel global } int sandi = 1234 ALGORITMA if (password = sandi) write(‘selamat datang’) sah 0 else write(‘password Anda salah') sah 1 pencacah pencacah + 1
6
Algoritma Program Utama
PROGRAM Password {Membaca password dan keluar jika 3x salah} DEKLARASI password : integer ALGORITMA pencacah = 1 repeat read(password) validasi(password) until ((sah = 1) and (pencacah <= 3))
7
Program Prosedur #include<stdio.h> int sah, pencacah;
void validasi(int password) { int sandi = 1234; if (password == sandi){ printf("selamat datang\n"); sah = 0; } else { printf(“password Anda salah\n"); pencacah++; sah = 1;
8
Program Utama main() { int password; pencacah = 1; do
printf("Masukkan password:"); scanf("%d", &password); validasi(password); } while ((sah == 1) && (pencacah <= 3));
9
2. Menentukan Selisih hari
Buatlah algoritma dan program selisih_hari yang membaca dan menghitung selisih hari antara dua tanggal, dibaca dari piranti masukan. Program selisih_hari memanggil fungsi hari_bulan yang mengembalikan jumlah hari dalam satu bulan. Contoh eksekusi program: Ketikkan tanggal pertama: 28/2/2012 Ketikkan tanggal kedua: 27/1/2015 Jumlah selisih hari adalah 1066 hari
10
Algoritma Fungsi function hari_bulan(no_bulan, tahun : integer) integer { Mengembalikan jumlah hari dalam no_bulan pd tahun tertentu} DEKLARASI tidak ada ALGORITMA: case (no_bulan) 1,3,5,7,8,10,12 : return 31 4,6,9,11 : return 30 2 : if ((tahun mod 4 = 0 and tahun mod 100 ≠ 0) or (tahun mod 400 = 0)) then return 29 else return 28
11
Algoritma Program Utama
PROGRAM selisih_hari DEKLARASI type Hari : record <dd, mm, yy : integer> H1, H2 : Hari i,j, selisih : integer ALGORITMA: read (H1, H2) selisih ← 0 repeat if (H1.yy < H2.yy) for (j ← H1.mm to 12) selisih ← selisih + hari_bulan(j,H1.yy) for (i ← H1.yy+1 to H2.yy-1) for (j ← 1 to 12) selisih ← selisih + hari_bulan(j,i) for (j ← 1 to H2.mm-1) selisih ← selisih - H1.dd + H2.dd else if (H1.yy = H2.yy and H1.mm <= H2.mm) for (j ← H1.mm to H2.mm-1) else if (H1.mm = H2.mm and H1.dd < H2.dd) selisih ← selisih + H2.dd - H1.dd else write (‘H2 harus setelah H1’) Algoritma Program Utama
12
Program Fungsi #include <stdio.h>
int hari_bulan (int no_bulan, int tahun) { switch (no_bulan) { case 1:case 3:case 5:case 7:case 8:case 10:case 12: return 31; break; case 4:case 6:case 9:case 11:return 30; break; case 2:if((tahun%4==0 && tahun%100 != 0)||tahun%400==0) return 29; else return 28; }
13
Program Utama main() { typedef struct {int dd, mm, yy;} Hari;
Hari H1, H2; int i,j, selisih; printf("Ketikkan tanggal pertama (dd/mm/yyyy): "); scanf("%d/%d/%d",&H1.dd, &H1.mm, &H1.yy); printf("Ketikkan tanggal kedua (dd/mm/yyyy): "); scanf("%d/%d/%d",&H2.dd, &H2.mm, &H2.yy); selisih = 0; if (H1.yy < H2.yy) for (j=H1.mm; j<=12; j++) selisih = selisih + hari_bulan(j, H1.yy); for (i=H1.yy+1; i<H2.yy; i++){ for (j=1; j<=12; j++) selisih = selisih + hari_bulan(j, H1.yy);} for (j=1; j<=H2.mm-1; j++) selisih = selisih + H2.dd - H1.dd; printf ("Jumlah selisih hari adalah %d hari\n", selisih); } Program Utama
14
Program Utama else if (H1.yy == H2.yy && H1.mm <= H2.mm){
for (j=H1.mm; j<=H2.mm-1; j++) selisih = selisih + hari_bulan(j, H1.yy); } else if (H1.mm == H2.mm && H1.dd <= H2.dd){ selisih = selisih + H2.dd - H1.dd; printf ("Jumlah selisih hari adalah %d hari\n", selisih); else printf ("Tanggal kedua harus setelah tanggal pertama \n"); Program Utama
15
3. Menentukan Nilai Tertinggi
Tulislah algoritma dan program maksimum yang membaca 3 buah nilai ujian dari papan ketik dan menyimpannya dalam sebuah larik. Program maksimum memanggil fungsi cari_maksimum yang mencari dan mengembalikan nilai ujian yang tertinggi. Program maksimum kemudian menampilkan nilai tertinggi tsb di layar monitor.
16
Algoritma Fungsi function cari_maksimum (input nilai[ ], k : integer) → integer { Mencari dan mengembalikan nilai tertinggi } DEKLARASI i, maksimum : integer ALGORITMA: maksimum ← nilai[0] for (i 1 to k-1) do if (nilai[i] > maksimum) maksimum ← nilai[i] endfor return (maksimum)
17
Algoritma Program Utama
PROGRAM Maksimum { Membaca, menyimpan 3 buah nilai ujian dalam sebuah larik dan menampilkan nilai ujian tertinggi } DEKLARASI i, N, nilai[N], : integer ALGORITMA: N 3 for (i 0 to N-1) do read ( nilai[i] ) endfor write (‘Nilai tertinggi =‘ cari_maksimum(nilai, N))
18
Program Maksimum #include <stdio.h>
int cari_maksimum(int nilai[],int k) { int i, maksimum = nilai[0]; for (i=0;i<k;i++) if nilai[i] > maksimum maksimum = nilai[i]; return maksimum; } main() int i, N = 3, nilai[N],; printf(“Masukkan 3 nilai ujian"); for (i=0;i<N;i++) { printf(“Nilai ke %d: ",i+1); scanf("%d",&nilai[i]); printf("Nilai tertinggi: %d", cari_maksimum(nilai,N));
19
4. Menentukan Nilai Terendah
Tulislah algoritma dan program minimum yang membaca 3 buah nilai ujian dari papan ketik dan menyimpannya dalam sebuah larik. Program minimum memanggil fungsi cari_ minimum yang mencari dan mengembalikan nilai ujian yang terendah. Program minimum kemudian menampilkan nilai terendah tsb di layar monitor.
20
Algoritma Fungsi function cari_minimum (input nilai[ ], k : integer) → integer { Mencari dan mengembalikan nilai terendah } DEKLARASI i, minimum : integer ALGORITMA: minimum ← nilai[0] for (i 1 to k-1) do if (nilai[i] < minimum) minimum ← nilai[i] endfor return (minimum)
21
Algoritma Program Utama
PROGRAM Minimum { Membaca, menyimpan 3 buah nilai ujian dalam sebuah larik dan menampilkan nilai ujian terendah } DEKLARASI i, N, nilai[N], : integer ALGORITMA: N 3 for (i 0 to N-1) do read ( nilai[i] ) endfor write (‘Nilai terendah =‘ cari_minimum(nilai, N))
22
Program Minimum #include <stdio.h>
int cari_minimum(int nilai[],int k) { int i, minimum = nilai[0]; for (i=0;i<k;i++) if nilai[i] < minimum minimum = nilai[i]; return minimum; } main() int i, N = 3, nilai[N],; printf(“Masukkan 3 nilai ujian"); for (i=0;i<N;i++) { printf(“Nilai ke %d: ",i+1); scanf("%d",&nilai[i]); printf("Nilai terendah: %d", cari_minimum(nilai,N));
23
5. Menentukan Titik Tengah
Tulislah algoritma dan program minimum yang membaca 2 buah titik koordinat dan menyimpannya dalam tipe terstruktur Titik. Program titik_tengah memanggil fungsi hitung_ titik_tengah yang mencari dan mengembalikan koordinat titik tengah. Program Titik kemudian menampilkan koordinat titik tengah tsb di layar monitor.
24
Algoritma Fungsi function cari_minimum (input nilai[ ], k : integer) → integer { Mencari dan mengembalikan nilai terendah } DEKLARASI i, minimum : integer ALGORITMA: minimum ← nilai[0] for (i 1 to k-1) do if (nilai[i] > minimum minimum ← nilai[i] endfor return (minimum)
25
Algoritma Program Utama
PROGRAM Minimum { Membaca, menyimpan 3 buah nilai ujian dalam sebuah larik dan menampilkan nilai ujian terendah } DEKLARASI i, N, nilai[N], : integer ALGORITMA: N 3 for (i 0 to N-1) do read ( nilai[i] ) endfor write (‘Nilai terendah =‘ cari_minimum(nilai, N))
26
Program Minimum #include <stdio.h>
typedef struct {float x,y;} Titik; /* variabel global */ Titik Titik_Tengah(Titik P1, Titik P2) { Titik Pt; Pt.x = (P1.x + P2.x)/2; Pt.y = (P1.y + P2.y)/2; return Pt; } main() Titik P1,P2; printf("Masukkan koordinat titik P1 (x,y):"); scanf("%f,%f",&P1.x, &P1.y); printf("Masukkan koordinat titik P2 (x,y):"); scanf("%f,%f",&P2.x, &P2.y); printf("Titik tengah:(%.1f, %.1f)\n", Titik_Tengah(P1,P2));
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.