Rabu, 23 Maret 2016

Konversi Bilangan Pada C++

Disini kita akan membuat sebuah program aplikasi untuk mengkonversi sebuah nilai karakter menjadi bilangan numerik yang dapat dijumlahkan atau dihitung.

mulailah dengan membuat project dengan
Target Type    : Application(exe)
Platform          : DOS (Standard)
Target Model  : Small
Frameworks   : Class Library
Math Support : Floating Point/Emulation


Script Program:

#include <math.h> /* Deklarasi prototype atof */
#include <stdlib.h> /* Deklarasi prototype gcvt */
#include "screen.cpp" /* Fungsi anggota writeString */

#define KEY_INT 0x16 /* Nomor interupsi keyboard */
#define KEY_BACKSPACE 0x08 /* Tombol Backspace */
#define KEY_RETURN 0x0d /* Tombol Enter */
#define KEY_TAB 0x09 /* Tombol Tab */
#define KEY_SPACE 0x20 /* Tombol spasi */
010
011 #define NULL 0x00 /* ASCII 0 */
012 #define TRUE 1
013
014 UCHAR *getString(Screen *scr, UCHAR *str, UCHAR max);
015
016 int main(void)
017 {
018 Screen *layar = new Screen();
019 double luas, keliling, jari2;
020 UCHAR *str, str2[16];
021
022 layar->setMode(0x03);
023 layar->setCursorPos(5, 10);
024 layar->writeString("Luas dan Keliling Lingkaran");
025 layar->setCursorPos(6, 10);
026 layar->writeString("---------------------------");
027 layar->setCursorPos(8, 10);
028 layar->writeString("Panjang jari-jari =");
029 layar->setCursorPos(8, 30);
030
031 /* Input jari-jari ke dalam variabel str */
032 str = getString(layar, str, 15);
033
034 /* Ubah str menjadi numerik double lalu simpan di jari2 */
035 jari2 = atof(str);
036
037 /* Hitung luas dan keliling lingkaran 

*/
038 luas = M_PI * pow(jari2, 2);
039 keliling = 2 * M_PI * jari2;
040
041 layar->setCursorPos(9, 10);
042 layar->writeString("Luas =");
43
043 layar->setCursorPos(9, 30);
044
045 /* Ubah menjadi string, maks. angka 10 digit */
046 gcvt(luas, 10, str2);
047
048 layar->writeString(str2);
049 layar->setCursorPos(10, 10);
050 layar->writeString("Keliling =");
051 layar->setCursorPos(10, 30);
052
053 /* Ubah menjadi string, maks. angka 10 digit */
054 gcvt(keliling, 10, str2);
055
056 layar->writeString(str2);
057 layar->setCursorPos(12, 10);
058 layar->writeString("Tekan ENTER ...");
059
060 getString(layar, str2, 0);
061
062 delete layar; return EXIT_SUCCESS;
063 }
064
065 UCHAR *getString(Screen *scr, UCHAR *str, UCHAR max)
066 {
067 UCHAR key, i, x, y;
068
069 key = i = 0;
070
071 while (TRUE)
072 {
073 asm mov ah, 0x00;
074 asm int KEY_INT;
075 asm mov key, al;
076
077 if ((key == KEY_BACKSPACE) && (i > 0))
078 {
079 scr->getCursorPos(&y, &x);
080 scr->setCursorPos(y, --x);
081 scr->writeChar(KEY_SPACE);
082
083 *(str + i) = NULL; i--;
084 }
085
086 if ((key >= 32) && (key <= 126) && (i < max))
087 {
088 scr->getCursorPos(&y, &x);
089 scr->writeChar(key);
090 scr->setCursorPos(y, ++x);
091
092 *(str + i) = key; i++;
093 }
094
095 if ((key == KEY_TAB) && (i < max))
096 {
097 scr->getCursorPos(&y, &x);
098 scr->writeChar(KEY_SPACE);
099 scr->setCursorPos(y, ++x);
44
100
101 *(str + i) = KEY_SPACE; i++;
102 }
103
104 if (key == KEY_RETURN)
105 {
106 *(str + i) = NULL;
107 break;
108 }
109
110 if (i == max) *(str + i) = NULL;
111 }
112
113 return str;
114 }

Tidak ada komentar:

Posting Komentar

Pengenalan HTML

 Pengenalan HTML Hypertext   Markup   Language   (HTML)   adalah   sebuah   bahasa   untuk menampilkan konten di web. HTML sendiri adalah ba...