30
Primeri aplikacija razgranate strukture Kretanje loptica Kreirati aplikaciju koja obezbeđuje kontinuiorano kretanje loptice gore desno, gore levo, dole desno, dole levo (po be ose se pomera za poluprečnik). Kada dođe do ivice forme odbija se i nastavlja kretanje u suprotnom smeru. int x, y, dx, dy, r; private void Form1_MouseClick(object sender, MouseEventArgs e) { x = e.X; y = e.Y; dx = dy = r = 10; Refresh(); timer1.Start(); } private void Form1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; g.FillEllipse(Brushes.Red,x-r,y-r,2*r,2*r); } private void timer1_Tick(object sender, EventArgs e) { x += dx; y += dy; if (x < r || x + r > ClientRectangle.Width) dx = -dx; if (y < r || y + r > ClientRectangle.Height) dy = -dy; Refresh(); } Pri odbijanju menjamo boju Modifikovati prethodnu aplikaciju tako da loptica pri odbijanju menja boju. int x, y, dx, dy, r; SolidBrush cetka = new SolidBrush(Color.Red); Random R = new Random(); private void Form1_MouseClick(object sender, MouseEventArgs e) { x = e.X; y = e.Y; dx = dy = r = 10; Refresh(); timer1.Start(); } private void Form1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; g.FillEllipse(cetka,x-r,y-r,2*r,2*r); } private void timer1_Tick(object sender, EventArgs e) { x += dx; y += dy;

Primeri aplikacija razgranate strukture

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Primeri aplikacija razgranate strukture

Primeri aplikacija razgranate strukture

Kretanje loptica Kreirati aplikaciju koja obezbeđuje kontinuiorano kretanje loptice gore desno, gore levo, dole desno, dole levo (po be

ose se pomera za poluprečnik). Kada dođe do ivice forme odbija se i nastavlja kretanje u suprotnom smeru. int x, y, dx, dy, r; private void Form1_MouseClick(object sender, MouseEventArgs e) { x = e.X; y = e.Y; dx = dy = r = 10; Refresh(); timer1.Start(); } private void Form1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; g.FillEllipse(Brushes.Red,x-r,y-r,2*r,2*r); } private void timer1_Tick(object sender, EventArgs e) { x += dx; y += dy; if (x < r || x + r > ClientRectangle.Width) dx = -dx; if (y < r || y + r > ClientRectangle.Height) dy = -dy; Refresh(); }

Pri odbijanju menjamo boju

Modifikovati prethodnu aplikaciju tako da loptica pri odbijanju menja boju. int x, y, dx, dy, r;

SolidBrush cetka = new SolidBrush(Color.Red); Random R = new Random(); private void Form1_MouseClick(object sender, MouseEventArgs e) { x = e.X; y = e.Y; dx = dy = r = 10; Refresh(); timer1.Start(); } private void Form1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; g.FillEllipse(cetka,x-r,y-r,2*r,2*r); } private void timer1_Tick(object sender, EventArgs e) { x += dx; y += dy;

Page 2: Primeri aplikacija razgranate strukture

if (x < r || x + r > ClientRectangle.Width) { dx = -dx; cetka.Color = Color.FromArgb(R.Next(256), R.Next(256), R.Next(256)); } if (y < r || y + r > ClientRectangle.Height) { dy = -dy; cetka.Color = Color.FromArgb(R.Next(256), R.Next(256), R.Next(256)); } Refresh(); }

Ispravnost datuma Kreirati aplikaciju kojom se proverava da li je datum definisan sa 3

objekta klase TextBox ili NumericUpDown ispravan.

Napomena: Godina je prestupna ako je deljiva sa 4 i nije sa 100 ili

ako je deljiva sa 400.

private void button1_Click(object sender, EventArgs e) { int d = (int)numericUpDown1.Value; int m = (int)numericUpDown2.Value; int g = (int)numericUpDown3.Value; int bd;

if(d<0||d>31||m<0||m>12||g<0) label1.Text="Neispravan datum";

else {

switch (m) { case 1:case 3:case 5: case 7: case 8: case 10:case 12: bd = 31; break; case 2: if ((g % 4 == 0 && g % 100 != 0) || g % 400 == 0) bd = 29; else bd = 28; break; default: bd = 30; break; } if(d>bd)

label1.Text="Neispravan datum"; else label1.Text="Ispravan datum"; }

}

Sutrasnji datum Kreirati aplikaciju kojom se za dati datum zadat pomoću dana,

meseca i godine (tri objekta klase NumericUpDown) određuje datum sledećeg dana. Datum koji korisnik unosi je ispravan.

Napomena: Godina je prestupna ako je deljiva sa 4 i nije sa 100 ili ako je deljiva sa 400.

Page 3: Primeri aplikacija razgranate strukture

private void button1_Click(object sender, EventArgs e) { int d = (int)numericUpDown1.Value; int m = (int)numericUpDown2.Value; int g = (int)numericUpDown3.Value; int bd; switch (m) { case 1:case 3:case 5: case 7: case 8: case 10:case 12: bd = 31; break; case 2: if ((g % 4 == 0 && g % 100 != 0) || g % 400 == 0) bd = 29; else bd = 28; break; default: bd = 30; break; } if (d < bd) d++; else { d = 1; if (m < 12) m++; else { m = 1; g++; } } label1.Text = d + "." + m + "." + g + "."; }

SLAVINA Na dnu rezervoara visine H napunjenog vodom do vrha nalaze se 3

slavine. Za svaku je dato vreme otvaranja T1<T2<T3 i brzina isticanja brojem za koliko opadne nivo vode u rezervora u 1 minuti

V1,V2 i V3. Odredi kroz koju slavinu istekne najmanje vode.

namespace Slavina { class Program { static void Main(string[] args) { float t1 = Convert.ToSingle(Console.ReadLine()); float t2 = Convert.ToSingle(Console.ReadLine()); float t3 = Convert.ToSingle(Console.ReadLine()); float v1 = Convert.ToSingle(Console.ReadLine()); float v2 = Convert.ToSingle(Console.ReadLine()); float v3 = Convert.ToSingle(Console.ReadLine()); float H = Convert.ToSingle(Console.ReadLine()); if ((t2 - t1) * v1 >= H) Console.WriteLine("2 i 3"); else if ((t3 - t1) * v1 + (t3 - t2) * v2 >= H) Console.WriteLine("3"); else {

Page 4: Primeri aplikacija razgranate strukture

float t = (H + t1 * v1 + t2 * v2 + t3 * v3) / (v1 + v2 + v3); float min = (t - t1) * v1; if ((t - t2) * v2 < min) min = (t - t2) * v2; if ((t - t3) * v3 < min) min = (t - t3) * v3; if (min == (t - t1) * v1) Console.WriteLine("1"); if (min == (t - t2) * v2) Console.WriteLine("2"); if (min == (t - t3) * v3) Console.WriteLine("3"); } } } }

PING PONG Kreirati aplikaciju kojom se loptica kreće po formi (po obe ose) kada dođe do

gornje, desne ili leve ivice forme odbija se menjajući smer kretanja. Na donjoj ivici forme nalazi se pravougaonik koji korisnik može pomerati, korišćenjem strelica na

tastaturi, levo desno, u granicama forme. Ako loptica udati u pravougaonik odbija se i nastavlja kretanje, a ako loptica udari u donju ivicu forme zatvara se aplikacija.

int X, Y, r, korakX, korakY; int Xd, Yd, w, h, korakd; Random R = new Random(); private void Form1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; SolidBrush cetka = new SolidBrush(Color.Red); g.FillEllipse(cetka, X - r, Y - r, 2 * r, 2 * r); cetka.Color = Color.Brown; g.FillRectangle(cetka, Xd, Yd, w, h); } private void Form1_Load(object sender, EventArgs e) { Y = 10; korakX = 10; korakY = 10; r = 10; X = R.Next(10, ClientRectangle.Width - 10); h = 10; w = 80; Yd = ClientRectangle.Height - h; Xd = R.Next(ClientRectangle.Width - w); korakd = 0; timer1.Enabled = true;

Page 5: Primeri aplikacija razgranate strukture

} private void timer1_Tick(object sender, EventArgs e) { X += korakX; Y += korakY; Xd += korakd; if (Xd <= 0) Xd = 0; if (Xd + w >= ClientRectangle.Width) Xd = ClientRectangle.Width - w; if (X <= r || X + r >= ClientRectangle.Width) korakX = -korakX; if (Y <= r) korakY = -korakY; if (X + r >= Xd && X - r <= Xd + w) { if (Y + r >= ClientRectangle.Height - h) korakY = -korakY; } else if (Y + r >= ClientRectangle.Height) { timer1.Enabled = false; MessageBox.Show("Izgubili ste..."); } Refresh(); } private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Left) korakd = -20; else if (e.KeyCode == Keys.Right) korakd = 20; if (e.KeyCode == Keys.Escape) timer1.Enabled = !timer1.Enabled; } private void Form1_KeyUp(object sender, KeyEventArgs e) { korakd = 0; }

Primeri aplikacija ciklične strukture

Liste

Kreirati aplikaciju kojom se za dati prirodan broj n (zadat u texBox-u) u objektu klase ListBox upisuju

a) svi prirodni brojevi od 1 do n b) svi parni prirodni brojevi od 1 do n

c) svi neparni prirodni brojevi od 1 do n i pri tome se odredjuje suma upisanih brojeva (vrednost sume ispisati u

objektu klase Label). Izbor opcije za ispis u ListBox-u izvrsiti korišćenjem objekata klase RadioButton.

private void btPisi_Click(object sender, EventArgs e) { int n = Convert.ToInt32(textBox1.Text); int s = 0; listBox1.Items.Clear(); if (radioButton1.Checked)

Page 6: Primeri aplikacija razgranate strukture

{ for (int i = 1; i <= n; i++) { listBox1.Items.Add(i); s += i; } } if (radioButton2.Checked) { for (int i = 2; i <= n; i += 2) { listBox1.Items.Add(i); s += i; } } if (radioButton3.Checked) { for (int i = 1; i <= n; i += 2) { listBox1.Items.Add(i); s += i; } } listBox1.Items.Add("Suma je " + s); }

Pravougaonik date površine

Kreirati aplikaciju koja u objektu klase ListBox upisati sve moguće dužine stranica pravougaonika čija je površina jednaka datom prirodnom broju P,

a stranice su takođe prirodni brojevi.

private void btOdredi_Click(object sender, EventArgs e) { int P = Convert.ToInt32(textBox1.Text); listBox1.Items.Clear(); for (int a = 1; a <= P / 2; a++) if (P % a == 0) listBox1.Items.Add(a + " " + P / a); }

Sportista 1

Sportista prvog dana treninga pretrci A metara, a svakog sledeceg 10% više od pethodnog dana. Prikazati koliko svakog dana pretrci u periodu od

N dana treninga, na kraju prikazati koliko kilometara je ukupno pretrčao.

static void Main(string[] args) { int n; float a,s=0; a = Convert.ToSingle(Console.ReadLine()); n = Convert.ToInt32(Console.ReadLine()); for (int i = 0; i < n; i++) { Console.WriteLine(i + ". dan " + a.ToString("0.00"));

Page 7: Primeri aplikacija razgranate strukture

s += a; a = a + 10 * a / 100; } Console.WriteLine("Ukupno " + s.ToString("0.00"));

}

Sportista 2

Sportista prvog dana treninga pretrci A metara, a svakog sledeceg 10% više od prethodnog dana. Zeli da postigne dnevnu normu od B metara.

Prikazati posle koliko dan postiže željenu normu (prikazati i koliko svakog

dana pretrči).

static void Main(string[] args) { int n; float a,b; a = Convert.ToSingle(Console.ReadLine()); b = Convert.ToSingle(Console.ReadLine()); n = 1; Console.WriteLine(n + ". dan " + a.ToString("0.00")); while(a<b) { n++; a = a + 10 * a / 100; Console.WriteLine(n + ". dan " + a.ToString("0.00")); } }

Stepenice

Kreirati aplikaciju kojom se crtaju stepenice u granicama forme (kao što je

prikazano na slici) počev od tačke na koju je korisnik kliknuo; širina i visina

stepenika je 20 piksela.

private void Form1_MouseClick(object sender, MouseEventArgs e) { int x = e.X; int y = e.Y;

Page 8: Primeri aplikacija razgranate strukture

Graphics g = CreateGraphics(); while (x < ClientRectangle.Width && y > 0) { g.DrawLine(Pens.Red, x, y, x , y-20); g.DrawLine(Pens.Red, x, y-20, x + 20, y-20); x += 20; y -= 20; } }

Crtanje 1

Kreirati aplikaciju kojom se tačka na koju je korisnik

kliknuo spaja sa ivicama forme koje su izdeljene na n delova. Broj n(3≤n≤100) se bira u kontroli

NumericUpDown. private void pictureBox1_MouseClick(object sender, MouseEventArgs e) { pictureBox1.Refresh(); int x = e.X; int y = e.Y; int n = (int)numericUpDown1.Value; float dx = (float)pictureBox1.Width / n; float dy = (float)pictureBox1.Height / n; Pen olovka = new Pen(Color.Red); Graphics g = pictureBox1.CreateGraphics(); for (int i = 0; i <= n; i++) { g.DrawLine(olovka, x, y, i * dx, 0); g.DrawLine(olovka, x, y, i * dx, pictureBox1.Height); g.DrawLine(olovka, x, y,0, i * dy); g.DrawLine(olovka, x, y, pictureBox1.Width, i * dy); } }

Crtanje 2

Za dati prirodan broj n svaku ivicu objekta klase PictureBox podeli na n jednakih delova, pa dobije tačke spojiti kao što je prikazano na slici.

private void numericUpDown1_ValueChanged(object sender, EventArgs e)

Page 9: Primeri aplikacija razgranate strukture

{ pictureBox1.Refresh(); Graphics g = pictureBox1.CreateGraphics(); Pen olovka = new Pen(Color.Red); int n = Convert.ToInt32(numericUpDown1.Value); float dx = (float)pictureBox1.Width/n; float dy = (float)pictureBox1.Height/n; for (int i = 0; i <n; i++) { g.DrawLine(olovka, i * dx, 0, 0, i * dy); g.DrawLine(olovka, pictureBox1.Width, i * dy, i * dx, pictureBox1.Height); g.DrawLine(olovka, i * dx, 0, pictureBox1.Width, pictureBox1.Height - i * dy); g.DrawLine(olovka, 0, dy*i,pictureBox1.Width-i*dx, pictureBox1.Height); } }

Knjiga Mali Mirko voli knjige, ali se uvek uplaši kada mora pročitati neku debelu

knjigu. Učiteljica je rekla Mirku: koliko ima redova na jednoj stranici

knjiga, broj poglavlja u knjizi i koliko redova ima svako poglavlje. Svako poglavlje počinje na novoj stranici.

Mirka zanima koliko ta knjiga ima stranica, a pomoć u rešavanju tog problema je odlučio pronaći među najboljim informatičarima u svojoj

školi. Napiši program koji će izračunati broj stranica knjige. Primer: Ulazni podaci: 10 redova na jednoj stranici 4 poglavlja 234 120

138 123 Izlaz: 63 stranice

static void Main(string[] args) { int br,s,b,n; Console.WriteLine("Unesite broj redova na jednoj stranici"); br = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Unesite broj poglavlja"); n = Convert.ToInt32(Console.ReadLine()); s = 0; for (int i = 0; i < n; i++) { b = Convert.ToInt32(Console.ReadLine()); s += b / br; if (b % br != 0) s++; } Console.WriteLine("Knjiga ima "+s+" str."); Console.Read(); }

Page 10: Primeri aplikacija razgranate strukture

Ispis cifara Kreirati aplikaciju kojom se za za dati prirodan broj n prikazuju sve

njegove cifre, prikazati i ukupan broj cifara. static void Main(string[] args) { int n, cif, br = 0; Console.WriteLine("Unesite broj"); n = Convert.ToInt32(Console.ReadLine()); while (n > 0) { cif = n % 10; n = n / 10; Console.WriteLine(cif); br++; } Console.WriteLine("Ukupno cifara " + br); }

Cifra 5

Kreirati aplikaciju kojom se proverava dali dati prirodan broj n sadrži cifru 5.

Prvo rešenje static void Main(string[] args) { int n = Convert.ToInt32(Console.ReadLine()); int cif; while (n > 0) { cif = n % 10; if (cif == 5) { Console.WriteLine("Broj sadrzi cifru 5"); break; } n = n / 10; } if (n == 0) Console.WriteLine("Broj ne sadrzi cifru 5"); }

Drugo rešenje static void Main(string[] args) { int n = Convert.ToInt32(Console.ReadLine()); int cif; bool nasli = false; while (n > 0) { cif = n % 10; n = n / 10; if (cif == 5)

Page 11: Primeri aplikacija razgranate strukture

nasli = true; } if (nasli) // nasli==true Console.WriteLine("Broj sadrzi cifru 5"); else Console.WriteLine("Broj ne sadrzi cifru 5"); }

Brisanje cifre jedan Kreirati aplikaciju kojom se iz datog prirodnog broja n briše svako

pojavljivanje cifre 1. static void Main(string[] args) { int n = Convert.ToInt32(Console.ReadLine()); int c, st, x; x = 0; st = 1; while (n > 0) { c = n % 10; n = n / 10; if (c != 1) { x += c * st; st *= 10; } } Console.WriteLine(x); }

Transforjmacija broja

Kreirati aplikaciju kojom dati prirodan broj n transformiše tako što se

svake dve uzastopne cifre broja n zamene većom od njih. static void Main(string[] args) { int n = Convert.ToInt32(Console.ReadLine()); int c, pred, x, st; x = 0; st = 1; pred = n % 10; n /= 10; while (n > 0) { c = n % 10; n /= 10; if (c > pred) x += c * st; else x += pred * st; st *= 10; pred = c; } Console.WriteLine(x); }

Transformacija broja 2

Kreirati aplikaciju kojom dati prirodan broj n transformiše tako što se svake dve uzastopne cifre broja n zamene većom od njih.

Transformaciju ponavljati dok ne dobijemo jednocifren broj.

Page 12: Primeri aplikacija razgranate strukture

static void Main(string[] args) { int n = Convert.ToInt32(Console.ReadLine()); int c, pred, x, st; x = 0; st = 1; pred = n % 10; n /= 10; while (n > 0) { c = n % 10; n /= 10; if (c > pred) x += c * st; else x += pred * st; st *= 10; pred = c; } Console.WriteLine(x); }

Pravougaonici

Kreirati aplikaciju crtaju po formi serije pravougaonika upisanih jedan u

drugi. Temena jedne dijagonale prvog pravougaonika definisana su na sledeći način: jedno teme je pozicija na koju je korisnik pritisnuo taster

miša (MouseDown) a drugo teme pozicija kad je korisnik otpustio taster miša (MouseUp). Svaki sledeći pravougaonik ima isti centar kao

prethodni pravougaonika a stranice su mu za 5 manje od stranica prethodnog pravougaonika.

int x1, y1; private void Form1_MouseDown(object sender, MouseEventArgs e) { x1 = e.X; y1 = e.Y; } private void Form1_MouseUp(object sender, MouseEventArgs e)

Page 13: Primeri aplikacija razgranate strukture

{ int x2, y2; x2 = e.X; y2 = e.Y; int x, y, a, b; x = Math.Min(x1, x2); y = Math.Min(y1, y2); a = Math.Abs(x1 - x2); b = Math.Abs(y1 - y2); if(x1<x)x=x1;

if(y1<y)y=y1; Graphics g = CreateGraphics(); Pen olovka = new Pen(Color.Blue); while (a > 0 && b > 0) { g.DrawRectangle(olovka, x, y, a, b); a -= 10; b -= 10; x += 5; y += 5; } }

Čokolada

Pera je poslužio drugove čokoladom oblika pravougaonika čije su

dimenzije dati prirodni brojevi A i B. Pri tome im je rekao da lome (odsecaju) samo kvadrate. Drugovi su jedan po jedan lomili kvadrate,

ali pri tome nisu bili fer te su lomili najveće moguće kvadrate. Kreirati aplikaciju kojom se ispisuje na koji način su se drugovi poslužili (ispisati

stranice kvadrata koje su lomili), na kraju ispisati koliko drugova se poslužilo čokoladom.

Primer:

Ako je A=12 B=7 poslužilo se ukupno 6 drugova, oni su redom uzimali kvadrate

stranica 7, 5, 2, 2, 1, 1.

private void btDeli_Click(object sender, EventArgs e) {

Page 14: Primeri aplikacija razgranate strukture

int a, b,n=0; a = Convert.ToInt32(tbA.Text); b = Convert.ToInt32(tbB.Text); int x = pictureBox1.Width / 2 - a / 2; int y = pictureBox1.Height / 2 - b / 2; pictureBox1.Refresh(); listBox1.Items.Clear(); Graphics g = pictureBox1.CreateGraphics(); SolidBrush cetka = new SolidBrush(Color.Yellow); Pen olovka = new Pen(Color.Black); g.FillRectangle(cetka, x, y, a, b); g.DrawRectangle(olovka, x, y, a, b); while (a > 0 && b > 0) { n++; if (a > b) { a = a - b; listBox1.Items.Add(b+"x" +b); } else { b = b - a; listBox1.Items.Add(a+"x" +a); } g.DrawRectangle(olovka, x, y, a, b); } listBox1.Items.Add("Posluzilo se ukupno "+n); }

Plivanje

1.1.2011 je subota. Marko trenira plivanje svakog ponedeljka i petka do

zadatog datuma iste godine (dan, mesec). Kreirati aplikaciju kojom se određuje koliko treninga je Marko imao.

private void btPlivanje_Click(object sender, EventArgs e)

{ int dan, mesec; dan = Convert.ToInt32(textBox1.Text); mesec = Convert.ToInt32(textBox2.Text); int x = dan-1; for (int i = 1; i < mesec; i++) { if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12) x += 31; else if (i == 2) x += 28; else x += 30; } int k1, k2; if (x > 3) k1 = (x - 3) / 7 + 1; else k1 = 0;

Page 15: Primeri aplikacija razgranate strukture

if (x > 7) k2 = (x - 7) / 7 + 1; else k2 = 0; label3.Text = "trenirao je " + (k1 + k2) + " puta"; }

Max i prosek

Kreirati aplikaciju kojom se na unose temperature za N dana, prvo se

unosi broj dana a zatim temperature, svaka u posebnoj liniji. Odredi prosečnu temperaturu i maksimalnu temperatura.

static void Main(string[] args) { int n, t,max; float s; n = Convert.ToInt32(Console.ReadLine()); t = Convert.ToInt32(Console.ReadLine()); max = t; s = t; for (int i = 1; i < n; i++) { t = Convert.ToInt32(Console.ReadLine()); s += t; if (t > max) max = t; } s /= n; Console.WriteLine("Prosecna temperatura je " + s.ToString("0.00")); Console.WriteLine("Maksimalna temperatura je " + max); Console.Read(); }

Broj 153

a) Za zadati broj x moze se formirati niz, tako da je x prvi element tog

niza, a svaki sledeci je jednak zbiru kubova cifara prethodnog elementa. Na primer, za x = 102 dobijamo niz 102, 9, 729, 1080, 513, 153, 153,

153, ...Dokazano je da se za svako x deljivo sa 3 u nizu mora pojaviti broj 153, nakon cega se on ponavlja.

Napisati aplikaciju kojim se za dati prirodan broj m deljiv sa 3 ispisuje niz formiran na prethodno opisani nacin.

b) Oznacimo sa d(x) duzinu niza koji pocinje brojem x, a zavrsava se prvim pojavljivanjem broja 153. Iz gornjeg primera sledi da je

d(102)=6. Primetimo da je funkcija d definisana samo za x deljivo sa 3. Za dati broj n ispisati onaj broj x, manji ili jednak n (i deljiv sa 3)

za koji je vrednost funkcije d najveca. Ako takav broj nije jedinstven,

ispisati najmanji takav. a) static void Main(string[] args) { int c,s,n; n=Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Trazeni niz je");

Page 16: Primeri aplikacija razgranate strukture

if (n == 153) Console.WriteLine(n); while (n != 153) { s = 0; while (n > 0) { c = n % 10; n /= 10; s += c * c * c; } n = s; Console.WriteLine(n); } }

b) static void Main(string[] args) { int c,s,x,x1,n,d,maxD=0,maxX=0; n=Convert.ToInt32(Console.ReadLine()); for ( x = 3; x <= n; x += 3) { x1 = x; d = 1; while (x1 != 153) { s = 0; while (x1 > 0) { c = x1 % 10; x1 /= 10; s += c * c * c; } x1 = s; d++; } if (d > maxD) { maxD = d; maxX = x; } } Console.WriteLine(maxX); }

Primeri aplikacija u kojima se koriste nizovi

Nedavno korišćena dokumenta U mnogim programima pojavljuje se lista nedavno korišćenih dokumenata

(NKD). Kao što joj ime kaže, lista sadrži nedavno korišćena dokumente kako bi korisnik mogao brže doći do njih.Lista je ograničenog kapaciteta – poznat

je najveći broj dokumenata koji se mogu u istom trenutku nalaziti u listi. Svaki put kad korisnik otvori neki dokument (bilo izborom iz NKD liste ili

kroz neki drugi dijalog), tada se: 1. Ako se dokument već nalazi negde u listi, pomeri na početak liste.

Page 17: Primeri aplikacija razgranate strukture

2. U suprotnom, umetne se na početak liste. Ukoliko je prekoračen

kapacitet liste, zadnji dokument se izbacuje. Zadan je kapacitet liste (koja je na početku prazna) i niz dokumenata koje

korisnik otvara. Napišite program koji ispisuje sadržaj liste nakon otvaranja svih dokumenata u zadanom redosledu. PRIMERI TEST PODATAKA ulaz 4 3 a b

c

izlaz c b a

ulaz 4 4 a b

c

b izlaz b c a

ulaz 2 6 buba koko

buba

ivan ivan koko izlaz koko ivan

static void Main(string[] args) { string[] a; int n, K, d = 0; K = Convert.ToInt32(Console.ReadLine()); n = Convert.ToInt32(Console.ReadLine()); a = new string[K]; for (int i = 0; i < n; i++) { string x = Console.ReadLine(); int p = -1; for (int j = 0; j < d; j++) if (a[j] == x) { p = j; break; } if (p == -1) { if (d < K) d++; p = d - 1; } while (p > 0) { a[p] = a[p - 1]; p--; } a[0] = x; } Console.WriteLine("*********"); for (int i = 0; i < d; i++) Console.WriteLine(a[i]); }

Page 18: Primeri aplikacija razgranate strukture

Pada sneg Kreirati aplikaciju u kojoj pada sneg.

struct Pahuljica { public int x, y, a, dy; } Pahuljica[] p = new Pahuljica[10]; int n = 10; Random r = new Random(); void Crtaj(Graphics g, Pahuljica p) { Pen olovka = new Pen(Color.White, 3); g.DrawLine(olovka, p.x - p.a, p.y - p.a, p.x + p.a, p.y + p.a); g.DrawLine(olovka, p.x - p.a, p.y + p.a, p.x + p.a, p.y - p.a); g.DrawLine(olovka, p.x - p.a / 2, p.y, p.x + p.a / 2, p.y); g.DrawLine(olovka, p.x, p.y - p.a / 2, p.x, p.y + p.a / 2); } private void Form1_Load(object sender, EventArgs e) { int razmak = ClientRectangle.Width / (n + 1); int x = razmak; for (int i = 0; i < n; i++) { p[i] = new Pahuljica(); p[i].x = x; x += razmak; p[i].a = r.Next(20, 40); p[i].y = -p[i].a; p[i].dy = r.Next(2, 10); } timer1.Start(); }

Page 19: Primeri aplikacija razgranate strukture

private void Form1_Paint(object sender, PaintEventArgs e) { for (int i = 0; i < n; i++) { Crtaj(e.Graphics, p[i]); } } private void timer1_Tick(object sender, EventArgs e) { for (int i = 0; i < n; i++) { p[i].y += p[i].dy; if (p[i].y > ClientRectangle.Height + p[i].a) { p[i].a = r.Next(20, 40); p[i].y = -p[i].a; p[i].dy = r.Next(2, 10); } } Refresh(); }

Padaju loptice Kreirati aplikaciju u kojoj loptice padnu na pod.

struct Loptica { public int x, y, a, dy; public Color boja; } Loptica[] p = new Loptica[10]; int n = 10; Random r = new Random(); void Crtaj(Graphics g, Loptica p) { SolidBrush cetka = new SolidBrush(p.boja); g.FillEllipse(cetka, p.x - p.a, p.y - p.a, 2 * p.a, 2 * p.a); }

Page 20: Primeri aplikacija razgranate strukture

private void Form1_Load(object sender, EventArgs e) { int razmak = ClientRectangle.Width / (n + 1); int x = razmak; for (int i = 0; i < n; i++) { p[i] = new Loptica(); p[i].x = x; x += razmak; p[i].a = 10; p[i].y = p[i].a; p[i].dy = r.Next(2, 10); p[i].boja = Color.FromArgb(r.Next(256), r.Next(256), r.Next(256)); } timer1.Start(); } private void Form1_Paint(object sender, PaintEventArgs e) { for (int i = 0; i < n; i++) { Crtaj(e.Graphics, p[i]); } } private void timer1_Tick(object sender, EventArgs e) { for (int i = 0; i < n; i++) { p[i].y += p[i].dy; if (p[i].y > ClientRectangle.Height - p[i].a) { p[i].dy = 0; } } Refresh(); }

Krugovi Obezbediti korisniku da dodaje krug, briše ili pomera krugove (3 radiobuuton-a).

a) Korisnik dodaje krug tako što pritisne taster miša tamo gde želi da bude

centar kruga, krug raste dokle god je pritisnut taster. Kada otpusti taster

miša izabere se na slučajan način boja kruga, i krug se nacrta.

b) Korisnik briše jedan ili više krugova na koje je kliknuo (kada je uključena

opcija za brisanje)

c) Pomeranje krugova se realizuje tako što se svaki krug čiji je centar na

rastojanju po x osi većem od 5 od tačke na koju je korisnik kliknuo, krug

približe za 5 piksela po x osi tački na koju je korisnik kliknuo.

Page 21: Primeri aplikacija razgranate strukture

struct Krug

{ public int x, y, r; public Color boja; } Krug[] K = new Krug[100]; int n = 0; Random R = new Random(); private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { if(rbDodaj.Checked) if (n < 100) { n++; K[n - 1].x = e.X; K[n - 1].y = e.Y; K[n - 1].boja = Color.FromArgb(R.Next(150, 256), R.Next(256), R.Next(256), R.Next(256)); K[n - 1].r = 5; timer1.Start(); } if (rbBrisi.Checked) { int i = 0; while (i < n) { double d = Math.Sqrt((K[i].x - e.X) * (K[i].x - e.X) +

(K[i].y - e.Y) * (K[i].y - e.Y)); if (d < K[i].r) { K[i] = K[n - 1]; n--; } else i++; } pictureBox1.Refresh(); } if (rbPomeri.Checked) { for (int i = 0; i < n; i++) { if (K[i].x - e.X >= 5) K[i].x -= 5; else if (e.X - K[i].x >= 5) K[i].x += 5; } pictureBox1.Refresh(); } } private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { if (radioButton1.Checked) { timer1.Stop(); pictureBox1.Refresh(); } }

Page 22: Primeri aplikacija razgranate strukture

private void pictureBox1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; SolidBrush cetka = new SolidBrush(Color.Indigo); for(int i = 0 ; i < n ; i++) { cetka.Color = K[i].boja; g.FillEllipse(cetka,K[i].x - K[i].r, K[i].y - K[i].r ,

2 * K[i].r , 2 * K[i].r); } } private void timer1_Tick(object sender, EventArgs e) { K[n - 1].r += 10; }

Lanac loptica Generisati na slučajan način lanac od n (NumericUpDown) loptica (poluprečnik od 5

do30, boja i brzina nasumice odabrana od -20 do 20). Obezbediti da se klikom na

objekat klase PictureBox prikazuje lanac tako da se loptice dodiruju spolja, centar

prve loptice je tačka gde smo kliknuli, a centri ostalih loptica nalaze se na pravoj

koja je paralelna x osi a sadrži tačku na koju smo kliknuli. Obezbediti kretanje

loptica, loptice se pomeraju po y osi u skladu sa brzinom, kada loptica udari u ivicu

forme odbija se i nastavlja kretanje u suprotnom smeru.

struct Loptica { public int x, y, r, dy; public Color boja; } Random R = new Random(); int n; Loptica[] a;

Page 23: Primeri aplikacija razgranate strukture

private void pictureBox1_MouseClick(object sender, MouseEventArgs e) { n = (int)numericUpDown1.Value; a = new Loptica[n]; int s=e.X; for (int i = 0; i < n; i++) { a[i].r=R.Next(5,20); if (i > 0) s += a[i].r; a[i].x=s; a[i].y=e.Y; a[i].boja = Color.FromArgb(R.Next(256), R.Next(256), R.Next(256)); a[i].dy = R.Next(2, 11); if (R.Next(0, 2) == 0) a[i].dy = -a[i].dy; s+=a[i].r; } pictureBox1.Refresh(); timer1.Start(); } private void pictureBox1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; SolidBrush cetka = new SolidBrush(Color.Indigo); for (int i = 0; i < n; i++) { cetka.Color = a[i].boja; g.FillEllipse(cetka, a[i].x - a[i].r, a[i].y - a[i].r,

2 * a[i].r, 2 *a[i].r); } } private void timer1_Tick(object sender, EventArgs e) { for (int i = 0; i < n; i++) { a[i].y += a[i].dy; if (a[i].y <= a[i].r || a[i].y + a[i].r >= pictureBox1.Height) { a[i].dy = -a[i].dy; if (a[i].dy < -2) a[i].dy += 2; else if (a[i].dy > 2) a[i].dy -= 2; else a[i].dy = 0; } } pictureBox1.Refresh(); } private void numericUpDown1_ValueChanged(object sender, EventArgs e) { timer1.Stop(); }

Page 24: Primeri aplikacija razgranate strukture

Modifikovati aplikaciju tako da se brzina loptice prilikom odbijanja ako je po apsolutnoj

vrednosti veca od 2

smanji za 2

inače loptica se zaustavlja

Lanac uređenih loptica Generisati na slučajan način lanac od n (NumericUpDown) loptica (poluprečnik od 5

do30, boja i brzina nasumice odabrana od 2 do 20). Obezbediti da se klikom na

objekat klase PictureBox prikazuje lanac loptica. Loptice su u lancu uređene od

loptice najvećeg poluprečnika do loptice najmanjeg poluprečnika, i dodiruju se

spolja. Centar prve loptice je tačka gde smo kliknuli, a centri ostalih loptica nalaze

se na pravoj koja je paralelna x osi a sadrži tačku na koju smo kliknuli. Obezbediti

kretanje loptica na sledeći način: poslednja loptica se pomera po y osi u skladu sa

brzinom, kada loptica udari u ivicu forme netsane i počinje da se kreće sledeće

loptica iz lanca. Objektom klase CheckBox obezbediti izbor da li se loptice kreću ili

miruju.

struct Loptica { public int x, y, r, dy; public Color boja; } Random R = new Random(); int n; Loptica[] a; private void pictureBox1_MouseClick(object sender, MouseEventArgs e) { n = (int)numericUpDown1.Value; a = new Loptica[n]; for (int i = 0; i < n; i++) { a[i].r = R.Next(5, 30); a[i].boja = Color.FromArgb(R.Next(256), R.Next(256), R.Next(256)); a[i].dy = R.Next(2, 20); } for (int i = 0; i < n-1; i++) for(int j=i+1;j<n;j++) if (a[i].r < a[j].r) { Loptica p = a[i]; a[i] = a[j]; a[j] = p; }

Page 25: Primeri aplikacija razgranate strukture

a[0].x = e.X; a[0].y = e.Y; for (int i = 1; i < n; i++) { a[i].x = a[i - 1].x + a[i - 1].r + a[i].r; a[i].y = e.Y; } pictureBox1.Refresh(); if (checkBox1.Checked) timer1.Start(); } private void pictureBox1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; SolidBrush cetka = new SolidBrush(Color.Indigo); for (int i = 0; i <n; i++) { cetka.Color = a[i].boja; g.FillEllipse(cetka, a[i].x - a[i].r, a[i].y - a[i].r,

2 * a[i].r, 2 * a[i].r); } } private void checkBox1_CheckedChanged(object sender, EventArgs e) { if (checkBox1.Checked) timer1.Start(); else timer1.Stop(); } private void timer1_Tick(object sender, EventArgs e) { if (n == 0) timer1.Stop(); else { a[n - 1].y += a[n - 1].dy; if (a[n - 1].y + a[n - 1].r > pictureBox1.Height) n--; } pictureBox1.Refresh(); }

Izbegavanje krugova

Kreirati apliakciju kojom se na slučajan način svake petine sekunde dodaje krug koji se pomera

po x osi (brizinu pomeranja generidsati na slučajan način). Krug se dodaje uz levu ivicu forme.

Krugovi se pomeraju duz x ose u skladu sa brzinom koja se na slučajan način definiše pri

kreiranju kruga. Korisnik pomera miša i pri tome nestaje svaki krug kome pripada tačka na kojoj

je pozicioniran miš. Kada krug, prilikom pomeranja, izađe iz granica forme treba ga isključiti iz

niza.

Page 26: Primeri aplikacija razgranate strukture

struct Loptica { public int x, y, r, dx; public Color boja; } Loptica[] a = new Loptica[100]; int n = 0; Random R = new Random(); int x, y; private void timer1_Tick(object sender, EventArgs e) { if (n < 100) { a[n].r = R.Next(5, 30); a[n].x = a[n].r; a[n].y = R.Next(a[n].r, ClientRectangle.Height - a[n].r); a[n].dx = R.Next(2, 20); a[n].boja = Color.FromArgb(R.Next(256), R.Next(256), R.Next(256)); n++; Refresh(); } } private void Form1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; SolidBrush cetka = new SolidBrush(Color.Indigo); for (int i = 0; i < n; i++) { cetka.Color = a[i].boja; g.FillEllipse(cetka, a[i].x - a[i].r, a[i].y - a[i].r,

2 * a[i].r, 2 * a[i].r); } }

Page 27: Primeri aplikacija razgranate strukture

private void Form1_MouseMove(object sender, MouseEventArgs e) { x = e.X; y = e.Y; } private void timer2_Tick(object sender, EventArgs e) { // pomeranje krugova, pri tome izbacujemo iz niza one koji izlaze iz granica forme for (int i = 0; i < n; i++) { a[i].x += a[i].dx; if (a[i].x + a[i].r > ClientRectangle.Width) { a[i] = a[n - 1]; n--; i--; } } // izbacivanje iz niza onih krugova kojim pripada tacka na kojoj je pozicioniran mis for (int i = 0; i < n; i++) { if ((a[i].x - x) * (a[i].x - x) + (a[i].y - y) * (a[i].y - y)

< a[i].r * a[i].r) { a[i] = a[n - 1]; n--; i--; } } Refresh(); }

Igrica zmija

Page 28: Primeri aplikacija razgranate strukture

struct Polje { public int x,y; } int a = 20; Polje[] z; Polje Loptica; int maxX, maxY, k = 0; int pravac = 0; Random R = new Random(); private void Form1_Load(object sender, EventArgs e) { pictureBox1.Width = 800; pictureBox1.Height = 500; Width = 820; Height = 520; pictureBox1.Top = pictureBox1.Left = 10; FormBorderStyle = FormBorderStyle.FixedDialog; MaximizeBox = MinimizeBox = false; maxX = pictureBox1.Height / a; maxY = pictureBox1.Width / a; z = new Polje[maxX * maxY]; pocetak(); } private void pocetak() { z[0].x = R.Next(0, maxY); z[0].y = R.Next(0, maxX); k = 1; do { Loptica.x = R.Next(0, maxY); Loptica.y = R.Next(0, maxX); } while (Loptica.x == z[0].x && Loptica.y == z[0].y); pravac = 0; } private void pictureBox1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; for (int i = 0; i < k; i++) { g.FillRectangle(Brushes.ForestGreen, z[i].x * a, z[i].y * a, a, a); g.DrawRectangle(Pens.Green, z[i].x * a, z[i].y * a, a, a); } g.FillEllipse(Brushes.Black, z[0].x*a + a /2-a/ 4,

z[0].y*a + a/2-a / 4, 4, 4); g.FillEllipse(Brushes.Black, z[0].x * a + a/2 +a/ 4,

z[0].y * a + a /2-a/ 4, 4, 4); g.FillEllipse(Brushes.Black, Loptica.x*a+a/4, Loptica.y*a+a/4,a/2,a/2); }

Page 29: Primeri aplikacija razgranate strukture

private void timer1_Tick(object sender, EventArgs e) { Polje pom = z[k - 1]; for (int i = k-1; i >0; i--) { z[i] = z[i - 1]; } if(pravac ==1)z[0].x--; if(pravac ==2)z[0].x++; if(pravac ==3)z[0].y--; if(pravac ==4)z[0].y++; if (z[0].x < 0) z[0].x = maxY-1; if(z[0].x==maxY) z[0].x=0; if (z[0].y < 0) z[0].y = maxX-1; if (z[0].y == maxX) z[0].y = 0; if (Loptica.x == z[0].x && Loptica.y == z[0].y) { z[k] = pom; k++; while (LopticaPripadaZmiji()) { Loptica.x = R.Next(0, maxY); Loptica.y = R.Next(0, maxX); } } pictureBox1.Refresh(); if(Sudar()) { timer1.Stop(); if (MessageBox.Show(" Da li zelite novu igru", "...", MessageBoxButtons.YesNo) == DialogResult.Yes) { pocetak(); pictureBox1.Refresh(); } else Close(); } } private void Form1_KeyDown(object sender, KeyEventArgs e) { if (pravac > 2 || k==1) { if (e.KeyCode == Keys.Left) pravac = 1; else if (e.KeyCode == Keys.Right) pravac = 2; }

Page 30: Primeri aplikacija razgranate strukture

if (pravac < 3||k==1) if (e.KeyCode == Keys.Up) pravac = 3; else if (e.KeyCode == Keys.Down) pravac = 4; if (pravac!=0) timer1.Enabled = true; } // provera da li loptica pripada zmiji bool LopticaPripadaZmiji() { for (int i = 0; i < k; i++) { if (Loptica.x == z[i].x && Loptica.y == z[i].y) return true; } return false; } // da li zmija udara u sebe bool Sudar() { for (int i = 1; i < k; i++) { if (z[0].x == z[i].x && z[0].y == z[i].y) return true; } return false; }