Yup, sekarang saya mau ngebahas tentang hal-hal basic mengenai Competitive programming, dan dengan basic maksudnya dari I/O sama tipe data.Oiya, saya terbiasa menggunakan C++, jadi semua yang saya tulis kemungkinan besar saya tulis dengan C++.Sebelum membaca bagian bawah ini, saya asumsikan kalian sudah bisa menulis kerangka dasar dari program yang sangat basic dari C++, dari header, int main(), sampai return 0; .
- I/O (Input Output)
ket: Input dari stdin dan Output ke stdout
Pada C++, umumnya ada 2 tipe I/O, yaitu C-style dan C++ style.Header untuk C-style adalah <cstdio> , sedangkan C++ style adalah <iostream> . keterangan lebih lanjut tentang kedua cara itu bisa dibaca lebih lanjut di sini untuk C-Style, dan di sini untuk C++-style. I/O yang umumnya saya pakai adalah:
- Untuk membaca dengan limit spasi dan newline, menggunakan scanf() (C-style) dan cin>> (C++ style)
- Untuk membaca sampai newline, menggunakan gets()(C-style) dan getline() (C++ style)
- Output menggunakan printf() (C-style) dan cout<<(C+ style)
Note yang cukup penting, C++ style biasanya lebih lambat dari C-style, namun dengan sedikit modifikasi sebenarnya C++ style lebih cepat dari C-style (baca di sini)
- Tipe Data
Tipe data yang saya tulis hanyalah tipe data basic yang sering saya gunakan, formatnya kurang lebih nama,argumen I/O C-style, dan range untuk tipe data integer
- Integer/Bilangan bulat
- Short -> %hd -> −(215) sampai 215 − 1
- Int -> %d -> −(231) sampai 231 − 1
- Long long -> %lld -> −(263) sampai 263 − 1
Terkadang, ada soal yang memiliki jawaban melebihi range long long, untuk soal seperti itu, ada baiknya mempelajari BigInteger di Java atau membuat BigInt sendiri di C++, yang mungkin lain kali saya bahas.
- Floating-Point/Pecahan
- Float -> %f
- Double -> %lf
Untuk tipe data floating point ini, sebenarnya saya masih bingung dengan batasannya :| selain itu, usahakan untuk selalu menggunakan double, karena lebih presisi daripada float
- Char/Karakter
- Char -> %c
Sebenarnya, char juga merupakan tipe data integer, dengan range −(27) sampai 27 − 1. Kenapa bisa begitu? Karena kalau tidak salah, sebenarnya semua yang di C++ bisa direpresentasikan sebagai angka, CMIIW via comment ya :p
- String/rangkaian karakter
- String -> tidak native di C
Lho? string gak native di C? terus kalau mau proses string dengan C-style gimana?
Solusi: gunakan array of char, dengan argumen %s .
Mungkin segini saja yang bisa saya tulis, tipe-tipe data lainnya seperti static array,vector,dll mungkin saya bahas di post setelahnya.Saya akan sangat senang menerima kritik serta saran kalian semua. See ya later!
Source:
www.cplusplus.com
http://en.wikipedia.org/wiki/Integer_%28computer_science%29
http://www.quora.com/C++-programming-language/Is-cin-cout-slower-than-scanf-printf
0 komentar:
Posting Komentar