Примери
|
*У случају да се анимација не приказује, притиснути дугме Прикажи слику
Пример 1. Написати програм који за унети датум враћа сутрашњи датум.
Решење :
Да би написали програм који одређује сутрашњи датум, поред уводних напомена треба да важи и следеће :
Ако је редни број дана који смо унели мањи од броја дана које има месец у коме је тај дан,
онда се редни број дана повећава за 1, тј редни број сутрашњег дана је за један већи од редног броја унетог
дана, редни број месеца остаје исти и редни број године остаје исти.
Ако је редни број дана који смо унели једнак броју дана које има месец у коме је тај дан,
онда је сутрашњи дан, први дан у следећем месецу, тада се
ако је редни број месеца био мањи од 12, он повећава за 1,
а ако је био 12, онда је месец први месец у следећој години, редни број године повећава за 1.
Правимо форму облика: Слика 6.48. Почетни изглед форме |
Преименујемо label-e и button1 Слика 6.49. Изглед форме након преименовања компоненти |
private void button1_Click(object sender, EventArgs e)
{
//Promenljive koje koristimo
int d, m, g, p, b;
d = int.Parse(textBox1.Text);
m = int.Parse(textBox2.Text);
g = int.Parse(textBox3.Text);
//Proveravamo da li je godina prestupna
if ((g % 4 == 0) && (g % 100 != 0) || (g %400 == 0))
//Ako jeste, p je jednako 1
p = 1;
//U suprotnom
else
//Godina nije prestupna, p je jednako 0
p = 0;
//Posto nemaju svi meseci isto dana
if (m == 2)
//Februar ima 28 ili 29 dana u zavisnosti da li je god prestupna
b = 28 + p;
//April,jun,septembar i novembar
else if ((m == 4) || (m == 6) || (m == 9) || (m == 11))
//Imaju 30 dana
b=30;
//Ostali meseci januar, mart, jul, avgust, oktobar i decembar
else
//Imaju po 31 dan
b=31;
//Ako unesemo redni broj dana veci nego sto mesec ima ili manji od 1
//Ili br meseca veci od 12 ili manji od jedan
if((d > b) || (d < 1) || (m > 12) || (m < 1))
//Ispisujemo poruku o pogresnom unosu datuma
label3.Text = "Uneli ste pogresan datum!!!";
//U suprotnom uneli smo ispravan datum
else
{
//Ako je reni broj dana manji od broja dana u mesecu, u kom je taj dan
if (d < b)
//Redni br dana se povecava za 1
d = d + 1;
//Inace redni broj dana je jednak broju dana u mesecu
else
{
//Slececi dan je 1 dan u sledecem mesecu
d = 1;
//Ako je redni broj meseca manji od 12
if (m < 12)
//Redni broj meseca se povecava za 1
m = m + 1;
//Inace redni broj meseca je 12
else
{
//Sledeci mesec je prvi mesec u sledecoj godini
m = 1;
//I redni br.godine se povecava za 1
g = g + 1;
}
}
//Ispisujemo sutrasnji datum
label3.Text = "Sutrasnji datum je: " + d + "." + m + "." + g + ".";
}
}
Пример 2. Написати програм који за унети датум враћа јучерашњи датум.
Решење :
Да би написали програм који одређује јучерашњи датум, поред уводних напомена треба да важи и следеће :
Ако је редни број дана који смо унели већи од 1,
онда се редни број дана смањује за 1, тј редни број јучерашњег дана је за један мањи од
редног броја унетог дана, редни број месеца остаје исти и редни број године остаје исти.
Ако је редни број дана који смо унели једнак 1, редни број месеца се смањује за 1,
ако је редни број месеца после смањења 0, редни број месеца је 12 и редни број године се смањује за1,
ако је редни број месеца после смањења 2, дан је 28 или 29 у зависности да ли је година преступна,
ако је редни број месеца после смањења 4, 6, 9, или 11, дан је 30,
ако је редни број месеца после смањења 1, 3, 5, 7, 8, 10, или 12, дан је 31.
У последња три случаја редни број године остаје исти.
Правимо форму облика: Слика 6.51. Почетни изглед форме |
Преименујемо label-e и button1 Слика 6.52. Изглед форме након преименовања компоненти |
private void button1_Click(object sender, EventArgs e)
{
//Promenljive koje koristimo
int d, m, g, p, b;
d = int.Parse(textBox1.Text);
m = int.Parse(textBox2.Text);
g = int.Parse(textBox3.Text);
//Proveravamo da li je godina prestupna
if ((g % 4 == 0) && (g % 100 != 0) || (g % 400 == 0))
//Ako jeste, p je jednako 1
p = 1;
//U suprotnom
else
//Godina nije prestupna, p je jednako 0
p = 0;
//Posto nemaju svi meseci isto dana
if (m == 2)
//Februar ima 28 ili 29 dana u zavisnosti da li je god prestupna
b = 28 + p;
//April,jun,septembar i novembar
else if ((m == 4) || (m == 6) || (m == 9) || (m == 11))
//Imaju 30 dana
b = 30;
//Ostali meseci januar, mart, jul, avgust, oktobar i decembar
else
//Imaju po 31 dan
b = 31;
//Ako unesemo redni broj dana veci nego sto mesec ima ili manji od 1
//Ili br meseca veci od 12 ili manji od jedan
if ((d > b) || (d < 1) || (m > 12) || (m < 1))
//Ispisujemo poruku o pogresnom unosu datuma
label3.Text = "Uneli ste pogresan datum!!!";
//U suprotnom uneli smo ispravan datum
else
{
//Ako je broj dana veci od 1
if (d > 1)
//Redni broj dana se smanjuje za 1
d = d - 1;
//Inace je br.dana jednak 1
else
{
//Redni broj meseca se smanjuje za 1
m = m - 1;
//Ako je tada redni broj meseca jednak 0
if (m == 0)
{
//Prethodni mesec je poslednji mesec u prethodnoj godini
m = 12;
//Redni broj godine se smanjuje za 1
g = g - 1;
}
//Ako je tada redni broj meseca jednak 2
if (m == 2)
//Tada je dan poslednji dan u februaru
d = 28 + p;
//U suprotnom ako je redni broj meseca 4,6,9,11
else if ((m == 4) || (m == 6) || (m == 9) || (m == 11))
//Tada je dan 30
d = 30;
//Inace
else
//Dan je 31
d = 31;
}
//Ispisujemo jucerasnji datum
label3.Text = "Jucerasnji datum je: " + d + "." + m + "." + g + ".";
}
}
Пример 3. Написати програм који када унесемо два датума враћа који је датум претходни.
Решење :
Да би написали програм који одређује који је датум претходни, треба да важе уводне напомене за
оба датума која уносимо. Затим прво поредимо године.
Ако су редни бројеви године једнаки, пореде се месеци,
ако су редни бројеви месеци једнаки, пореде се дани,
ако су дани једнаки, унели смо исте датуме,
иначе датум који има мањи редни број дана је перетходни.
ако редни бројеви месеци нису једнаки, датум који има мањи редни број месеца је перетходни.
Ако редни бројеви године нису једнаки, датум који има мањи редни број године је перетходни.
Правимо форму облика: Слика 6.54. Почетни изглед форме |
Преименујемо label-e и button1 Слика 6.55. Изглед форме након преименовања компоненти |
private void button1_Click(object sender, EventArgs e)
{
//Promenljive koje koristimo
int d1, m1, g1, d2, m2, g2, p1, p2, b1, b2;
d1 = int.Parse(textBox1.Text);
m1 = int.Parse(textBox2.Text);
g1 = int.Parse(textBox3.Text);
d2 = int.Parse(textBox4.Text);
m2 = int.Parse(textBox5.Text);
g2 = int.Parse(textBox6.Text);
//Proveravamo da li je prva godina koju smo uneli prestupna
if ((g1 % 4 == 0) && (g1 % 100 != 0) || (g1 % 400 == 0))
p1 = 1;
else
p1 = 0;
//Odredjujemo koliko dana imaju meseci u prvoj godini
if (m1 == 2)
b1 = 28 + p1;
else if ((m1 == 4) || (m1 == 6) || (m1 == 9) || (m1 == 11))
b1 = 30;
else
b1 = 31;
//Proveravamo da li je druga godina koju smo uneli prestupna
if ((g2 % 4 == 0) && (g2 % 100 != 0) || (g2 % 400 == 0))
p2 = 1;
else
p2 = 0;
//Odredjujemo koliko dana imaju meseci u drugoj godini
if (m2 == 2)
b2 = 28 + p2;
else if ((m2 == 4) || (m2 == 6) || (m2 == 9) || (m2 == 11))
b2 = 30;
else
b2 = 31;
//Proveravamo za obe godine koje smo uneli da li vazi : ako unesemo redni broj dana veci
//Nego sto mesec ima ili manji od 1 ili br meseca veci od 12 ili manji od jedan
if (((d1 > b1)||(d1 < 1)||(m1 > 12)||(m1 < 1)) || ((d2 > b2)||(d2 < 1)||(m2 > 12)||(m2 < 1)))
//Ispisujemo poruku o pogresnom unosu datuma
label4.Text = "Uneli ste pogresan datum!!!";
//U suprotnom uneli smo ispravne datume
else
{
//Ako su redni brojevi godina jednaki
if (g1 == g2)
{
//I ako su redni brojevi meseci jednaki
if (m1 == m2)
{
//I ako su redni brojevi dana jednaki
if (d1 == d2)
//Ispisujemo poruku
label4.Text = "Uneli ste iste datume.";
//U suprotnom ako je redni broj dan prvog datuma veci
else if (d1 > d2)
//Ispisujemo poruku da drugi datum prethodi prvom
label4.Text = "Datum: "+d2+"."+m2+"."+g2+" prethodi datumu:"+d1+"."+m1+"."+g1;
//U suprotnom
else
//Ispisujemo poruku da prvi datum prethodi drugom
label4.Text = "Datum: "+d1+"."+m1+"."+g1+" prethodi datumu:"+d2+"."+m2+"."+g2;
}
//U suprotnom ako redni br.meseci nisu jednaki, ako je redni br.prvog veci od drugog
else if (m1 > m2)
//Ispisujemo poruku da drugi datum prethodi prvom
label4.Text = "Datum: "+d2+"."+m2+"."+g2+" prethodi datumu:"+d1+"."+m1+"."+g1;
//U suprotnom
else
//Ispisujemo poruku da prvi datum prethodi drugom
label4.Text = "Datum: "+d1+"."+m1+"."+g1+" prethodi datumu:"+d2+"."+m2+"."+g2;
}
//U suprotnom ako redni brojevi godina nisu jednaki, ako je redni broj prve veci od druge
else if (g1 > g2)
//Ispisujemo poruku da drugi datum prethodi prvom
label4.Text = "Datum: "+d2+"."+m2+"."+g2+" prethodi datumu:"+d1+"."+m1+"."+g1;
//U suprotnom
else
//Ispisujemo poruku da prvi datum prethodi drugom
label4.Text = "Datum: "+d1+"."+m1+"."+g1+" prethodi datumu:"+d2+"."+m2+"."+g2;
}
}