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

Kirim email ke