Arama butonu
Bu konudaki kullanıcılar: 1 misafir
8
Cevap
904
Tıklama
0
Öne Çıkarma
C# Cumartes'ileri bulma Odevi
J
9 yıl (1076 mesaj)
Yüzbaşı
Konu Sahibi

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.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



B
9 yıl (3379 mesaj)
Binbaşı

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.


Bu mesaja 1 cevap geldi.
V
9 yıl (14315 mesaj)
Binbaşı

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();


Bu mesaja 1 cevap geldi.
J
9 yıl (1076 mesaj)
Yüzbaşı
Konu Sahibi

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,


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Microsoft Specialist
V
9 yıl (14315 mesaj)
Binbaşı

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 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @jahrekimla
J
9 yıl (1076 mesaj)
Yüzbaşı
Konu Sahibi

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 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Microsoft Specialist
V
9 yıl (14315 mesaj)
Binbaşı

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 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @jahrekimla
J
9 yıl (1076 mesaj)
Yüzbaşı
Konu Sahibi

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


Bu mesaja 1 cevap geldi.
V
9 yıl (14315 mesaj)
Binbaşı

önemli değil hocam çorba ettim ama neyse ben de güldüm
kolay gelsin




Bu mesajda bahsedilenler: @jahrekimla
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.