#include <iostream>
#include <string> //getline için kullanılmalı
using namespace std;
// struct C++ Tipi Konu Anlatımı
/*
struct Ogrenci // struct tanımlama üye değişkenleri
{
int ogrenciNo;
string isim;
double notOrtalama;
};
int main()
{
Ogrenci ogrenci1;
// Birinci Yöntem
ogrenci1.ogrenciNo = 100;
ogrenci1.isim = "Ahmet Yilmaz";
ogrenci1.notOrtalama = 85.5;
// İkinci Yöntem
Ogrenci ogrenci2 = { 103,"Ali Kaya",90.2 }; //struct içindeki elemanların sırası ile yazılmalı
cout <<"Ogrenci No : "<< ogrenci1.ogrenciNo << " " << ogrenci1.isim << " " << ogrenci1.notOrtalama << endl;
cout << "Ogrenci No : " << ogrenci2.ogrenciNo << " " << ogrenci2.isim << " " << ogrenci2.notOrtalama << endl;
return 0;
}
*/
/*
struct Ogrenci // struct tanımlama üye değişkenleri
{
int ogrenciNo;
string isim;
double notOrtalama;
};
//Struct Arrays [Diziler]
//Birden fazla öğrenci tanımlama
int main()
{
Ogrenci ogrenciler[3];
for(int i=0;i<3;i++)
{
cout << i + 1 << ". ogrencinin No : ";
cin >> ogrenciler[i].ogrenciNo;
cin.ignore();// Yeni satır karakterini temizlemek için kullanıldı
//ignore() gereksiz karakterleri temizlemek için kullanılan bir iostream fonksiyonudur.
//getline() ile metin alınacağı zaman enter tuşunun arabellekte bırakıp bir sonraki girdiyi atlamasını önlemek için kullanılır.
cout << i + 1 << ". ogrencinin isim : ";
getline(cin, ogrenciler[i].isim);// getline kullanıcıdan gelen boşluklar dahil tüm karakterleri okumak için kullanılır
cout << i + 1 << ". ogrencinin Not Ortalamasi : ";
cin >> ogrenciler[i].notOrtalama;
}
cout << "\n* * Ogrenci Listesi * *\n";
for (int i = 0; i < 3; i++)
{
cout << ogrenciler[i].ogrenciNo << " " << ogrenciler[i].isim << " " << ogrenciler[i].notOrtalama << endl;
}
// Kodumuzun Çıktısı :
// 1. ogrencinin No : 199
// 1. ogrencinin isim : Ahmet Tek
// 1. ogrencinin Not Ortalamasi : 90.8
// 2. ogrencinin No : 333
// 2. ogrencinin isim : Fatma Yek
// 2. ogrencinin Not Ortalamasi : 68.9
// 3. ogrencinin No : 555
// 3. ogrencinin isim : Hasan Tuzlu
// 3. ogrencinin Not Ortalamasi : 67.7
//
// * *Ogrenci Listesi * *
// 199 Ahmet Tek 90.8
// 333 Fatma Yek 68.9
// 555 Hasan Tuzlu 67.7
return 0;
}
*/
/*
struct Ogrenci
{
int ogrenciNo;
string isim;
double notOrtalama;
};
void ogrenciDurumYazdir(Ogrenci ogr)
{
// Parametre Koyamalama yöntemidir. Gelen verileri fonksiyona kopyalar
// Parametrelerin içinde tanımlanmış olan değerlerde değişiklik yapılamıyor sadece lokal olarak değiştirilebilir
// Referans " & " verilmediğinden parametre olarak kullanmış olduk ( kopyalanmış oldu )
// Bu yöntemde sürekli kopyalama olacağından büyük verilerde RAM yavaşlamaya başlayacaktır.
// Referansların önemini burada görmüş olduk
if (ogr.notOrtalama < 50)
{
cout << ogr.isim << " Sinifda Kaldi" << endl;
}
else
{
cout << ogr.isim << " Sinifi gecti" << endl;
}
}
int main()
{
Ogrenci ogrenci1 = {101, "Ali Kaya",48.5};//Ogrenci fonksiyonunun sırasıyla yazılmalı
ogrenciDurumYazdir(ogrenci1);
return 0;
}
*/
//Referans " & " ile Kullanımı
struct Ogrenci
{
int ogrenciNo;
string isim;
double notOrtalama;
};
void ogrenciDurumYazdir(Ogrenci &ogr)
{
ogr.ogrenciNo = 190; // Referans sayesinde öğrenci numarasını 190 olarak değiştirdik.
if (ogr.notOrtalama < 50)
{
cout << ogr.isim << " Sinifda Kaldi" << endl;
}
else
{
cout << ogr.isim << " Sinifi gecti" << endl;
}
}
int main()
{
Ogrenci ogrenci1 = { 101, "Ali Kaya",48.5 };//Ogrenci fonksiyonunun sırasıyla yazılmalı
ogrenciDurumYazdir(ogrenci1);
cout << "ogrenci isim : " << ogrenci1.isim << " ogrenci no : " << ogrenci1.ogrenciNo << endl;
// Çıktısı
// Ali Kaya Sinifda Kaldi
// ogrenci isim : Ali Kaya ogrenci no : 190
return 0;
}