//
// biraz daha genis bir ornek
//
#include <iostream>
#include <utility> // pair konteyner sinifi icin
#include <vector>
#include <string>
#include <iomanip> // setw(), left() ve right() manipulatorleri icin
// basit anlamda manipulatorler veriyi yazarken/okurken formatlama yapmamizi saglar
// setw(int) manipulatorunun etkisini programi calistirdiginizde goreceksiniz
// tablo tarzi guzel bir goruntu olusacak (diye umuyoruz :) )
// left ve right veriyi sola ya da saga dayali gostermek icin kullanilir
// varsayilan right manipulatorudur
using namespace std;
// pair = cift
typedef pair<string, int> ders_not_t; // string ve int cifti (string ders adini, int notu temsil edecek)
// pair<string, int>::first ---> string
// pair<string, int>::second ---> int
int main()
{
// programda herhangi bir hata kontrolu yapilmamaktadir
// sadece vector ve pair siniflarinin pratik kullanimini
// gostermek amaciyla yazilmistir.
char ch;
char buffer[100];
vector<ders_not_t> notlarim;
ders_not_t tmp;
do
{
cout << "Ders adi: ";
cin.getline(buffer, 100);
tmp.first = buffer; // STL string sinifi asiri yuklenmis bir = operatoru sunar
// ve hayat daha cekilir bir hale gelir...
cout << "
Not: ";
cin >> tmp.second;
notlarim.push_back(tmp); // girilen veriyi notlara ekliyoruz
cout << "
Cikmak icin x, devam etmek icin d ENTER..." << endl;
cin >> ch;
cin.ignore(); // son '
' karakteri ignore ediliyor (ortalik karismasin diye)
} while(ch != 'x');
cout << "Buyrun:
";
vector<ders_not_t>::iterator iter;
// iterator nesneleri vectoru kurdugunuz veri tipindeki bir pointeri tasir
// ve -> operatoru asiri yuklenmis olarak emrimizdedir.
// dolayisiyla
// iter = notlarim.begin(); demek
// iter, notlarim vectorundeki ilk ders_not_t ( yani pair<string, int> )nesnesine
// isaret ediyor demektir.
// ve
// iter->first ve iter->second seklinde bu verilere erisebiliriz
// bakin nasilda erisiyoruz :)
cout << setw(15) << left << "Ders " << setw(3) << right << "Not "
"
-------------------" << endl;
for (iter = notlarim.begin(); iter != notlarim.end(); ++iter)
cout << setw(15) << left << iter->first << setw(3) << right << iter->second << "
";
cout << endl; // flush'em all!
return 0;
}
// do not reinvent the wheel !! (but please learn how it works)
bu son örnek odevle alakalı olarak size güzel fikirler verecektir ;)
Do weird and difficult things.
|