On Thursday 13 June 2002 06:22 am,
Adwin wrote :
[deleted]
> #include <iostream>
> #include <string>
> using namespace std ;
>
> int main()
> {
> int number ;
> string string1 ;
> cout << " insert a number : " ;
> cin >> number ;
Misal saya berikan number adalah : 2abce
> cout << " the number is " << number << endl ;
Akan keluar : 2
> cout << " hex : " << hex << number << endl ;
Akan keluar : 2
> cin >> string1 ;
Karena saya sebelumnya saya memasukan : 2abce, maka yang merupakan integer
adalah 2 saja, sehingga abce masih tersimpan di buffer. Lalu di sini kamu
meminta input "cin" berupa string, sehingga sistem mengambil langsung dari
buffer, yaitu : abce.
Lain halnya bila number dimasukkan angka yang merupakan integer sehingga
buffer akan kosong, sehingga kamu akan diminta mengisikan nilai string1 (
jadi tidak akan terlewat ).
> cout << string1[number] ;
string1 di sini adalah : abce, dimana a adalah urutan 0, b urutan 1 dan
seterusnya. Sehingga dalam hal ini sama aja dengan string1[2], berarti yang
keluar adalah : c.
> }
Di sini kamu lupa menggunakan : return ....( lihat int main() ).
Mengenai segmentation fault, terjadi karena kamu mengakses string1 yang
panjangnya kurang dari yang kamu inginkan. Misal :
number adalah : 123qwerty
maka pada saat cout << string1[number], sama saja dengan cout <<
string1[123], sedangkan string1 adalah qwerty. Gitu loch :)
Solusinya...mungkin kamu harus cari fungsi yang bisa mengkosongkan buffer
sebelum cin kedua. Sepertinya ada dech.....
Atau mungkin pake cara lain untuk inputnya...sorry saya bukan expert dalam
hal ini jadi mungkin ada yang lain yang bisa beri komentar lebih baik.
--
Hadi
The LUSER
--
Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3