Şimdi Ara

C/C++/C# Sorularınız Buraya. . .(GÜNCEL) (67. sayfa)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
4.173
Cevap
118
Favori
165.494
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
3 oy
Öne Çıkar
Sayfa: önceki 6566676869
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • quote:

    Orijinalden alıntı: yasasin.domates

    Kullanıcıdan alınan değere göre bir küme oluşturan ve aşağıdaki gibi bir çıktı veren program yazmaya çalışıyorum.
    {1, 2, 3} dizisinin alt kümeleri;
    { }
    { 1 }
    { 2 }
    { 3 }
    { 1, 2 }
    { 1, 3 }
    { 2, 3 }
    { 1, 2, 3 }

    Diziyi oluşturma ve diziye eleman atama kısmını hallettim ama 2 ve 3 elemanlı alt kümelerini nasıl oluşturacağım çözemedim. 8 elemanlı bir küme olursa 4,5,6,7 elemanlı alt kümelerini de buldurmam gerekiyor. Biraz açıklayabilir misiniz?

    Bu konu düşmüş yukarı taşıyalım.

    Biraz geç olacak ama bunun güzel bir yöntemi var. Önce bir unsigned değişken oluşturup sıfırlarız.
    unsigned int alt = 0;

    Bu değişkendeki 1 olan bitler bize sırasıyla altkümeleri verecek. Her seferinde değişkeni 1 arttırıp 1 olan bitlere karşılık gelen küme elemanlarını yazdıracağız. Örneğin küme 3 elemanlı ise bize ilk 3 bit lazım.

    Küme = {3,2,1}
    alt = 000 = { }
    ++alt = 001 = {1}
    ++alt = 010 = {2}
    ++alt = 011 = {2,1}
    ++alt = 100 = {3}
    ++alt = 101 = {3,1}
    ++alt = 110 = {3,2}
    ++alt = 111 = {3,2,1}

    1 olan bitleri test etmek için değişken uygun bir sayı ile & işlemine sokulur.

    unsigned int sayi = 1;
    if(alt & sayi) // 0. bit 1

    sayi <<= 1;
    if(alt & sayi) // 1. bit 1

    sayi <<= 1;
    if(alt & sayi) // 2. bit 1
    ...




  • quote:

    Orijinalden alıntı: atilkan

    İyi günler,
    Yazdığım XOX oyununa yapay zeka eklemek istiyorum. Ancak ne şekilde yapabileceğimi tam olarak çözemedim.
    Aklıma gelen tek yöntem benim belirlediğim senaryoları test ederek yapay zekanın ona göre "O" koyması.
    Sadece mantık söylerseniz yada basit bi algoritma kurarsanız çok makbule geçer.
    Teşekkürler


    Senin belirlediğin değil bütün senaryoları test etmesi lazım ama her olasılığı test etmek if else ile olacak iş değil. XOX gibi çok sınırlı derinlikteki problemler için olabilir ama devamlı olan oyunlarda bu imkansıza yakın ve hataya çok açık olur.

    Peki nasıl olacak dersen board oyunlarında olasılıkları çözmek için minimax ağacı denen bir veri yapısı kullanılır (bunun çeşitleri de var). Ağacın ne kadar derine ineceği belirlenebilir. Derine indikçe işlemci ve bellek ihtiyacı artar ama program daha zeki olur.

    Veri yapılarına aşina değil isen önce bağlı liste, ardından ağaçlara dalabilirsin. Çokta zevklidirler.




  • quote:

    Orijinalden alıntı: ~H!ddeN

    Arkadaşlar, c++'ta bir sorum olacak.
     
    int fonksiyon(int* dizi,int a,int b)
    {
    for(int i=0;i<5;i++)
    {
    dizi[i]=i;
    }
    cin>>a>>b;
    }

    int fonksiyon2()
    {

    }

    Koddaki gibi oluşturduğum değerleri diğer bir fonksiyonda nasıl kullanabilirim? Pointerları bir türlü kavrayamadım. Mesela fonksiyon2 adında bir fonksiyon oluşturdum ve bunda ilk fonksiyondaki diziyi ve a,b değerlerini aynen kullanmak istiyorum. Nasıl yapabilirim?

    int fonk2(int *dizi, int a, int b)...

    Burada fonk2 içinde dizi de yaptığın her değişiklik orjinal diziyi etkiler çünkü dizinin başlangıç adresi geçirilir ve direkt bu adres üzerinde işlem yapılır. Buna referans ile çağırma denir. a ve b üzerindeki oynamalar ise orjinal a ve b yi etkilemez çünkü bunların adresleri değil sadece sayı değerleri geçirilir. Eğer değişiklik yaptığımda hepsi etkilensin diyorsan hepsinin adresini geçirirsin. Bu durumda fonksiyon başlığı şöyle olacak.

    int fonk2(int *dizi, int *a, int *b)...

    Çağırırken de
    int result = fonk2(dizi, &a, &b);

    Eğer & olmadan çağırırsan derleme hatası alırsın çünkü türler uyumsuz. int* != int




  • quote:

    Orijinalden alıntı: elektro_gadget

    int fonk2(int *dizi, int *a, int *b)...

    Çağırırken de
    int result = fonk2(dizi, &a, &b);

    Eğer & olmadan çağırırsan derleme hatası alırsın çünkü türler uyumsuz. int* != int

    Peki fonk2'de neden dizinin başına & işareti koymadık hocam? Teşekkürler bu arada.
  • 2- #include<stdio.h>
    BÜ # include<conio.h>
    MYO main()
    isminiz
    isminiz
    isminiz
    MYO
    isminiz *10 defa
    isminiz
    isminiz
    MYO
    isminiz
    isminiz
    isminiz


    Yukarıdaki çıktıyı SIRASIYLA do-while,while ve for kullanarak yazınız?


    acele yardım
  • quote:

    Orijinalden alıntı: ~H!ddeN

    Peki fonk2'de neden dizinin başına & işareti koymadık hocam? Teşekkürler bu arada.

    O kendiliğinden adres çünkü. Dizi isimleri de aslında bir işaretçidir ama içindeki adresler sabittir değişemez farkı bu. Bunları iyi anlamak istiyorsan adres, dizi ve işaretçi konularını tekrar gözden geçirmelisin.
  • quote:

    Orijinalden alıntı: elektro_gadget

    quote:

    Orijinalden alıntı: ~H!ddeN

    Peki fonk2'de neden dizinin başına & işareti koymadık hocam? Teşekkürler bu arada.

    O kendiliğinden adres çünkü. Dizi isimleri de aslında bir işaretçidir ama içindeki adresler sabittir değişemez farkı bu. Bunları iyi anlamak istiyorsan adres, dizi ve işaretçi konularını tekrar gözden geçirmelisin.

    O zaman bu diziye eleman atamak için 2. fonksiyonda dizinin başına * işareti mi koymak gerekiyor direk o adresteki elemanı değiştirmek için?
  • quote:

    Orijinalden alıntı: ~H!ddeN

    O zaman bu diziye eleman atamak için 2. fonksiyonda dizinin başına * işareti mi koymak gerekiyor direk o adresteki elemanı değiştirmek için?

    Evet öyle. dizi ifadesi adresin kendisini verirken *dizi veya dizi[0] o adresteki veriyi temsil eder (dereference). Bu adres ile diğer elemanlara da ulaşılır.

    *(dizi + 4) veya dizi[4] dersek bu adresten 4 sonraki elemana ulaşmış oluruz. Dizi elemanlarının bellekte ardarda dizilmesi bu imkanı veriyor. Elemanların bellekte rastgele dağıldığı veri yapılarında bu şekilde erişim olamaz.

    Unutmadan a ve b değişkenlerine de aynı şekilde erişiyoruz. fonk2 deki a adresi verir fakat *a o adresteki içeriği. a[0] da doğrudur ama a[1] yanlış çünkü o bölge bizim değil.
  • quote:

    Orijinalden alıntı: elektro_gadget

    quote:

    Orijinalden alıntı: ~H!ddeN

    O zaman bu diziye eleman atamak için 2. fonksiyonda dizinin başına * işareti mi koymak gerekiyor direk o adresteki elemanı değiştirmek için?

    Evet öyle. dizi ifadesi adresin kendisini verirken *dizi veya dizi[0] o adresteki veriyi temsil eder (dereference). Bu adres ile diğer elemanlara da ulaşılır.

    *(dizi + 4) veya dizi[4] dersek bu adresten 4 sonraki elemana ulaşmış oluruz. Dizi elemanlarının bellekte ardarda dizilmesi bu imkanı veriyor. Elemanların bellekte rastgele dağıldığı veri yapılarında bu şekilde erişim olamaz.

    Unutmadan a ve b değişkenlerine de aynı şekilde erişiyoruz. fonk2 deki a adresi verir fakat *a o adresteki içeriği. a[0] da doğrudur ama a[1] yanlış çünkü o bölge bizim değil.

    Tamamdır hocam çok teşekkürler.




  • Arkadaşlar bir konuda yardımınıza ihtiyacım var

    Db lı bır uygulama hazırlıyorum.Veritabanı dosyamı Projem >> Bin >> Debug klasorunun içersine (.exe dosyasının yanına) yerleştirdim ve form içersinde

    Veritabanı dosya adım :muhammed.accdb
    Dosyanın Dizini: Projem>> bin >> debug >> muhammed.accdb

    quote:

    OleDbConnection bag = new OleDbConnection("Provider=Microsoft.Ace.OleDb.12.0;Data Source=muhammed.accdb");


    Şeklinde kullanıyorum.Visual studio 2012 den Start Debug edınce uygulama sorunsuz calsıyıor.

    Peki bu uygulamayı bır baska bılgısayarda açmayı denesem Data source yolunu değiştirmeme gerek var mı?

    Bazı forumlarda şoyle bir yazım türü yapılmış
    quote:

    OleDbConnection bag = new OleDbConnection("Provider=Microsoft.Ace.OleDb.12.0;Data Source=|DataDirectory|\muhammed.accdb");

    Bu gösterim ile benım yapıgım gosterımın farkı nedir?Programın farklı bilgisayarlardada veritabanıyla sorunsuz calısabılmesı ıcın hangısını kullanmalıyım ?


    Teşekkür ederim ,



    < Bu mesaj bu kişi tarafından değiştirildi Koyuncu332 -- 22 Mart 2013; 0:07:44 >




  • quote:

    Orijinalden alıntı: Koyuncu332

    Arkadaşlar bir konuda yardımınıza ihtiyacım var

    Db lı bır uygulama hazırlıyorum.Veritabanı dosyamı Projem >> Bin >> Debug klasorunun içersine (.exe dosyasının yanına) yerleştirdim ve form içersinde

    Veritabanı dosya adım :muhammed.accdb
    Dosyanın Dizini: Projem>> bin >> debug >> muhammed.accdb

    quote:

    OleDbConnection bag = new OleDbConnection("Provider=Microsoft.Ace.OleDb.12.0;Data Source=muhammed.accdb");


    Şeklinde kullanıyorum.Visual studio 2012 den Start Debug edınce uygulama sorunsuz calsıyıor.

    Peki bu uygulamayı bır baska bılgısayarda açmayı denesem Data source yolunu değiştirmeme gerek var mı?

    Bazı forumlarda şoyle bir yazım türü yapılmış
    quote:

    OleDbConnection bag = new OleDbConnection("Provider=Microsoft.Ace.OleDb.12.0;Data Source=|DataDirectory|\muhammed.accdb");

    Bu gösterim ile benım yapıgım gosterımın farkı nedir?Programın farklı bilgisayarlardada veritabanıyla sorunsuz calısabılmesı ıcın hangısını kullanmalıyım ?


    Teşekkür ederim ,

    veri tabanı ile exe dosyanın aynı yerde olması veri tabanını görmesi için yererli yani yol belirtmene gerek yok. datadirectory metot ile kullanılıyor diye biliyorum.




  • quote:

    Orijinalden alıntı: alifuat_a

    quote:

    Orijinalden alıntı: Koyuncu332

    Arkadaşlar bir konuda yardımınıza ihtiyacım var

    Db lı bır uygulama hazırlıyorum.Veritabanı dosyamı Projem >> Bin >> Debug klasorunun içersine (.exe dosyasının yanına) yerleştirdim ve form içersinde

    Veritabanı dosya adım :muhammed.accdb
    Dosyanın Dizini: Projem>> bin >> debug >> muhammed.accdb

    quote:

    OleDbConnection bag = new OleDbConnection("Provider=Microsoft.Ace.OleDb.12.0;Data Source=muhammed.accdb");


    Şeklinde kullanıyorum.Visual studio 2012 den Start Debug edınce uygulama sorunsuz calsıyıor.

    Peki bu uygulamayı bır baska bılgısayarda açmayı denesem Data source yolunu değiştirmeme gerek var mı?

    Bazı forumlarda şoyle bir yazım türü yapılmış
    quote:

    OleDbConnection bag = new OleDbConnection("Provider=Microsoft.Ace.OleDb.12.0;Data Source=|DataDirectory|\muhammed.accdb");

    Bu gösterim ile benım yapıgım gosterımın farkı nedir?Programın farklı bilgisayarlardada veritabanıyla sorunsuz calısabılmesı ıcın hangısını kullanmalıyım ?


    Teşekkür ederim ,

    veri tabanı ile exe dosyanın aynı yerde olması veri tabanını görmesi için yererli yani yol belirtmene gerek yok. datadirectory metot ile kullanılıyor diye biliyorum.

    Uygulamayı setup haline getirirken veritabnı dosyamı .exe dosyası ıle aynı dızıne koyacagım

    OleDbConnection bag = new OleDbConnection("Provider=Microsoft.Ace.OleDb.12.0;Data Source="+Application.StartupPath+"\\muhammed.accdb";

    Connectionstringimi de boyle yaptım.Herhangi bir sorun var mı arkadaşlar?




  • OleDbConnection bag = new OleDbConnection("Provider=Microsoft.Ace.OleDb.12.0;Data Source=muhammed.accdb";
    demen de yeterli olur
  • C # ta form üzerinde kendime ait bir rengi şekli olan nesne yapmak istiyorum. Örneğin kırmızı renkli bir daire.
    Ama program çalışırken form üzerinde mouse ile onu hareket ettirebileyim. Nasıl yapacağım taktik verebilecek arkadaş var mı?
  • 

    Arkadaşlar başlayalı 2 hafta oldu ve bu soruyla karşı karşıyayım..Yardımınıza ihtiyacım olacak zorlanıyorum.. 1 saat uğraştım fakat daha en başından hata alıyorum..Soru şu :

    Kullanıcıdan klavye yoluyla aldığımız iki tarih arasındaki(gün,ay,yıl) gün sayısını hesaplayarak geri döndüren c++ konsol uygulaması yazınız..
    Extra sorudaki bilgiler şöyle :
    1-) Gün,ay ve yıl unsigned short int veri tipinde saklanacak.
    2-) Artık yıllar da dikkate alınacak.Şubat 4 senede bir 29 çekiyor.
    3-) Eğer mevcut olmayan tarih girilirse mesela 20.15.2013 (12'den fazla ay numarası olmaz.) uyarı vericek.
    4-) Ayrıca fonksyon,global değişken ve dizi kullanımına izin yok.Sadece if-else,while,for gibi basit şeylerle yazılacak.Zannediyorum program biraz uzun ama uğraşan arkadaşlar olrsa çok sevinirim.
    Birkaç test sonucu var onlarıda veriyim örnek olarak :

    1,1,2013 ile 2,1,2013 arasında 1 gün vardır.
    1,1,2012 ile 1,3,2012 arasında 60 gün vardır. (Artık yıl)
    1,1,2011 ile 8,8,2013 arasında 585 gün vardır.
    1,1,1900 ile 31,12,1999 arasında 36523 gün vardır.
    1,13,2008 ile 2,12,2009 Girilen 1.tarih hatalı.

    Bilgiler bukadar yardımcı olabilecek arkadaşlarıma şimdiden teşekkür ediyorum.




  • quote:

    Orijinalden alıntı: £XE

    Arkadaşlar buraya böyle bir konu açma ihtiyacı duydum. C/C++/C# da takıldığınız yerler olursa bu konu altında paylaşın. Ben ve diğer arkadaşlar elimizden geldikçe yardımcı olalım.

    [size=3]NOT : Bana şu programı yazabilir misiniz ? Tarzında sorulara cevap vermeyeceğim. Önce kendiniz yapabildiğiniz kadar yapın, takıldığınız yerlerde kodu koyup sorun yardımcı olalım..





    İyi Çalışmalar.

    klavyeden girilin bir sayının rakamlarını alt alta yazmak hakkında yardımcı olabilirmisiniz.printf'i kullandım ama sürekli hata veriyo 3 güne ödevimi yetiştirmem gerekiyor yardımcı olursanız sevinirim




  • quote:

    Orijinalden alıntı: can_navaro5

    quote:

    Orijinalden alıntı: £XE

    Arkadaşlar buraya böyle bir konu açma ihtiyacı duydum. C/C++/C# da takıldığınız yerler olursa bu konu altında paylaşın. Ben ve diğer arkadaşlar elimizden geldikçe yardımcı olalım.

    [size=3]NOT : Bana şu programı yazabilir misiniz ? Tarzında sorulara cevap vermeyeceğim. Önce kendiniz yapabildiğiniz kadar yapın, takıldığınız yerlerde kodu koyup sorun yardımcı olalım..





    İyi Çalışmalar.

    klavyeden girilin bir sayının rakamlarını alt alta yazmak hakkında yardımcı olabilirmisiniz.printf'i kullandım ama sürekli hata veriyo 3 güne ödevimi yetiştirmem gerekiyor yardımcı olursanız sevinirim

    Dogru anladiysam su tarz bir sey istiyorsun sanirim.
     
    int main()
    {
    int number;
    printf("Please enter a number");
    scanf("%d",&number);
    while(number > 0)
    {
    printf("%d\n",number%10);
    number = number / 10 ;
    }
    return 0;
    }




  • quote:

    Orijinalden alıntı: Hypersomniac

    quote:

    Orijinalden alıntı: can_navaro5

    quote:

    Orijinalden alıntı: £XE

    Arkadaşlar buraya böyle bir konu açma ihtiyacı duydum. C/C++/C# da takıldığınız yerler olursa bu konu altında paylaşın. Ben ve diğer arkadaşlar elimizden geldikçe yardımcı olalım.

    [size=3]NOT : Bana şu programı yazabilir misiniz ? Tarzında sorulara cevap vermeyeceğim. Önce kendiniz yapabildiğiniz kadar yapın, takıldığınız yerlerde kodu koyup sorun yardımcı olalım..





    İyi Çalışmalar.

    klavyeden girilin bir sayının rakamlarını alt alta yazmak hakkında yardımcı olabilirmisiniz.printf'i kullandım ama sürekli hata veriyo 3 güne ödevimi yetiştirmem gerekiyor yardımcı olursanız sevinirim

    Dogru anladiysam su tarz bir sey istiyorsun sanirim.
     
    int main()
    {
    int number;
    printf("Please enter a number");
    scanf("%d",&number);
    while(number > 0)
    {
    printf("%d\n",number%10);
    number = number / 10 ;
    }
    return 0;
    }


    yardımın için sağol.evet bende bunu yaptım ama programı çalıştırdığım zaman hem rakamları terse yazıyor hemde programı hemen kapatıyor.
    örnek
    değeri giriniz=123
    1
    2
    3

    bunun olmasını istiyorum ama rakamlar tersten yazılıyor.yardımcı olabilirsen sevinirim.




  • quote:

    Orijinalden alıntı: can_navaro5

    quote:

    Orijinalden alıntı: Hypersomniac

    quote:

    Orijinalden alıntı: can_navaro5

    quote:

    Orijinalden alıntı: £XE

    Arkadaşlar buraya böyle bir konu açma ihtiyacı duydum. C/C++/C# da takıldığınız yerler olursa bu konu altında paylaşın. Ben ve diğer arkadaşlar elimizden geldikçe yardımcı olalım.

    [size=3]NOT : Bana şu programı yazabilir misiniz ? Tarzında sorulara cevap vermeyeceğim. Önce kendiniz yapabildiğiniz kadar yapın, takıldığınız yerlerde kodu koyup sorun yardımcı olalım..





    İyi Çalışmalar.

    klavyeden girilin bir sayının rakamlarını alt alta yazmak hakkında yardımcı olabilirmisiniz.printf'i kullandım ama sürekli hata veriyo 3 güne ödevimi yetiştirmem gerekiyor yardımcı olursanız sevinirim

    Dogru anladiysam su tarz bir sey istiyorsun sanirim.
     
    int main()
    {
    int number;
    printf("Please enter a number");
    scanf("%d",&number);
    while(number > 0)
    {
    printf("%d\n",number%10);
    number = number / 10 ;
    }
    return 0;
    }


    yardımın için sağol.evet bende bunu yaptım ama programı çalıştırdığım zaman hem rakamları terse yazıyor hemde programı hemen kapatıyor.
    örnek
    değeri giriniz=123
    1
    2
    3

    bunun olmasını istiyorum ama rakamlar tersten yazılıyor.yardımcı olabilirsen sevinirim.

    Daha kisada yapilir kesin ama bu saatte kafa yormak istemedim
     
    int main( void )
    {
    int number;
    printf("Degeri giriniz= ");
    scanf("%d",&number);
    int i = 0;
    int digits[10];
    while(number > 0)
    {
    digits[i] = number%10;
    number = number / 10 ;
    i++;
    }

    for(int j= i-1; j>=0; j--)
    {
    printf("%d\n",digits[j]);

    }
    return 0;
    }




  • quote:

    Orijinalden alıntı: Hypersomniac

    quote:

    Orijinalden alıntı: can_navaro5

    quote:

    Orijinalden alıntı: Hypersomniac

    quote:

    Orijinalden alıntı: can_navaro5

    quote:

    Orijinalden alıntı: £XE

    Arkadaşlar buraya böyle bir konu açma ihtiyacı duydum. C/C++/C# da takıldığınız yerler olursa bu konu altında paylaşın. Ben ve diğer arkadaşlar elimizden geldikçe yardımcı olalım.

    [size=3]NOT : Bana şu programı yazabilir misiniz ? Tarzında sorulara cevap vermeyeceğim. Önce kendiniz yapabildiğiniz kadar yapın, takıldığınız yerlerde kodu koyup sorun yardımcı olalım..





    İyi Çalışmalar.

    klavyeden girilin bir sayının rakamlarını alt alta yazmak hakkında yardımcı olabilirmisiniz.printf'i kullandım ama sürekli hata veriyo 3 güne ödevimi yetiştirmem gerekiyor yardımcı olursanız sevinirim

    Dogru anladiysam su tarz bir sey istiyorsun sanirim.
     
    int main()
    {
    int number;
    printf("Please enter a number");
    scanf("%d",&number);
    while(number > 0)
    {
    printf("%d\n",number%10);
    number = number / 10 ;
    }
    return 0;
    }


    yardımın için sağol.evet bende bunu yaptım ama programı çalıştırdığım zaman hem rakamları terse yazıyor hemde programı hemen kapatıyor.
    örnek
    değeri giriniz=123
    1
    2
    3

    bunun olmasını istiyorum ama rakamlar tersten yazılıyor.yardımcı olabilirsen sevinirim.

    Daha kisada yapilir kesin ama bu saatte kafa yormak istemedim
     
    int main( void )
    {
    int number;
    printf("Degeri giriniz= ");
    scanf("%d",&number);
    int i = 0;
    int digits[10];
    while(number > 0)
    {
    digits[i] = number%10;
    number = number / 10 ;
    i++;
    }

    for(int j= i-1; j>=0; j--)
    {
    printf("%d\n",digits[j]);

    }
    return 0;
    }


    eyvallah arkadaşım çok sağol kaç gündür uğraşıyordum.müsait olduğun bi zaman kısa halini de yazarsan çok sevinirim.




  • 
Sayfa: önceki 6566676869
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.