Professional Documents
Culture Documents
Napredni Kurs 2
Napredni Kurs 2
Kretanje loptica
Kreirati aplikaciju koja obezbeuje kontinuiorano kretanje
loptice gore desno, gore levo, dole desno, dole levo (po be
ose se pomera za poluprenik). Kada doe do ivice forme
odbija se i nastavlja kretanje u suprotnom smeru.
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 pomou dana,
meseca i godine (tri objekta klase NumericUpDown) odreuje datum
sledeeg 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.
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
{
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 kree po formi (po obe ose) kada doe do
gornje, desne ili leve ivice forme odbija se menjajui smer kretanja. Na donjoj ivici
forme nalazi se pravougaonik koji korisnik moe pomerati, korienjem 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.
Sportista 1
Sportista prvog dana treninga pretrci A metara, a svakog sledeceg 10%
vie od pethodnog dana. Prikazati koliko svakog dana pretrci u periodu od
N dana treninga, na kraju prikazati koliko kilometara je ukupno pretrao.
Sportista 2
Sportista prvog dana treninga pretrci A metara, a svakog sledeceg 10%
vie od prethodnog dana. Zeli da postigne dnevnu normu od B metara.
Prikazati posle koliko dan postie eljenu normu (prikazati i koliko svakog
dana pretri).
}
}
Stepenice
Kreirati aplikaciju kojom se crtaju stepenice u granicama forme (kao to je
prikazano na slici) poev od take na koju je korisnik kliknuo; irina i visina
stepenika je 20 piksela.
Crtanje 1
Kreirati aplikaciju kojom se taka na koju je korisnik
kliknuo spaja sa ivicama forme koje su izdeljene na n
delova. Broj n(3n100) se bira u kontroli
NumericUpDown.
Crtanje 2
Za dati prirodan broj n svaku ivicu objekta klase PictureBox podeli na n
jednakih delova, pa dobije take spojiti kao to je prikazano na slici.
Knjiga
Mali Mirko voli knjige, ali se uvek uplai kada mora proitati neku debelu
knjigu. Uiteljica je rekla Mirku: koliko ima redova na jednoj stranici
knjiga, broj poglavlja u knjizi i koliko redova ima svako poglavlje.
Svako poglavlje poinje na novoj stranici.
Mirka zanima koliko ta knjiga ima stranica, a pomo u reavanju tog
problema je odluio pronai meu najboljim informatiarima u svojoj
koli.
Napii program koji e izraunati broj stranica knjige.
Primer:
Ulazni podaci:
10 redova na jednoj stranici
4 poglavlja
234
120
138
123
Izlaz:
63 stranice
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 sadri
cifru 5.
Prvo reenje
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 reenje
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)
nasli = true;
}
if (nasli) // nasli==true
Console.WriteLine("Broj sadrzi cifru 5");
else
Console.WriteLine("Broj ne sadrzi cifru 5");
}
Transforjmacija broja
Kreirati aplikaciju kojom dati prirodan broj n transformie tako to se
svake dve uzastopne cifre broja n zamene veom 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 transformie tako to se
svake dve uzastopne cifre broja n zamene veom od njih.
Transformaciju ponavljati dok ne dobijemo jednocifren broj.
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
sledei nain: jedno teme je pozicija na koju je korisnik pritisnuo taster
mia (MouseDown) a drugo teme pozicija kad je korisnik otpustio taster
mia (MouseUp). Svaki sledei pravougaonik ima isti centar kao
prethodni pravougaonika a stranice su mu za 5 manje od stranica
prethodnog pravougaonika.
okolada
Pera je posluio 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 najvee mogue kvadrate. Kreirati
aplikaciju kojom se ispisuje na koji nain su se drugovi posluili (ispisati
stranice kvadrata koje su lomili), na kraju ispisati koliko drugova se
posluilo okoladom.
Primer:
Ako je A=12 B=7 posluilo se ukupno 6 drugova, oni su redom uzimali kvadrate
stranica 7, 5, 2, 2, 1, 1.
}
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
odreuje koliko treninga je Marko imao.
Max i prosek
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");
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);
}
if (p == -1)
{
if (d < K)
d++;
p = d - 1;
}
while (p > 0)
{
a[p] = a[p - 1]; p--;
}
a[0] = x;
}
Console.WriteLine("*********");
struct Pahuljica
{
public int x, y, a, dy;
}
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);
}
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();
}
Krugovi
Obezbediti korisniku da dodaje krug, brie ili pomera krugove (3 radiobuuton-a).
a) Korisnik dodaje krug tako to pritisne taster mia tamo gde eli da bude
centar kruga, krug raste dokle god je pritisnut taster. Kada otpusti taster
mia izabere se na sluajan nain boja kruga, i krug se nacrta.
b) Korisnik brie jedan ili vie krugova na koje je kliknuo (kada je ukljuena
opcija za brisanje)
c) Pomeranje krugova se realizuje tako to se svaki krug iji je centar na
rastojanju po x osi veem od 5 od take na koju je korisnik kliknuo, krug
priblie za 5 piksela po x osi taki na koju je korisnik kliknuo.
struct Krug
{
public int x, y, r;
public Color boja;
}
Krug[] K = new Krug[100];
int n = 0;
Random R = new Random();
}
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();
}
}
Lanac loptica
Generisati na sluajan nain lanac od n (NumericUpDown) loptica (poluprenik 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 taka gde smo kliknuli, a centri ostalih loptica nalaze se na pravoj
koja je paralelna x osi a sadri taku 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;
}
int n;
Loptica[] a;
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();
}
}
}
pictureBox1.Refresh();
}
struct Loptica
{
public int x, y, r, dy;
public Color boja;
}
Random R = new Random();
int n;
Loptica[] a;
Izbegavanje krugova
Kreirati apliakciju kojom se na sluajan nain svake petine sekunde dodaje krug koji se pomera
po x osi (brizinu pomeranja generidsati na sluajan nain). Krug se dodaje uz levu ivicu forme.
Krugovi se pomeraju duz x ose u skladu sa brzinom koja se na sluajan nain definie pri
kreiranju kruga. Korisnik pomera mia i pri tome nestaje svaki krug kome pripada taka na kojoj
je pozicioniran mi. Kada krug, prilikom pomeranja, izae iz granica forme treba ga iskljuiti iz
niza.
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;
Igrica zmija
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;
pravac = 0;
}
pictureBox1.Refresh();
if(Sudar())
{
timer1.Stop();
if (MessageBox.Show(" Da li zelite novu igru", "...",
MessageBoxButtons.YesNo) == DialogResult.Yes)
{
pocetak();
pictureBox1.Refresh();
}
else
Close();
}
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;