Diskuze: Zjištění lichého víkudnu
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 15 zpráv z 15.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj,
můžeš prosím uvést, čeho se vlastně snažíš dosáhnout a na kterou
chybu narážíš?
Co prosím znamená lichý a sudý víkend? Má to být lichý sudý od začátku roku? ...nebo od začátku měsíce?
Nadpis je "Zjištění lichého víkudnu" (s chybou, čiže vidno že
potrebuješ pomoc ale nezaujíma
ťa ako uľahčiť prácu tým ktorí ti budú chcieť pomôcť) a teraz vo
vlákne píšeš úplne niečo iné, naviac nie celkom úplné, "že mi řekne
kolik je lichých a sudých víkendů". Keby si rovno vložil aj výpis chyby z
konzoly tak by hneď bolo vidno čo je zle a teda aj ten kto veľmi nerobí s C#
by vedel pomôcť, hádam že ti to tam aj pekne po anglicky vypíše.
Na základe toho čo si napísal "ale vyhazuje mi chyby." ti to nejakú chybu vypíše, ale teraz píšeš že chybou to neskončí len proste dostaneš zlý výsledok. Tak ako?
Slovíčkarenie?? Veď týmto výsluchom sme sa dostali úplne k inému problému než bolo pôvodné zadanie..
To je stále více se rozšiřující folklór...
To label22 nebude z téhle funkce, bude to od jinud.
public static string Saturday(int day)
{
// O fous lepší implementace bez parsování
DateTime actualDate = DateTime.Now.AddDays(-DateTime.Now.Day+1);
int b = 0;
int r = 0;
int ina = 0;
for (int a=1;a<day;a++)
{
DateTime startTime = actualDate.AddDays(a);
if (startTime.DayOfWeek == DayOfWeek.Saturday)
{
var number = actualDate.AddDays(a).Day;
if (number % 2 == 0)
b++;
else
r++;
}
}
return string.Format("{0}, {1}",b,r);
}
Trochu jsem ti ten kód poupravil, je zbytečné to převádět na string a pak zpět na datum nebo číslo.
Kód vyjadřuje kolik je sobot které mají lichý a sudý den. Nikoli lichý a sudý víkend. Ten kód by měl spíše být takto:
public static string Saturday(int day)
{
DateTime actualDate = DateTime.Now.AddDays(-DateTime.Now.Day+1);
int b = 0; // počet sudých
int r = 0; // počet lichých
int ina = 0; // pořadí víkendu
for (int a=1;a<day;a++)
{
DateTime startTime = actualDate.AddDays(a);
if (startTime.DayOfWeek == DayOfWeek.Saturday)
{
ina++;
if (ina % 2 == 0)
b++;
else
r++;
}
}
return string.Format("Počet sudých víkendů {0}, počet lichých víkendů {1}",b,r);
}
Já jen dodám, že mi přijde zbytečné požadovat jako argument počet dní v měsíci, když je jednoduché si je zjistit přímo pomocí DateTime.DaysInMonth, tedy:
static string Saturday()
{
int liche = 0;
int sude = 0;
int celkove = 0;
int dny = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
DateTime prvniho = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
for(int i = 0; i < dny; i++)
{
if (prvniho.AddDays(i).DayOfWeek == DayOfWeek.Saturday)
{
celkove++;
if (celkove % 2 == 0)
sude++;
else
liche++;
}
}
return String.Format("Liché soboty v měsíci: {0}, sudé soboty v měsíci: {1}", liche, sude);
}
pokud je něčí příspěvek řešením tvého problému, tak jej tak označ
Zobrazeno 15 zpráv z 15.