Пример 1. Написати програм који омогућава кориснику да унесе троцифрен број, и издваја цифре тог броја.
Слика 5.24. Изглед форме
Слика 5.24б. Изглед апликације након клика на дугме
У овом примеру треба да издвојимо цифре троцифреног броја. Кренимо од последње цифре. Њу можемо да добијемо ако посматрамо остатак при дељењу датог броја бројем 10.
Како можемо издвојити другу цифру (цифру десетица)? Најједноставније нам је да проблем сведемо на претходни. Ако извршимо целобројно дељење датог броја бројем 10,
добићемо двоцифрен број чије су цифре исте као прве две цифре почетног броја. Сада поновимо поступак да бисмо добили прву цифру (цифру стотина).
private void button1_Click(object sender, EventArgs e)
{
//Deklarisemo promenljivu i dodeljujemo joj vrednost
//koju je korisnik uneo u prvi textBox, prevedenu u tip int
int a = Convert.ToInt32(textBox1.Text);
//Deklarisemo promenljive
int cifraJedinica, cifraDesetica, cifraStotina;
//Nalazimo ostatak pri deljenju broja a sa 10, tj. izdvajamo poslednju cifru
cifraJedinica = a % 10;
//Vrsimo celobrojno deljenje broja a sa 10, cime dobijamo dvocifreni broj,
//odnosno "eliminisemo" poslednju cifru broja a
a = a / 10;
//Nalazimo ostatak pri deljenju "novog" broja a sa 10, cime zapravo izdvajamo
//cifru desetica pocetnog broja a
cifraDesetica = a % 10;
//Vrsimo celobrojno deljenje broja a sa 10, cime dobijamo jednocifreni broj
a = a / 10;
//Cifra koja nam je ostala je zapravo cifra stotina iz pocetnog broja a
cifraStotina = a;
//Ispisujemo rezultat u labeli
label3.Text = "Cifra stotina je " + cifraStotina + ", cifra desetica je "
+ cifraDesetica + ", a cifra jedinica " + cifraJedinica;
}
Пример 2. Направити апликацију којом цифре троцифреног броја исписујемо у обрнутом редоследу. На пример, ако корисник унесе број 247, након клика на дугме,
у textBox-у треба да пише 742.
Слика 5.25. Изглед апликације након покретања програма
Слика 5.25б. Изглед апликације након клика на дугме
private void button1_Click(object sender, EventArgs e)
{
int n;
n = Convert.ToInt32(textBox1.Text);
int a, b, c;
//Izdvajamo cifru jedinica
a = n % 10;
//"Odbacujemo" poslednju cifru
n = n / 10;
//Izdvajamo cifru desetica
b = n % 10;
//"Odbacujemo" poslednju cifru novog broja n
n = n / 10;
//Cifra stotina nam je jedina preostala cifra
c = n;
//Formiramo novi broj n sa rasporedom cifara koji je trazen u zadatku
n = a * 100 + b * 10 + c;
//Ispisujemo rezultat
textBox1.Text = n.toString();
}
Пример 3. Написати програм који омогућава кориснику да унесе природан број n, и за унето n рачуна суму првих n природних бројева.
Слика 5.26. Изглед форме
Слика 5.26б. Изглед апликације након клика на дугме
private void button1_Click(object sender, EventArgs e)
{
int n = Convert.ToInt32(textBox1.Text);
int s;
//Koristimo matematicku formulu za racunanje sume prvih n prirodnih brojeva
s = (n * (n + 1)) / 2;
//Ispisujemo rezultat
label3.Text = "Suma prvih " + n + " prirodnih brojeva je " + s;
}
Пример 4. Направити апликацију Штоперица која, након клика на дугме Кreni започиње одбројавање, након клика на дугме Stani зауставља одбројавање и враћа штоперицу на почетак и у лабели исписује последњи резултат.
Слика 5.27. Изглед форме
Слика 5.27б. Изглед апликације након клика на дугме Stani
int broj = 0;
private void button1_Click(object sender, EventArgs e)
{
//Ukljucujemo tajmer, tj. pocinjemo brojanje
timer1.Start();
}
private void button2_Click(object sender, EventArgs e)
{
//Iskljucujemo tajmer, tj. zaustavljamo brojanje
timer1.Stop();
//Ispisujemo poslednji rezultat
label1.Text = Convert.ToString(broj);
//Vracamo stopericu da ponovo broji od nule
broj = 0;
}
private void timer1_Tick(object sender, EventArgs e)
{
//Brojimo, odnosno uvecavamo promenjivu broj za 1 i svaki put
//rezultat ispisujemo u textBox-u
broj += 1;
textBox1.Text = Convert.ToString(broj);
}
Пример 5. Написати програм који рачуна запремину правилне четворостране призме, ако корисник унесе дужину основне
ивице и висину призме.
Слика 5.28. Изглед форме
Слика 5.28б. Изглед апликације након клика на дугме
private void button1_Click(object sender, EventArgs e)
{
double a, H;
double V, B;
a = Convert.ToDouble(textBox1.Text);
H = Convert.ToDouble(textBox2.Text);
//Racunamo povrsinu baze
B = a * a;
//Racunamo zapreminu
V = B * H;
//Ispisujemo rezultat
label3.Text = "Zapremina pravilne cetvorostrane prizme, cija je osnovna ivica "
+ a + ", a visina " + H + ", je " + V ;
}
Пример 6. Направити апликацију којом се у PictureBox-у црта плава кружна линијa или црта и боји зелени круг, у зависности од тога на које је од ова два дугмета кликнуо корисник. Претходно поставити ширину и висину PictureBox-а на 310.
Слика 5.29. Изглед форме
Слика 5.29б. Изглед апликације након клика на дугме Oboj zeleni krug
У овом примеру желимо да цртамо по pictureBox-у, а за то нам је потребан објекат класе Graphics.Како у c#-у немамо команду којом цртамо круг, приметићемо да је круг заправо једна специфична елипса. Како овде елипсе цртамо тако што дајемо податке о правоугаонику описаном око ње, уочићемо да ће нам за круг бити потребан квадрат који је око њега описан.
private void button1_Click(object sender, EventArgs e)
{
//Brisemo sadrzaj pictureBox-a
pictureBox1.Refresh();
//Kreiramo objekat klase Graphics
Graphics g = pictureBox1.CreateGraphics();
//Kreiramo objekat klase Pen, njime cemo crtati
//Crtacemo plavom bojom, a debljina linije bice 1
Pen olovka = new Pen(Color.Blue, 1);
//Crtamo elipsu, koordinate gornjeg levog temena
//pravougaonika opisanog oko te elipse su (0,0),
//a sirina i visina tog pravougaonika su po 300
g.DrawEllipse(olovka, 0, 0, 300,300);
//Oslobadjamo resurse koje su ovi objekti koristili
olovka.Dispose();
g.Dispose();
}
private void button2_Click(object sender, EventArgs e)
{
//Brisemo sadrzaj pictureBox-a
pictureBox1.Refresh();
//Kreiramo objekat klase Graphics
Graphics g = pictureBox1.CreateGraphics();
//Kreiramo objekat klase SolidBrush, njime cemo crtati, odnosno bojiti krug
//Bojicemo zelenom bojom
SolidBrush cetka = new SolidBrush(Color.Green);
//Crtamo elipsu, koordinate gornjeg levog temena
//pravougaonika opisanog oko te elipse su (0,0),
//a sirina i visina tog pravougaonika su po 300
g.FillEllipse(cetka, 0, 0, 300,300);
//Oslobadjamo resurse koje su ovi objekti koristili
olovka.Dispose();
g.Dispose();
}
Пример 7. Направити апликацију којом се, када корисник кликне на форму, исцртавају кругови произвољног полупречника
и боје, са центром у тачки на коју је корисник кликнуо мишем.
Слика 5.30. Изглед форме
Слика 5.30б. Изглед апликације након неколико кликова на форми
Овим примером ћемо се подсетити догађаја MouseClick.
//Kreiramo objekat klase Random
Random R = new Random();
int x1, y1, r;
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
//Kreiramo objekat klase Graphics
Graphics g = CreateGraphics();
//Biramo proizvoljnu boju
Color boja = Color.FromArgb(R.Next(256), R.Next(256), R.Next(256));
//Kreiramo objekat klase SolidBrush, njime cemo crtati, odnosno bojiti krugove
SolidBrush cetka = new SolidBrush(boja);
//Pamtimo koordinate tacke na koju je korisnik kliknuo misem
x1 = e.X;
y1 = e.Y;
//Biramo poluprecnik kruga
r = R.Next(1, 150);
//Crtamo krug
g.FillEllipse(cetka, x1 - r, y1 - r, 2 * r, 2 * r);
//Oslobadjamo resurse
g.Dispose();
cetka.Dispose();
}
Пример 8. Направити апликацију којом се, када корисник кликне на форму, исцртавају дужи са заједничким почетком у тачки на коју је корисник кликнуо мишем, као на слици.
Слика 5.31. Изглед форме
Слика 5.31б. Изглед апликације неколико секунди након клика на форми
//Kreiramo objekat klase Random
Random R = new Random();
int x1, y1, x2, y2;
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
//Pamtimo koordinate tacke na koju je korisnik kliknuo misem
x1 = e.X;
y1 = e.Y;
//Brisemo sve sa forme
Refresh();
//Ukljucujemo tajmer
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
Graphics g = CreateGraphics();
Color boja = Color.FromArgb(R.Next(256), R.Next(256), R.Next(256));
Pen olovka = new Pen(boja, 3);
//Odredjujemo koordinate drugog kraja duzi
x2 = R.Next(0, ClientRectangle.Width);
y2 = R.Next(0, ClientRectangle.Height);
//Crtamo duz
g.DrawLine(olovka, x1, y1, x2, y2);
//Oslobadjamo resurse
g.Dispose();
olovka.Dispose();
}
Наредна три задатка су задаци са основношколских такмичења из информатике из претходних година. Предлажемо ученицима да их ураде сами за домаћи.
Пример 9. За припрему декора за школску представу, деца су подељена у три групе и свака група је добила задатак да
направи по један део декора. Прва група је добила задатак да направи декор који изгледа као замак у даљини. За основу су узели 6
дасака поређаних једну до друге, које ће обојити на одговарајући начин. Прва даска је
дужине K, друга за 20 центиметара дужа, трећа за 20 центиметара дужа од друге, четврта
исте дужине као трећа, пета исте дужине као друга и шеста исте дужине као прва. Написати
програм ZAMAK у коме се за унету дужину прве даске K израчунава укупна дужина дасака.
Слика 5.32. Изглед форме
Слика 5.32б. Изглед апликације након клика на дугме
private void btDuzina_Click(object sender, EventArgs e)
{
//Ucitavamo duzinu prve daske
int k = Convert.ToInt32(textBox1.Text);
int duzina;
//Racunamo ukupnu duzinu dasaka
duzina = 2 * k + 2 * (k + 20) + 2 * (k + 40);
//Ispisujemo rezultat
label2.Text = "Ukupna duzina dasaka je " + duzina;
}
Пример 10. Кнез Љубинко је решио да у свом родном месту направи мост преко реке.
Сакупио је најбоље мајсторе који су почели изградњу каменог моста. У каменоломима су секли огромне камене плоче
једнаких димензија које су постављали на стубове и то им je представљало основу моста. Ширина плоче је увек одређивала
ширину моста. Да се ивице ових плоча не би временом оштетиле, након што поређају плоче у низ они су око ових великих плоча
постављали мање плоче квадратне основе димензије 1 метар. Написати програм MOST у коме се уносе ширина плоче S и дужина плоче D,
задате у метрима и број плоча N који је потребан да се направи основа једног моста, а затим се
израчунава број мањих квадрaтних плоча које су потребне да се поставе по ивицама моста.
Bредности променљивих S, D и N су позитивни цели бројеви, 0 < S, D, N < 100.
Слика 5.33. Изглед форме
Слика 5.33б. Изглед апликације након клика на дугме
private void button1_Click(object sender, EventArgs e)
{
//Ucitavamo promenljive iz textBox-ova
int s = Convert.ToInt32(textBox1.Text);
int d = Convert.ToInt32(textBox2.Text);
int n = Convert.ToInt32(textBox3.Text);
//Deklarisemo promenljivu
int brPlocica;
//Racunamo broj manjih plocica
brPlocica = 2 * d * n + 2 * s + 4;
//Ispisujemo rezultat
label4.Text = "Potrebno je " + brPlocica + " manjih plocica";
}
Пример 11. Рестoран "36" је због добре хране и одличне забаве увек пун гoстију, због чега се запослени у њему труде да
направе што више места за седење. Ресторан располаже столовима за шест, четири и две особе, од којих
прва врста заузима површину од 7 квадратних метара, друга 5 квадратних метара, а најмања 2 квадратна метара. Поред столова у ресторану се мора наћи место
и за бенд који забавља госте и који сваке вечери наступа са различитим бројем извођача,
при чему је по извођачу потребно обезбедити 1 квадрани метар. С обзиром на то да број извођача варира, столови
се сваке вечери изнова распоређују.
Зна се да столова за 4 и 6 особа има толико да се сигурно сви могу увек распоредити и они се први постављају.
Простор који бенд заузима никада није већи од простора који остаје слободан након што се поставе столови за 4 и 6 особа.
Након распоређивања столова за 4 и 6 особа и бенда, преостали простор се попуњава столовима за две особе.
Написати програм STOLOVI који након уноса површине ресторана, броја столова за 4 и 6 особа и броја извођача у бенду одређује колико столова
за две особе може да се постави.
Слика 5.34. Изглед форме
Слика 5.34б. Изглед апликације након клика на дугме
private void button1_Click(object sender, EventArgs e)
{
//Deklarisemo promenljive
int x;
int r = Convert.ToInt32(textBox1.Text);
int s1 = Convert.ToInt32(textBox2.Text);
int s2 = Convert.ToInt32(textBox3.Text);
int b = Convert.ToInt32(textBox4.Text);
//Racunamo broj stolova za dvoje
x = (r - (s1 * 5 + s2 * 7 + b)) / 2;
//Ispisujemo rezultat
label5.Text = "Broj stolova za dvoje je " + x;
}