Sayfalar

diziler etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
diziler etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

27 Nisan 2015 Pazartesi

Örnekler


ÖRNEKLER

Armstrong SayılarıHer basamağın, sayının basamak sayısı kadar kuvvetinin alınıp toplanmaları ile elde edilen sonuç armstrong sayılarını verir.
0 dan 999 a kadar olan armstrong sayılarını bulan programı yazalım.


int sayı1, sayı2, b, o, y, s, f;
    sayı1 = 0;
    sayı2=1000;
    for (sayı1; sayı1 <= sayı2; sayı1++)
    {
        y = sayı1 / 100;
        o = sayı1 % 100;
        s = o / 10;
        b = o % 10;
        f = (y*y*y + s*s*s + b*b*b);
        if (sayı1 == f)
        {
            cout << sayı1 << endl;
        }
    }

-------------------------------------------------------------------------------------------------------
 Asal Sayılar: 1 ve kendisinden başka pozitif tam böleni olmayan sayılara denir.

int a, c, d;
    cout << "Son değeri giriniz....:";
    cin >> a;
    for (int b = 2; b < a; b++)
    {
        d = 1;
        for (int g = 2; g <= b / 2; g++)
        {
            if (b%g == 0)
                d = 0;
        }

        if (d == 1)
            cout << b << endl;

    }

-------------------------------------------------------------------------------------------------------
 Dikdörtgen çizelim.

    int x, y,a,b;
    cout << "Cizilecek dikdörtgen boyutu" << endl;;
    cin >> x >> y;
   

    for ( a = 0; a < x;a++)
    {
        for ( b = 0; b < y;b++)
        {
            cout << "#";
        }
        cout << endl;
    }



-------------------------------------------------------------------------------------------------------
Bir cümle girilsin ve içinden bir harf istensin, istenen harfin dizideki yerlerini bulan programı yazalım.

int sayac = 0;
    char d[50], a;
    setlocale(LC_ALL, "Turkish");
    cout << "Lütfen cümle giriniz....:";
    gets_s(d);
    cout << "İstenilen harfler....:";
    cin >> a;
    for (int x = 1; x < 51; x++)
    {
        if (d[x] == a)
        {
            sayac++;
            cout << "  " << x;
        }
    }
    cout << endl;
 -------------------------------------------------------------------------------------------------------
Negatif bir sayı alınıncaya kadar girilen sayılar arasındaki en büyük sayıyı bulan programı yazalım.

 int ek, eb, temp,a;
    setlocale(LC_ALL, "TURKISH");
    cout << "Değer gir" << endl;
    cin >> ek >> eb;
    while (ek>=0 && eb>=0)
    {
        if (ek <= eb)
            cin >> ek;
        else if (ek>eb)
        {
            temp = eb;
            eb = ek;
            ek = temp;
        }
       

    }
    cout << "En Büyük....:" << eb<<endl;

-------------------------------------------------------------------------------------------------------
İki diziyi çarpan ve trasnpozunu alan programı yazalım.
int i, j, diziboyutu, sayi, dizi[10][10], dizi2[10][10], sonuc[10][10] = { 0 };
    cout << "Matrisinizin boyunu giriniz....:" << endl;
    cin >> diziboyutu;
    //Dizi elemeanlarını giriyoruz.
    for (i = 0; i < diziboyutu; i++)
    {
        for (j = 0; j < diziboyutu; j++)
        {
            cin >> dizi[i][j];
        }
        cout << endl;
    }

    for (i = 0; i<diziboyutu; i++)
    {
        for (j = 0; j<diziboyutu; j++)
        {
            cout << "  " << dizi[i][j];
        }
        cout << endl;
    }
    cout << endl << endl << endl;
//Transpoz.
    for (i = 0; i<diziboyutu; i++)
    {
        for (j = 0; j<diziboyutu; j++)
        {
            cout << "  " << dizi[j][i];
        }
        cout<< endl;
    }
    cout << endl << endl << endl;
    //Matris çarpımı.
    cout << "Carpilacak diziyi giriniz...:";
    for (i = 0; i < diziboyutu; i++)
    {
        for (j = 0; j < diziboyutu; j++)
        {
            cin >> dizi2[i][j];
        }
        cout << endl;
    }
    cout << "Carpilacak diziyi giriniz...:";
    for (i = 0; i < diziboyutu; i++)
    {
        for (j = 0; j < diziboyutu; j++)
        {
            cin >> dizi[i][j];
        }
        cout << endl;
    }

    for (int i = 0; i < diziboyutu; i++)
    {
        for (int j = 0; j < diziboyutu; j++)
        {
            for (int k = 0; k < diziboyutu; k++)
            {
                sonuc[i][j] += dizi[i][k] * dizi2[k][j];
            }
            cout << endl;
        }
    }
    for (i = 0; i < diziboyutu; i++)
    {
        for (int j = 0; j < diziboyutu; j++)
        {
            cout << sonuc[i][j] << "   ";
        }
        cout <<endl;
    }
 -------------------------------------------------------------------------------------------------------
Zar atma oyunu yapalım. Bilgisayar kendisi 1000 kere zar atsın ve gelen sayıları tutsun.

 int zar()
{
    return rand () % 6 + 1;

}

 //main ekleyin
int bir=0, iki=0, uc=0, dört=0, bes=0, alti=0 ;
    for (int i = 0; i < 1000; i++)
    {
        switch (zar())
        {
        case 1: bir++; break;
        case 2: iki++; break;
        case 3: uc++; break;
        case 4: dört++; break;
        case 5: bes++; break;
        case 6: alti++; break;
        default:
            break;

        }
    }
        cout << "Bir...: " << bir << endl;
        cout << "İki...: " << iki << endl;
        cout << "Üç...: " << uc << endl;
        cout << "Dört...: " << dört << endl;
        cout << "Beş...: " << bes << endl;
        cout << "Altı...: " << alti << endl;
    
Not: rand fonksiyonu random sayılar verir ancak çalışma prensibinden dolayı her zaman aynı sayıları alırsınız. Farklı sayılar çıkması için srand(time(null)); fonksiyonunu kullanmanız lazım.


Not: Yukarıdaki bütün kodlar Visual Studio da yazılmıştır. Kodları direkt olarak kopyalayarak çalıştırabilirsiniz.

26 Nisan 2015 Pazar

Diziler

          TEK BOYUTLU DİZİLER

Diziler işlerimizi oldukça kolaylaştırmaktadır. Şöyle ki birden dazla değer girileceğinde tek tek değişken ataması yapmak yerine yerine tek bir dizi kullanarak bu işi kolaylıkla halledebiliriz.

Örneğin 4 kişilik bir sınıfımız olsun bu sınıftaki her öğrencinin notlarını tek tek kaydetmemiz oldukça zor olacak. Diziler burada yardımımıza koşuyor. 4 elemanlı bir dizi oluşturarak işimizi rahatlıkla hallederiz. Buradaki sayının 4 değilde 100 olduğunu düşünün.

Dizileri tanımlamanın birden fazla yolu vardır.

1.- Gösterim:
Dizi[0]=12;
Dizi[1]=25;
Dizi[2]=36;

2.- Gösterim: 
Dizi[]={12,58,78};
Dizi[]={'E','k','r','a','n','c','i','k','t','i','s','i'};
Not: Bu şekilde tanımlama yaptığımızda dizinin boyutunu belirlemek zorunda kalmayız.Not: Dizilerin ilk indisi 1 değil 0'dır. Her dizinin ilk indisi 0'dır.

#include "stdafx.h"
#include <iostream>

using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    int dizi[4];
    cout << "Not giriniz"<<endl;
    for (int i = 0; i < 4; i++)
    {
        cin >> dizi[i];
    }
    for (int i = 0; i < 4; i++)
    {
        cout << dizi[i]<<"  ";
    }
    system("pause");
    return 0;
}





ÇOK BOYUTLU DİZİLER

 Mantık olarak tanımlama aynıdır. Çok boyutlu diziler matris mantığı ile çalıştıklarından dolayı birinci indeks satır, ikinci indeks sütunları temsil etmektedir.

Not: Küçük bir ayrıntı olarak dizi tanımlarken ilk indisin içinin boş bırakılabileceğini bilelim. Nasıl kullanıldığını buraya bir satır kod yazarak göstereceğim. 
dizi[][15]={"Pazartesi","Salı","Çarşamba"}; Siz ekledikçe derleyici ilk kutuyu kendisi dolduracaktır.

dizi[a][i]     Dizide istediğimiz indise bu şekilde ulaşıyoruz. Kaçıncı sütun ve kaçıncı satır olduğunu dışarıdan girebiliyoruz.


#include "stdafx.h"
#include <iostream>

using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    int dizi[3][3];
    cout << "Not giriniz"<<endl;
    for (int i = 0; i < 3; i++)
    {
        for (int a = 0; a <3 ;a++)
        {
            cin >> dizi[a][i];
        }
    }
    for (int i = 0; i < 3; i++)
    {
        for (int a = 0;a<3;a++)
        {
            cout << dizi[a][i] << "  ";  //Dizide istediğimiz indise bu şekilde ulaşıyoruz.
        }
        cout << endl;
    }
    system("pause");
    return 0;
}


Not: Yukarıdaki bütün kodlar Visual Studio da yazılmıştır. Kodları direkt olarak kopyalayarak çalıştırabilirsiniz.