mehmetakiftezcan.com

11 Ocak 2014 Cumartesi

C# DİJİTAL SAAT YAPIMI





using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace C_Sharp_Form_Dijital_Saat
{
    public partial class Form_Dijital_Saat : Form
    {
        //her saniye dijital saati güncellemek için timer nesnesi ile
        //bir dijital saat yapalım
        Timer timer = new Timer();
        //saati grafik nesnesi olarak yazabilmek için graphics nesnesinden
        //bir örnek oluşturalım
        Graphics g;

        public Form_Dijital_Saat()
        {
            InitializeMyComponent();
            this.ClientSize = new System.Drawing.Size(239, 83);
            SaatUygulamasınıBaslat();
        }
     
        //form yüklenirken saati başlatalım ve 
        //saat grafiği her 1 saniyede bir güncellensin
        private void SaatUygulamasınıBaslat()
        {
            timer.Enabled = true;
            timer.Interval = 1000; // bir saniye denk gelen süre
            timer.Tick += new EventHandler(timer_Tick); //saniye olayını oluşturma
            timer_Tick(this, null);
        }

        private void timer_Tick(object sender, EventArgs e)
        {
            //saat,dakika ve saniyeyi sistem saatinde çek
            string saat = DateTime.Now.Hour.ToString();
            string dakika = DateTime.Now.Minute.ToString();
            string saniye = DateTime.Now.Second.ToString();
            if (saat.Length == 1) saat = "0" + saat;
            if (dakika.Length == 1) dakika = "0" + dakika;
            if (saniye.Length == 1) saniye = "0" + saniye;

            Random random = new Random();

            //açılan formda grafik alanı yarat

            g = this.CreateGraphics();
            g.Clear(Color.BlueViolet);
            g.Clear(Color.Blue);
            g.Clear(Color.Red);
            g.Clear(Color.Gray);
            g.Clear(Color.DarkOrange);
            g.Clear(Color.Brown);

            //bir hata oldugunda problem olmaması için try catch bloğu kullan
            try
            {
                //grafik nesnesini kullanarak ekrana değişik renkler dijital saati yazdır
                g.DrawString(saat + ":" + dakika + ":" + saniye, new Font(FontFamily.Families[12], 30, FontStyle.Bold), new SolidBrush(Color.FromArgb(255, 255,255)), 20, 5);

            }

            catch
            {
            }

        }

        #region Windows Form Designer generated code

     
        private void InitializeMyComponent()
        {
            this.SuspendLayout();
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(239, 83);
            this.ControlBox = true;
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
            this.Name = "Form1";
            this.Text = "Digital Saat";
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

    }
}

3 Ocak 2014 Cuma

DOSYA OKUMA-YAZMA İŞLEMLERİ


TEXTBOX.NAME=tyazi
DOSYADAN OKU.NAME=doku
DOSYADAN YAZ.NAME=dyaz

//www.mehmetakiftezcan.com
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
//www.mehmetakiftezcan.com
namespace ornek2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void dyaz_Click(object sender, EventArgs e)
        {
            DialogResult basilanbutton;
            basilanbutton = saveFileDialog1.ShowDialog();
            if (basilanbutton == DialogResult.OK)
            {
                if (File.Exists(Path.GetFullPath(saveFileDialog1.FileName)))     //DOSYA VARMI YOKMU KONTROL EDER
                {
                    try
                    {
                        sayac = 0;
                        label1.Visible = false;
                        label1.Text = "Dosya Yazıldı!";
                        File.WriteAllText(Path.GetFullPath(saveFileDialog1.FileName), tyazi.Text);  //tyazinin içindeki bilgiler dosyaya yazılıyor..
                        label1.Visible = true;
                        timer1.Enabled = true;
                    }
                    catch {
                        MessageBox.Show("Dosya Yazılamadı");
                 
                    }
                }
            }

        }

        private void doku_Click(object sender, EventArgs e)
        {

            DialogResult basilanbutton;
            basilanbutton = openFileDialog1.ShowDialog();
            if (basilanbutton == DialogResult.OK)
            {
                if (File.Exists(Path.GetFullPath(openFileDialog1.FileName)))
                {

                    try
                    {
                        sayac = 0;
                        label1.Visible = false;
                        label1.Text = "Dosya Okundu!";
                     
                        String[] veriler = new String[] { }; //Dosyanın içindeki veriler veriler dizisine eklenecek
                        veriler = File.ReadAllLines(Path.GetFullPath(openFileDialog1.FileName));
                        string metin = "";

                        /*  Alternatif olarak Dosyanın içindeki veriler foreach komutu ile diziye okunabilir
                        foreach (string line in veriler)
                        {
                            if (metin.Length > 0) metin += ";";
                            metin += line;
                        */

                        metin = String.Join(";", veriler);//dosyadaki her satır ; den önceki ve sonraki diye ayrılıyor

                        tyazi.Text = metin;
                       //Alternatif olarak satırlar böylede okunabilir
                        /*StreamReader sr = new StreamReader(Path.GetFullPath(openFileDialog1.FileName));
                        string veriler1 = sr.ReadLine();
                        string veriler2 = sr.ReadLine();
                        string veriler3 = sr.ReadLine();
                        sr.Close();
                        tyazi.Text = veriler1+";;"+veriler2+";;"+veriler3;*/

                        label1.Visible = true;
                        timer1.Enabled = true;

                    }
                    catch
                    {
                        MessageBox.Show("Dosya Okunamadı");
                    }

                }
            }
//www.mehmetakiftezcan.com
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            openFileDialog1.FileName = "dosya";
            openFileDialog1.Filter = "Text Dosyaları(.txt)|*.txt||*.mp4";
            openFileDialog1.InitialDirectory = "";
            openFileDialog1.Title = "Okunacak Text Dosyasını Seçin";

            saveFileDialog1.Title = "Kaydedilecek Dosyayı Seçin";
            saveFileDialog1.FileName = "dosya";
            saveFileDialog1.Filter = "Text Dosyaları(.txt)|*.txt";

            label1.Text = "";
}

        int sayac = 0;

        private void timer1_Tick(object sender, EventArgs e)
        {
            sayac++;

            if (sayac < 15)
            {
                if (sayac % 2 == 1)
                    label1.Visible = true;
                else
                    label1.Visible = false;
            }
            else
            {
                timer1.Enabled = false;
                label1.Visible = false;

            }
       }
    }
}
//www.mehmetakiftezcan.com
         





17 Aralık 2013 Salı

YIL HESAPLAMA PROGRAMI-C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ornek1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private DateTime zaman;

        private void button1_Click(object sender, EventArgs e)
        {


            zaman = DateTime.Now;

            label1.Text = zaman.ToString();
            label1.Text += "\n" + zaman.DayOfWeek.ToString();

        }


        private void button2_Click(object sender, EventArgs e)
        {
            DateTime yenizaman;

            yenizaman = zaman.AddYears(Convert.ToInt32(textBox1.Text));

            label2.Text = yenizaman.ToString();
            label2.Text += "\n" + yenizaman.DayOfWeek.ToString();

        }



        private void button3_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}




14 Aralık 2013 Cumartesi

Yüz Resimlerinde Özellik Noktalarının Bulunması(YAPAY ZEKA)

Yüz Resimlerinde Özellik Noktalarının Bulunması

Merhaba Arkadaşlar Bu dönem ki projemde gerçeklediğim ilginç uygulamalardan birisi yüz resimlerinde özellik noktalarının belirlenmesiydi...Şimdi Aşağıda ki resimde Gözleri,kaşları,dudakları ve burnu nasıl bulduğumu sizlere bildireceğim..

Herhangi iki yüzü Morflerken özellik noktaları esas alınarak morflenir.Yüzde bulunan özellik noktaları aşağıda belirtilmiştir.
  • Göz bebeği
  • Göz köşeleri
  • Kaşlar
  • Dudak
  • Burun
  • Çene
Bu özellik noktalarının bulunmasında morfolojik bazı işlemler uygulanmaktadır. örneğin Gözü bulmak için resim gri formata çevrilir.Gri formata çevrilen resmin yatay ve dikey histogramları bulunur.Şimdi bu morfolojik işlemlerin gerçeklenmesine bakalım.
RESMİ GRİ SEVİYEYE DÖNÜŞTÜRME
Bir resmi gri seviyeye dönüştürmek için resme ait tüm pixellerin R (Red),G (Green),B (Blue) değerleri toplanır 3 e bölünür.Resmi Gri seviyeye dönüştüren C# kodu aşağıda verilmiştir.
public Bitmap griyap(ref Bitmap orjresim)
{Bitmap resim = new Bitmap(orjresim);
unsafe{
BitmapData bmpdata = resim.LockBits(new Rectangle(0, 0, resim.Width, resim.Height),ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
byte* p = (byte*)bmpdata.Scan0;
for (int a = 0; a < bmpdata.Height; a++)
{
for (int b = 0; b < bmpdata.Width; b++)
{
p[0] = (byte)((p[0] + p[1] + p[2]) / 3);
p[1] = p[0]=p[2];
p += 4;
}
}
resim.UnlockBits(bmpdata);
return resim;
}
}

RESMİN YATAY VE DİKEY HİSTOGRAMININ ÇIKARILMASI
Herhangi bir yüz resminin yatay histogramı alındığında histogramdaki maksimum nokta yüz üzerinde Burnun X kordinatına denk düşer.Yatay histogram alınırken resmin Genişliği büyüklüğünde bir Array tanımlanır. Herbir yatay değer için o noktaya karşılık düşen yatay pixellerin parlaklık değerlerinin toplamları alınır yani yataydaki pixellerin Gri değerleri toplamları alınır böylece her bir yatay noktaya karşı düşen yatay histogram bulunmuş olur.
Öte yandan Yüz resimlerinde dikey histogram alındığındaysa  minimum noktaya karşılık düşen yerler Gözler ve kaşlardır.Dikey histogram alınırken yüz resminin Yüksekliği kadar bir Array tanımlanır.Yatay histograma benzer olarak dikey histogram alınırken de her bir dikey nokta için dikey kordinatta bulunan pixellerin parlaklık değerlerinin toplamı alınır.Aşağıda yatay ve dikey histogramın C# la gerçeklenmiş kodu bulunmaktadır.
Unsafe
{
BitmapData data = resim.LockBits(new Rectangle(0, 0, resim.Width, resim.Height), ImageLockMode.ReadWrite, resim.PixelFormat);
byte* z = (byte*)data.Scan0;
yatayHistogram = new int[resim.Width];
dikeyHistogram = new int[resim.Height];
for (int i = 0; i < data.Height; i++)
{
for (int j = 0; j < data.Width; j++)
{
yatayHistogram[j] += z[0];//Yatay değerlerin parlaklıkları toplanıyor
dikeyHistogram[i] += z[0];//Dikey değerlerin parlaklıkları toplanıyor
z += 4;
} }
resim.UnlockBits(data);
}
Yatay histogram alındığı zaman maksimum nokta bulunurken histogramda bulunan girinti ve çıkıntıları önlemek için Yumuşatma(Smoothing) işlemi yapılır bu işlemse her bir yatay histogram değeri için kendisinden 2 önceki ve 2 sonraki noktalarının kendisiyle ortalamasının alınıp 2+2+1=5 e bölünmesiyle elde edilir.
Yukarıda da belirtildiği üzere Dikey histogram alındığında minimum noktaya karşılık gelen yerler göz ve kaşlardır.
Temel amacımız yüz resminde göz bebeğini bulmak olduğundan Dikey histogramda tarama yaparken aşağıdan yukarıya tarama yapıldığında ilk minimum nokta olarak göz bulunur.
Burdan 10 veya 20 pixel yukarısı ve aşağısı bir diktörgen halinde çıkarılıp tekrardan yatay ve dikey histogramlar alındığında her iki durum içinde minimum noktaya denk düşen kordinatlar Göz bebeğinin bulunduğu kordinatlardır. Herhangi bir yüz resminde Yatay ve dikey histogramı bulunup dikey ve yatay çizgilerle özellik noktaları verilmiş bir resim aşağıda verilmiştir.
Göz bebeği bulunduktan sonra diğer tüm özellik noktalarının bulunması için Yüz Geometrisinin oranlarından faydalanılmıştır.
YÜZ GEOMETRİSİ
Tabiattaki bir çok olayda benzeri görüldüğü gibi yüz bölgesinde de bir çok noktanın birbirine uzaklıklarının oranı Altın Oran değeri vermektedir buda gösteriyor ki insan yüzünde rastgelelik bulunmamaktadır.Yüz bölgesinde altın oran değeri olan 1.618 oranının bulunduğu noktalardan bazıları şunlardır.
  • Yüzün boyu / Yüzün genişliği,
  • Dudak- kaşların birleşim yeri arası / Burun boyu,
  • Yüzün boyu / Çene ucu-kaşların birleşim yeri arası,
  • Ağız boyu / Burun genişliği,
  • Burun genişliği / Burun delikleri arası,
  • Göz bebekleri arası / Kaşlar arası.
Aşağıdaki yüz resminde altın oranının bulunduğu bazı noktalar belirtilmiştir.
Yine insan Yüzüyle beraber Baş bölgesine ait bazı ilginç oranlar vardır.Bunlardan bazıları şunlardır.
  • İnsan gözleri baş yüksekliğinin tam ortasında bulunur.
  • Ağız,çene ve burnun genişliği hemen hemen aynıdır.
  • Her bir gözün genişliği Yüz genişliğinin 2/5 katı kadardır.
  • İki göz arasındaki uzaklık bir gözün uzunluğu kadardır.
Göz bebeği bulunduktan sonra yüzde bulunan oranlara göre diğer tüm özellik noktaları bulunur. Özellik noktalarını bulmada kullanılan bazı oranlar şunlardır.
  • Baş yüksekliği kadınlarda 7 birim erkeklerde 7.5 birim olarak ölçeklenmiştir.
  • Gözler Baş yüksekliğinin yaklaşık olarak yarısı uzunluğunda bulunmaktadır.
  • Baş genişliği kadınlarda ve erkeklerde 4.5 birim olarak ölçeklenmiştir.
  • Gözlerin ve burnun genişliği 1 birim uzunluğundadır.
  • Dudak çene arası yükseklik kadınlarda 1.3 birim erkeklerde 1.5 birim uzunluğundadır.
Yüz geometrisinden faydalanılarak bulunan yüzün özellik noktalarında bazı istisnai durumlar hariç ( sakal,yüzün yan durması) tam yerlerinde olması oranı yaklaşık olarak %95 lik bir orana tekabül etmektedir.Aşağıda yüzlerin özellik noktalarının belirlendiği resimler yer almaktadır.

MİCROİŞLEMCİLER

MİKROİŞLEMCİLER

   Merhaba arkadaşlar ;

   Bugün Mikroişlemcilerden bahsedeceğiz.Mikrodenetleyicilere başlamadan önce Mikroişlemci Nedir,Ne gibi özelliklere sahiptir bunlara göz atacağız.

    MİKROİŞLEMCİ NEDİR?

    Mikroişlemci, ana işlem biriminin (CPU) fonksiyonlarını tek bir yarı iletken tümleşik devrede (IC) birleştiren programlanabilir bir sayısal elektronik bileşendir. Günümüzde kullanılan bilgisayarların özelliklerinden bahsedilirken duyduğunuz 80386, 80486, Pentium-ll, Pentium-lll birer mikroişlemcidir (Microprocessor). Mikroişlemciler bilgisayar programlarının yapmak istediği tüm işlemleri yerine getirdiği için, çoğu zaman merkezi işlem ünitesi (CPU- Central Processing Unit) olarak da adlandırılır.


     Mikroişlemci, ana işlem birimindeki(CPU) kelime boyutunun (word size) 32 bit ten 4 bit e düşürülmesiyle doğmuştur. Böylece, ana işlem biriminin mantıksal devrelerinin transistörleri tek bir parçaya sığdırılabilmiştir. Bu da pratiklik açısından çok önemlidir. PC adını verdiğimiz kişisel bilgisayarlarda kullanıldığı gibi, bilgisayarla kontrol edilen sanayi tezgahlarında ve ev aygıtlarında da kullanılabilmektedir.


    Mikroişlemcili sistemlerin uygulama alanları



Günlük yaşamda kullanılan mikroişlemcili sistemler

-Otomobillerde ve diğer araçlarda algılama ,denetim ve göstergelerde
-Elektrik motoru içeren sistemlerde motor hızı ,açı gibi ölçümlerde
-Buzdolabı,çamaşır makinesi,bulaşık makinesi gibi beyaz eşyalarda farklı parametrelein denetlenmesi ve
-Kamera ,klavye ,fare ,oyun denetleyicileri,monitör gibi bilgisayar dış birimlerinde
-Cep telefonu içinde görüntü, ses giriş birimlerinde
-Elektronik saatlerde
-Elekronik ajanda,cep bilgisayarlarında
-USB algılayıcı, güncelleyici arabirimi olarak(örn.18f4550)
-Uzaktan anahtarsız kapı açılmasında
-TV ‘lerde uzaktan kumanda,ekran üzerinde ayar ve gösterge birimlerinde
-Güvenlik çevre birimlerinde(uzaktan algılama ve iletişim)


Elektronik sistemlerde kullanılan Mikroişlemcili sistem uygulamaları

-Sayici,zamanlayıcı denetim ve ölçümünde
-Paralel veri giriş/çıkış birimlerinde
-Algılayıcıların çıkış işaretinin dönüşümünde
-Sıcaklık denetim ve ölçümünde
-On/Off denetleyici uygulamalarında
-Sabit internet uygulamalarında
-Denetleyici bölgesi ağı(CAN)
-Bölgesel iç bağlantı ağı(LIN)
-Seri giriş/çıkış birimlerinde
-Endüstriyel kontrol ve ölçme birimlerinde giriş,çıkış veya gösterge olarak
-Akım ,direnç ,gerilim ölçme aletlerinde
-İnternet arabirim denetleyicisine bağlantıda
-Genel amaçlı yol(USB)
-Darbe genişliği modülasyonunda(PWM)
-Telli ve telsiz çalışmalar,radyo frekanslarında(RKE)


Bir mikroişlemci işlevini yerine getirebilmesi için aşağıdaki yardımcı elemanlara ihtiyaç duyar. Bunlar:

1. Input (Giriş) ünitesi.
2. Output (Çıkış) ünitesi.
3. Memory (Bellek) ünitesi.

Bu üniteler CPU chip'inin dışında, bilgisayarın ana kartı üzerinde bir yerde farklı chip'lerden veya elektronik elemanlardan oluşur. Aralarındaki iletişimi ise veri yolu (Data bus), adres yolu (Address bus) denilen iletim hatları yapar.


Bir mikroişlemcinin temel bileşenleri şunlardır.

1-CPU
2-Bellek
3-I/O aygıtları
4-Bus’lar

Kısa gösterimi CPU (Central Proccessing Unit) olan, merkezi işlem ünitesi, mikro işlemcinin kendisidir. Bellek ve giriş/çıkış üniteleri, buss adı verilen elektronik hatlar ile CPU’ya bağlanmaktadır. CPU tüm çevre aygıtları (mönitör, disk, klavye, printer gibi) ile iletişim kurarak bunlar arasındaki bilgi alış verişinin gerçekleşmesini sağlar.


Mikroişlemcileri Birbirinden Ayıran Özellikler

Kelime Uzunluğu

Mikroişlemcinin her saat darbesinde işlem yapabileceği bit sayısına kelime uzunluğu
denir. İşlemciler bu süre zarfında komutları yorumlar veya bellekteki veriler üzerinde işlem yapar. İşlenen veriler işlemcinin özelliğine göre 4-bit, 8-bit, 16-bit, 32-bit ve 64-bit uzunluğunda olabilir. Kelime uzunluğu veri yolu uzunluğuna eşittir. İşlemci, her saat darbesinde işleyebildiği kelime uzunlu ile tanımlanır.

Komut İşleme Hızı

Mikroişlemcilerin çalışması için saat sinyallerine ihtiyaç vardır. İşlemci (CPU) her saat sinyalinde bir sonraki işlem basamağına geçer. İşlemcinin hızını incelerken saat frekansına ve komut çevrim sürelerine bakmak gerekir. Saat frekansı mikroişlemciye dışardan uygulanan ya da işlemcinin içinde bulunan osilatörün frekansıdır. Komut çevrim süresi ise herhangi bir komutun görevini tamamlayabilmesi için geçen süredir.

Bir mikroişlemcinin hızını artıran temel unsurlar şöyle sıralanabilir:

-CPU tasarım teknolojisi
-Kelime uzunluğu
-islemci komut kümesi çeşidi
-Zamanlama ve kontrol düzeni
-Kesme altyordamlarının çeşitleri
-Bilgisayar belleğine ve giriş/çıkış aygıtlarına erişim hızı

Adresleme Kapasitesi

Bir işlemcinin adresleme kapasitesi, adresleyebileceği veya doğrudan erişebileceği
bellek alanının büyüklüğüdür. Bu büyüklük işlemcinin adres hattı sayısına bağlıdır. Bu hattın sayısı tasarlanacak sistemde kullanılabilecek bellek miktarını da belirlemektedir.


Kaydedici Sayısı

Bir programcının assembly diliyle program yazımı sırasında en çok ihtiyaç duyduğu
geçici bellek hücreleri kaydedicilerdir. Tüm mikroişlemcilerde bu gruplara dahil edebileceğimiz değişik görevlere atanmış, farklı özellikte, sayıda kaydediciler bulunur. Bu kaydediciler 8, 16, 32 ve 64-bitlik olabilir. Kaydedicilerin sayısının programcının işinin kolaylaştırmasının yanında programın daha sade ve anlaşılır olmasını da sağlar.

Farklı Adresleme Modları

Bir komutun işlenmesi için gerekli verilerin bir bellek bölgesinden alınması veya bir bellek bölgesine konulması ya da bellek–kaydedici veya kaydedici–kaydedici arasında değiştirilmesi için farklı erişim yöntemleri kullanılır. Mikroişlemcinin işleyeceği bilgiye farklı erişim şekilleri, ‘adresleme yöntemleri’ olarak ifade edilir.

Adresleme modlarını meydana getiren bazı adresleme türleri aşağıda sıralanmıştır.

-Doğrudan adresleme
-Dolaylı adresleme
-Veri tanımlı adresleme
-Kaydedici adresleme
-Mutlak adresleme
-Göreceli adresleme
-İndisli adresleme
-Akümülatör ve imalı adresleme


İlave Edilecek Devrelerle Uyumluluk

Mikroişlemcili sisteme eklenecek devrelerin en azından işlemci hızında çalışması
gerekir. Sisteme ilave edilecek bellek entegrelerinin hızları işlemci ile aynı hızda olması tercih edilmelidir. Aynı şekilde sisteme takılan giriş çıkış birimlerinin hızları ve performansları mikroişlemci ile aynı veya çok yakın olmalıdır. Sisteme takılan birimlerin hızları mikroişlemciye göre düşükse mikroişlemcinin hızı diğer elemanlardaki yavaşlıktan dolayı düşer.

27 Kasım 2013 Çarşamba

WİN 8 DE BAŞLATIRKEN NUMLOCK SORUNU

BAŞLATIRKEN NUMLOCKUNUZ OTOMATİK AÇIK OLMUYORSA ŞU YOLLARI TAKİP EDİN
KOMUT SATIRINDAN REGEDİT YAZIYORUZ.VE AŞAĞIDAKİ YOLU TAKİP EDİYORUZ.
[HKEY_USERS\.DEFAULT\Control Panel\Keyboard]

5 Mayıs 2013 Pazar

CLASS-POLİNOM

CLASS-POLİNOM(TOPLAMA-ÇIKARMA)
// ax^2+bx+c=0                                                          kullanacağımız formüller
// bx+c=0
// x=-c/b
#include <iostream>
#include <cmath>

using namespace std;

class Polinom{                                                            classın tanımı
    float a,b,c;                                                               private üyelerin tanımı
    void kokbul(float b, float c);                                     private fonksiyonların prototipi
    void kokbul(float a, float b, float c);
public:
    void kokbul();                                                        erişilebilir fonksiyonun prototipi
    Polinom(int _a, int _b, int _c);                                 yapıcı fonksiyonun prototipi
    void set_a(float _a);                                               atama fonksiyonlarımı
    void set_b(float _b);
    void set_c(float _c);
    float get_a(){ return a; }                                         döndürme fonksiyonlarımız
    float get_b(){ return b; }
    float get_c(){ return c; }
};

Polinom::Polinom (int _a=0,int _b=0,int _c=0)             yapıcı fonksiyonun tanımı değer atanıyor
{
    a=_a;                              
    b=_b;
    c=_c;
}
void Polinom::kokbul()                            polinomun 1.derecedenmi 2.derecedenmi olduğuna bakılıyor
{
    if(a==0)
    {
        kokbul(b,c);
    }
    else
    {
        kokbul(a,b,c);
    }
}
void Polinom::kokbul(float b, float c)                          1.dereceden denklemin işlemi yapılıyor
{
    float kok1=-c/b;
    cout << kok1;
}
void Polinom::kokbul(float a, float b, float c)               2.dereceden denklemin işlemi yapılıyor
{
    int delta = b*b-4*a*c;
    if(delta>=0)
    {
        float kok1=(-b-sqrt(delta))/(2*a);
        float kok2=(-b+sqrt(delta))/2*a;
        cout << kok1 << "\t" << kok2 << endl;
    }
    else
        cout << "Gercek kok yok." << endl;
}
void Polinom::set_a(float _a)                                     atama fonksiyonları tanımlanıyor
{
    a=_a;
}
void Polinom::set_b(float _b)
{
    b=_b;
}
void Polinom::set_c(float _c)
{
    c=_c;
}


Polinom islem(Polinom A, Polinom B, char i)            polinomların toplanmasını sağlıyor
{
    Polinom sonuc;
    if(i=='+')
    {
    sonuc.set_a(A.get_a()+B.get_a());
    sonuc.set_b(A.get_b()+B.get_b());
    sonuc.set_c(A.get_c()+B.get_c());
    }
    else if(i=='-')                                                        farkının alınmasını sağlıyor
    {
    sonuc.set_a(A.get_a()-B.get_a());
    sonuc.set_b(A.get_b()-B.get_b());
    sonuc.set_c(A.get_c()-B.get_c());
    }
    else
        cout << "Girdiginiz islem yanlis.";
    return sonuc;
}

Polinom islem(Polinom A, Polinom B)
{
    Polinom sonuc;
    sonuc.set_a(A.get_a()+B.get_a());
    sonuc.set_b(A.get_b()+B.get_b());
    sonuc.set_c(A.get_c()+B.get_c());
    return sonuc;
}

int main()
{
    Polinom P1(0,4,4),P2(1,2,2),P3;                   nesneler aracılığı ile değrler gönderiliyor
    P3=islem(P1,P2);                                          p3 polinomu oluşturuluyor
    cout << P3.get_a() << " " << P3.get_b() << " " << P3.get_c() << endl;           ekrana yazdırılıyor
    return 0;
}
EKRAN ÇIKTISI