Şimdi Ara

C# Cumartes'ileri bulma Odevi

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
9
Cevap
0
Favori
675
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Herkese merhaba okuldaki odevimle ilgili yardim istiyorum.
    01/01/2016 Cumartesinden itibaren kullanicidan alinan tarihihe kadar olan cumartesileri yazdiran program lazim
    Ornegin:
    Kullanicidan alinan degerler: D=15 M=3 Y=2016 olsun
    Output:
    1 January 2016
    8 January 2016
    15 January 2016
    22 January 2016
    29 January 2016
    5 February 2016
    12 February 2016
    19 February 2016
    26 February 2016
    4 March 2016
    11 March 2016
    Burda onemli nokta bazi aylar 30 bazilari 31 ve 4yilda bir subat 29.Bi turlu kural yazamadim

    Direk C# kodu lazim degil mantigini bulabilsem yapicam.help please.



  • DateTime nesnesine 7 gün ekleye ekleye gidebilirsin aradığın tarihe ulaşana kadar veya doomsday algoritması ile herhangi bir tarih de ki günün ne olduğunu bulup cumartesiye denk geliyor mu diye kontrol edebilirsin.
  • buyurun hocam

     
    Console.WriteLine("Day");
    var day = int.Parse(Console.ReadLine());
    Console.WriteLine("Month");
    var month = int.Parse(Console.ReadLine());
    Console.WriteLine("Year");
    var year = int.Parse(Console.ReadLine());

    var date = new DateTime(year, month, day); // Input'lardan DateTime oluşturduk

    if (date.DayOfWeek != DayOfWeek.Saturday) // O gün Cumartesi değilse
    date = date.AddDays(6 - (int)date.DayOfWeek); // 6 - o günün indexi sonucunu DateTime'a ekleyerek sonraki Cumartesi'ni bulduk

    for (; date <= DateTime.Now; date = date.AddDays(7)) // DateTime, bugünden küçük olduğu sürece
    Console.WriteLine(date.ToLongDateString()); // Tarih olarak yazdır.

    Console.ReadLine();




  • Cok tesekkurler ancak bu program (Girilen tarihten)>(gunumuze) cumartesileri buluyor.
    bana (1 ocak 2016 dan)>(girilen tarihe) cumartesiler lazimdi.
    Yinede cok yardimci oldu ilk sinifim DateTime diye bir sey ogrenmemistik 100lerce satir kod yazicam diye uzuluyodum kisaymis yapilisi anlasilan :)
    Bir sorum daha olucak consoleda ingilizce yazmasi icin ne yapabilirim bende nedense turkce cikti,
  • jahrekimla kullanıcısına yanıt
    o zaman üst kısmı silip new DateTime satırı şöyle olacak. nedense kullanıcıya sorun okumuşum
    var date = new DateTime(2016, 1, 1);

    Windows'un dilinde çıkar yazı hocam. thread'in CurrentCulture property'sini değiştirebilirsin şöyle son hali:

    static void Main() 
    {
    System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("tr-TR");
    var date = new DateTime(2016, 1, 1);

    if (date.DayOfWeek != DayOfWeek.Saturday)
    date = date.AddDays(6 - (int)date.DayOfWeek);

    for (; date <= DateTime.Now; date = date.AddDays(7))
    Console.WriteLine(date.ToLongDateString());

    Console.Read();
    }



    < Bu mesaj bu kişi tarafından değiştirildi VatandA.Ş. -- 25 Ekim 2016; 19:47:03 >
  • Hocam kullanicidan alicaktik zaten orasi dogruydu.DateTime.Now kismi yanlis sadece :D
    Console.Write("Please Enter the Day: "); 
    var day = int.Parse(Console.ReadLine());
    Console.Write("Please Enter the Month: ");
    var month = int.Parse(Console.ReadLine());
    Console.Write("Please Enter the Year: ");
    var year = int.Parse(Console.ReadLine());
    DateTime Start = new DateTime(2016, 01, 01);// baslangic tarihi 1ocak2016 cumartesi
    var date = new DateTime(year, month, day); // Input'lardan DateTime oluşturduk
    if (date.DayOfWeek != DayOfWeek.Saturday) // O gün Cumartesi değilse
    date = date.AddDays(6 - (int)date.DayOfWeek); // 6 - o günün indexi sonucunu DateTime'a ekleyerek sonraki Cumartesi'ni bulduk
    for (; Start<= date;Start=Start.AddDays(7)) // ilk tarih(start) hedeften(date) kucuk oldugu surece
    Console.WriteLine(Start.ToLongDateString()); // tarih olarak yazdir
    Console.ReadLine();


    Bu sekilde calisiyor ancak fazladan 1cumartesi daha yaziyor
    ornegin ben gune 15 dedim,son cumartesi 12 ise output da 12 yerine 19yaziyor



    < Bu mesaj bu kişi tarafından değiştirildi jahrekimla -- 25 Ekim 2016; 20:25:05 >




  • jahrekimla kullanıcısına yanıt
    aman be karıştırmışım hep neyse

    pardon o gözümden kaçmış. onun için writeline'a bir if ekleyeceğiz şöyle olacak:

     
    for (; Start <= date; Start = Start.AddDays(7)) // ilk tarih(start) hedeften(date) kucuk oldugu surece
    if (Start <= date) Console.WriteLine(Start.ToLongDateString()); // tarih olarak yazdir



    < Bu mesaj bu kişi tarafından değiştirildi VatandA.Ş. -- 25 Ekim 2016; 21:35:14 >
  • quote:

    Orijinalden alıntı: Microsoft Specialist

    aman be karıştırmışım hep neyse

    pardon o gözümden kaçmış. onun için writeline'a bir if ekleyeceğiz şöyle olacak:

    editlenecek

    Hersey tamamdir cok sagolun
  • jahrekimla kullanıcısına yanıt
    önemli değil hocam çorba ettim ama neyse ben de güldüm
    kolay gelsin
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.