STRING & VEKTOR
Soal & Penyelesaian
1.
Konversilah string dalam bahasa C menjadi integer.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
//stringCKeInteger.cpp
#include <iostream>
#include <cstdlib>
#include <cctype>
#include <conio.h>
void baca_dan_bersih(int&
n);
//Membaca sebaris masukan.
Membuang semua simbol kecuali dijit.
//Mengkonversi string C
menjadi integer dan
//menetapkan n sama dengan
nilai dari integer tersebut.
void baris_baru( );
//Membuang semua masukan
yang tersisi pada baris masukan.
//Juga membuang '\n' di
akhir baris.
int main( )
{
using
namespace std;
int
n;
char
jwb;
do
{
cout << "Masukkan sebuah integer dan tekan ENTER:
";
baca_dan_bersih(n);
cout << "String tersebut dikonversi menjadi integer "
<< n << endl;
cout << "Lagi? (y/t):
";
cin >> jwb;
baris_baru( );
} while
( (jwb != 't') && (jwb != 'T') );
getch();
return 0;
}
void baca_dan_bersih(int&
n)
{
using
namespace std;
const
int UKURAN_ARRAY = 6;
char
string_dijit[UKURAN_ARRAY];
char
brktnya;
cin.get(brktnya);
int
indeks = 0;
while (brktnya !=
'\n')
{
if
( (isdigit(brktnya)) && (indeks < UKURAN_ARRAY - 1) )
{
string_dijit[indeks] = brktnya;
indeks++;
}
cin.get(brktnya);
}
string_dijit[indeks] = '\0';
n = atoi(string_dijit);
}
void baris_baru( )
{
using
namespace std;
char
simbol;
do
{
cin.get(simbol);
} while
(simbol != '\n');
}
|
Masukkan sebuah integer dan tekan ENTER: Saya
suka 100
String tersebut dikonversi menjadi integer 100
Lagi? (y/t): y
Masukkan sebuah integer dan tekan ENTER: Lima
kali enam sama dengan 30
String tersebut dikonversi menjadi integer 30
Lagi? (y/t): t
2.
Tulislah sebuah program C++ untuk merealisasikan
fungsi pembaca masukan yang handal.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
//FungsiPembacaMasukanHandal.cpp
#include
<iostream>
#include
<cstdlib>
#include
<cctype>
#include
<conio.h>
void baca_dan_bersih(int& n);
//Membaca sebaris masukan. Membuang semua simbol kecuali
dijit.
//Mengkonversi string C menjadi integer dan
//menetapkan n sama dengan nilai dari integer tersebut.
void baris_baru( );
//Membuang semua masukan yang tersisi pada baris masukan.
//Juga membuang '\n' di akhir baris.
void baca_int(int& angka_masukan);
//Memberikan angka_masukan sebuah nilai yang disetujui
pengguna.
int main( )
{
using namespace std;
int angka_masukan;
baca_int(angka_masukan);
cout <<
"Nilai akhir yang dibaca = "
<< angka_masukan << endl;
getch();
return 0;
}
void baca_int(int& angka_masukan)
{
using namespace std;
char jwb;
do
{
cout <<
"Masukkan angka masukan: ";
baca_dan_bersih(angka_masukan);
cout << "Anda memasukkan " << angka_masukan
<<
" Apakah itu tepat? (y/t):
";
cin >>
jwb;
baris_baru(
);
} while ((jwb != 'y') && (jwb
!= 'Y'));
}
void baca_dan_bersih(int& n)
{
using namespace std;
const int UKURAN_ARRAY = 6;
char string_dijit[UKURAN_ARRAY];
char brktnya;
cin.get(brktnya);
int indeks = 0;
while (brktnya != '\n')
{
if ( (isdigit(brktnya)) &&
(indeks < UKURAN_ARRAY - 1) )
{
string_dijit[indeks] = brktnya;
indeks++;
}
cin.get(brktnya);
}
string_dijit[indeks] = '\0';
n =
atoi(string_dijit);
}
void baris_baru( )
{
using namespace std;
char simbol;
do
{
cin.get(simbol);
} while (simbol != '\n');
}
|
Masukkan angka masukan: Rp. 57
Anda memasukkan 57 Apakah itu tepat? (y/t): t
Masukkan angka masukan: Rp. 75#%#^#&#
Anda memasukkan 75 Apakah itu tepat? (y/t): t
Masukkan angka masukan: &^77*(
Anda memasukkan 77 Apakah itu tepat? (y/t): t
Masukkan angka masukan: gsasak^&&76(*(*
Anda memasukkan 76 Apakah itu tepat? (y/t): y
Nilai akhir yang dibaca = 76
3.
Tulislah sebuah program C++ untuk mendemonstrasikan
penggunaan kelas string.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
//DemonstrasiKelas_string.cpp
//Mendemonstrasik kelas
string standar.
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;
int main( )
{
string
frase;
string
sifat("goreng"),
benda("bebek");
string
selamat = "Selamat makan!";
frase = "Saya suka " +
benda + " " + sifat +
"!";
cout << frase << endl
<< selamat << endl;
getch();
return
0;
}
|
Saya suka bebek goreng!
Selamat makan!
4.
Tulislah sebuah program C++ untuk memperjelas
penggunaan kelas string.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
//Demo_Kelas_string.cpp
//Mendemonstrasikan
getline dan cin.get.
#include <iostream>
#include <string>
#include <conio.h>
void baris_baru( );
int main( )
{
using
namespace std;
string
nama_depan, nama_belakang, nama_rekaman;
string
motto = "Rekaman Anda adalah rekaman
saya.";
cout << "Masukkan nama depan dan
nama belakang Anda:\n";
cin >> nama_depan >>
nama_belakang;
baris_baru( );
nama_rekaman = nama_belakang + ",
" + nama_depan;
cout << "Nama Anda dalam rekaman kami adalah: ";
cout << nama_rekaman << endl;
cout << "Motto kami adalah\n"
<< motto << endl;
cout << "Silahkan usulkan motto yang lebih baik:\n";
getline(cin, motto);
cout << "Motto kami yang baru adalah:\n";
cout << motto << endl;
getch();
return
0;
}
void baris_baru( )
{
using
namespace std;
char
char_brktnya;
do
{
cin.get(char_brktnya);
} while
(char_brktnya != '\n');
}
|
Masukkan nama depan dan nama belakang Anda:
Rismon Sianipar
Nama Anda dalam rekaman kami adalah: Sianipar,
Rismon
Motto kami adalah
Rekaman Anda adalah rekaman saya.
Silahkan usulkan motto yang lebih baik:
Rekaman Anda adalah rekaman semua orang.
Motto kami yang baru adalah:
Rekaman Anda adalah rekaman semua orang.
5.
Tulislah sebuah program C++ untuk mendemonstrasikan
bahwa objek dari kelas string dapat
berperilaku seperti array.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
//objekString_Seperti_Array.cpp
//Mendemonstrasikan
penggunaan objek string seperti array.
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;
int main( )
{
string
nama_depan, nama_belakang;
cout << "Masuk nama depan dan nama belakang Anda:\n";
cin >> nama_depan >>
nama_belakang;
cout << "Nama belakang Anda dieja dengan:\n";
int
i;
for
(i = 0; i < nama_belakang.length( ); i++)
{
cout << nama_belakang[i]
<< " ";
nama_belakang[i] = '-';
}
cout << endl;
for
(i = 0; i < nama_belakang.length( ); i++)
cout << nama_belakang[i]
<< " ";
cout << endl;
cout << "Selamat siang " << nama_depan << endl;
getch();
return
0;
}
|
Masuk nama depan dan nama belakang Anda:
Vivian Jozen
Nama belakang Anda dieja dengan:
J o z e n
- - - - -
Selamat siang Vivian
6.
Tulislah sebuah program C++ untuk menguji apakah
sebuah string palindrome atau tidak menggunakan kelas string.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
//program_uji_palindrome.cpp
//Menguji sifat palindrome dari sebuah string.
#include
<iostream>
#include
<string>
#include
<cctype>
#include
<conio.h>
using namespace std;
void tukar(char& v1, char&
v2);
//Saling-menukar nilai dai v1 dan v2.
string balik(const string& s);
//Menghasilkan suatu salinan dari s dengan urutan
karakter terbalik.
string hapus_tanda_baca(const string& s,
const string& tanda_baca);
//Menghasilkan suatu salinan dari s dengan tanda baca
dihapus.
string buat_huruf_kecil(const string& s);
//Menghasilkan sebuah salinan dari s dimana semua huruf
besar
//diubah menjadi huruf kecil.
bool apa_palindrome(const string& s);
//Menghasilkan true jika s adalah sebuah palindrome,
false jika tidak.
int main( )
{
string str;
cout <<
"Masukkan sebuah kandidat
palindrome\n"
<<
"diikuti dengan penekanan ENTER.\n";
getline(cin,
str);
if (apa_palindrome(str))
cout <<
"\"" << str + "\" adalah sebuah
palindrome.";
else
cout <<
"\"" << str + "\" bukan sebuah
palindrome.";
cout <<
endl;
getch();
return 0;
}
void tukar(char& v1, char&
v2)
{
char temp = v1;
v1 = v2;
v2 = temp;
}
string balik(const string& s)
{
int awal = 0;
int akhir = s.length( );
string temp(s);
while (awal < akhir)
{
akhir--;
tukar(temp[awal], temp[akhir]);
awal++;
}
return temp;
}
string buat_huruf_kecil(const string& s)
{
string temp(s);
for (int i = 0; i < s.length(); i++)
temp[i] =
tolower(s[i]);
return temp;
}
string hapus_tanda_baca(const string& s, const string& tanda_baca)
{
string no_tanda_baca;
//diinisialisasi dengan string kosong
int s_length = s.length( );
int tanda_baca_length = tanda_baca.length(
);
for (int i = 0; i < s_length; i++)
{
string a_char = s.substr(i,1);
//string satu-karakter
int lokasi = tanda_baca.find(a_char,
0);
//Mencari
lokasi dari karakter yang berurutan
//dalam
tanda_baca.
if (lokasi < 0 || lokasi >=
tanda_baca_length)
no_tanda_baca = no_tanda_baca + a_char;
}
return no_tanda_baca;
}
bool apa_palindrome(const string& s)
{
string
tanda_baca(",;:.?!'\" "); //termasuk spasi
string str(s);
str = buat_huruf_kecil(str);
string str_huruf_kecil =
hapus_tanda_baca(str, tanda_baca);
return (str_huruf_kecil ==
balik(str_huruf_kecil));
}
|
Masukkan sebuah kandidat palindrome
diikuti dengan penekanan ENTER.
Radar
"Radar" adalah sebuah palindrome.
Masukkan sebuah kandidat palindrome
diikuti dengan penekanan ENTER.
Saya
"Saya" bukan sebuah palindrome.
7.
Demonstrasikanlah penggunaan sebuah vector dalam program C++.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
//Menggunakan_Vector.cpp
#include <iostream>
#include <vector>
#include <conio.h>
using namespace std;
int main( )
{
vector<int> v;
cout << "Masukkan sebuah daftar integer positif.\n"
<< "Tempatkan sebuah integer negatif untuk mengakhiri.\n";
int
berikutnya;
cin >> berikutnya;
while
(berikutnya > 0)
{
v.push_back(berikutnya);
cout << berikutnya <<
" ditambahkan. ";
cout << "v.size( ) =
" << v.size( ) << endl;
cin >> berikutnya;
}
cout << "Anda memasukkan:\n";
for
(unsigned int i = 0; i < v.size( ); i++)
cout << v[i] << "
";
cout << endl;
getch();
return
0;
}
|
Masukkan sebuah daftar integer positif.
Tempatkan sebuah integer negatif untuk
mengakhiri.
35 327 43 32 54 65 76 86 63 4 2 75 4 -2
35 ditambahkan. v.size( ) = 1
327 ditambahkan. v.size( ) = 2
43 ditambahkan. v.size( ) = 3
32 ditambahkan. v.size( ) = 4
54 ditambahkan. v.size( ) = 5
65 ditambahkan. v.size( ) = 6
76 ditambahkan. v.size( ) = 7
86 ditambahkan. v.size( ) = 8
63 ditambahkan. v.size( ) = 9
4 ditambahkan. v.size( ) = 10
2 ditambahkan. v.size( ) = 11
75 ditambahkan. v.size( ) = 12
4 ditambahkan. v.size( ) = 13
Anda memasukkan:
35 327 43 32 54 65 76 86 63 4 2 75 4
No comments:
Post a Comment