Пример 1. Написати програм који притиском на командно дугме ODREDI одређује и исписује збир свих парних бројева до броја n и свих непарних бројева до броја n. Број n је природан број, који корисник уноси.
Решење:
|
|||
Слика 8.17. Изглед форме у Примеру 1 |
Слика 8.18. Изглед форме у Примеру 1 ако је унос исправан (Тако да уколико смо унели нпр. број 66 наш програм треба да изгледа овако) | Слика 8.19. Изглед форме у Примеру 1 ако унос није исправан (Тако да уколико смо унели нпр. број 66 наш програм треба да изгледа овако) |
//Uzimamo vrednost za n kju je korisnik uneo
int n = int.Parse(textBox1.Text);
//Promenljiva z_nepar je zbir neparnih borjeva do n, a z_par je zbir parnih brojeva do n.
//Na pocetku postavimo da je z_nepar=0 i da je z_par=0.
int z_nepar = 0, z_par = 0;
//U labeli 2 cemo ispisati koliki je zbir parnih brojeva do broja n
label2.Text = "Zbir svih parnih brojeva do broja " + n + " je ";
//U labeli 3 cemo ispisati koliki je zbir neparnih brojeva do broja n
label3.Text = "Zbir svih neparnih brojeva do broja " + n + " je ";
//Pitamo se da li je n prirodan broj, ako jeste prolazimo kroz petlju
if (n > 0)
for (int i = 1; i <= n; i++)
{
//Ukoliko je broj deljiv sa 2, znaci da je paran,
//Tako da na do tada izracunat zbir parnih brojeva dodajemo jos i taj broj.
if (i % 2 == 0)
z_par = z_par + i;
//U suprotnom broj nije deljiv sa 2, sto znaci da nije paran,
//Tako da na do tada izracunat zbir neparnih brojeva dodajemo jos i taj broj.
else
z_nepar = z_nepar + i;
}
//U slucaju da uneto n nije prirodan broj korisniku saljemo poruku da je neispravan unos
//I oslobadjamo textBox1 kako bi korisnik uneo ispravan broj.
else
{
MessageBox.Show("Unesite prirodan broj n!");
textBox1.Text = "";
}
//Na kraju u odgovarajucim labelama ispisujemo resenja.
label2.Text = label2.Text + z_par;
label3.Text = label3.Text + z_nepar;
Пример 2. Написати програм који притиском на командно дугме ODREDI одеђује и исписује n-ти степен броја x . Број n је природан број, а број x цео број. Ова два броја корисник уноси.
Решење:
|
|||
Слика 8.20. Изглед форме у Примеру 2 |
Слика 8.21. Изглед форме у Примеру 2 ако је унос исправан (Тако да уколико смо унели нпр. n=7 и x=-4 наш програм треба да изгледа овако) | Слика 8.22. Изглед форме у Примеру 2 ако унос није исправан (Уколико смо унели неку погрешну вредност, нпр. n=-3 и x=9 наш програм треба да изгледа овако) |
//Uzimamo vrednost za n iz textBox1 koju je korisnik uneo.
int n = int.Parse(textBox1.Text);
//Uzimamo vrednost za x iz textBox2 koju je kosrisnik uneo.
int x = int.Parse(textBox2.Text);
//Promenljiva s predstavlja stepen broja x. U pocetku postavimo da je s=1.
int s = 1;
//Prvo ispitujemo da li je n prirodan broj.
//Ako n nije prirodan broj ispisujemo odgovarajucu poruku i oslobadjamo textBox1 za novi unos
if (n < 0)
{
MessageBox.Show("Broj n mora biti prirodan!");
textBox1.Text = "";
}
//Ukoliko je n prirodan broj, mozemo da odredimo stepen broja x
else
{
//U prvom koraku i=1 i idemo sve do i=n. U svakom prolazu racunamo s. Korak se povecava za 1.
for (int i = 1; i <= n; i++)
s = s * x; //Primer: n=5, x=2
//1.korak: i=1, i<=5 TACNO
// s=1*2=2, i++ --> i=i+1=1+1=2
//2.korak: i=2, i<=5 TACNO
// s=2*2=4 , i++ --> i=i+1=2+1=3
//3.korak: i=3, i<=5 TACNO
// s=4*2=8, i++ --> i=i+1=3+1=4
//4.korak: i=4,i<=5 TACNO
// s=8*2=16, i++ --> i=i+1=4+1=5
//5.korak: i=5, i<=5 TACNO
// s=16*2=32, i++ --> i=i+1=5+1=6
//6.korak: i=6 i<=5 NETACNO -----> napustamo petlju!!!
}
//U labeli 3 ispisujemo koliko je x^n.
label3.Text = "x^n= " + s;
Пример 3. Написати програм који притиском на командно дугме ODREDI одеђује и исписује факторијел броја n, односно n!. Број n је природан број, који корисник уноси и за који важи 0 < n < 20 .
Решење:
|
|||
Слика 8.23. Изглед форме у Примеру 3 |
Слика 8.24. Изглед форме у Примеру 3 ако је унос исправан (Тако да уколико смо унели нпр. n=12 наш програм треба да изгледа овако) | Слика 8.25. Изглед форме у Примеру 3 ако унос није исправан (Уколико смо унели неку погрешну вредност, нпр. n=22 наш програм треба да изгледа овако) |
//Ucitavamo vrednost za n koju je korisnik uneo
int n = int.Parse(textBox1.Text);
//Promenljiva f cuva vrednost faktoriјela
//Vrednost za f na pocetku je 1, jer nece uticati na rezultat,
//Zato sto znamo da ako broj 1 pomnozimo nekim drugim brojem rezultat je taj broj
int f = 1;
//Ispitujemo da li je uslov iz zadatka (0<=n<=20) ispunjen.
if (n >= 0 && n <= 20)
{
//Krecemo od broja 2 i izvrsavamo naredbu iz tela petlje dok god je i<=n,
//U svakom sledecem koraku brojac i povecavamo za 1
for (int i = 2; i <= n; i++)
//Tekucu vrednost promenljive i mnozimo sa do tada izracunatom vrednoscu promenljive f
f = f * i;
//U labeli 2 ispisujemo koliko iznosi n!
label2.Text = "n!= " + f.ToString();
}
//Ukoliko uslov iz zadatka nije ispunjen radimo sledece
else
{
//Pisemo poruku korisniku, kako bi ispravio gresku
MessageBox.Show("Uneti broj n tako da vazi 0<=n<=20 !");
//Brisemo sve iz textBox1
textBox1.Text = " ";
}
Пример 4. Написати програм који притиском на командно дугме ODREDI одеђује и исписује збир квадрата свих бројева између бројева m и n које корисник унесе. Бројеви m и n су природни бројеви за које важи 1< n < m < 20.
Решење:
|
|||
Слика 8.26. Изглед форме у Примеру 4 |
Слика 8.27. Изглед форме у Примеру 4 ако је унос исправан (Тако да уколико смо унели нпр. n=3 и m=15 наш програм треба да изгледа овако) | Слика 8.28. Изглед форме у Примеру 4 ако унос није исправан (Уколико смо унели неку погрешну вредност, нпр. n=22 и m=15 наш програм треба да изгледа овако) |
//Uzimamo celobrojnu vrednost koju je korisnik uneo u textBox1 kao velicinu za n
int n = int.Parse(textBox1.Text);
//Uzimamo celobrojnu vrednost koju je korisnik uneo u textBox2 kao velicinu za m
int m = int.Parse(textBox2.Text);
//Promenljiva s je suma kvadrata brojeva izmedju n i m i ona je na pocetku jednaka 0
int s = 0;
//Pitamo se da li je korisnik uneo ispravne vrednosti.
//Unos je ispravan ukoliko je 1<=n,m<=20 i n < m
if (1 <= n && n < m && m <= 20)
{
//Krecemo od broja n i idemo do broja m, zakljucno sa brojem m
//U svakom sledecem koraku, broj i povecavamo za 1
for (int i = n; i <= m; i++)
//Sada nam je s jednaka zbiru one prethodne sume s i kvadrata trenutnog broja i
s = s + i * i;
//U labeli 3 ispisujemo koliko je zbir kvadrata brojeva od n do m
label3.Text = "Zbir kvadrata brojeva od " + n + " do " + m + " je " + s.ToString();
}
//U slucaju da je korisnik uneo neispravne podatke,
//Tj. da je uneo brojeve n i m koji ne zadovoljavaju uslov da je 1<=n,m<=20 i n < m
else
{
//Ispisujemo poruku kako bi korisnik primetio da treba da ispravi unete podatke
MessageBox.Show("Unesite prirodne brojeve n i m takve da vazi 1<=n,m<=20 i n < m!" );
//Tada brisemo sve sto je bilo upisano u textBox1
textBox1.Text = "" ;
//I brisemo sve sto je bilo upisano u textBox2
textBox2.Text = "" ;
}
Пример 5. Написати програм који притиском на командно дугме ODREDI одеђује и исписује све троцифрене бројеве који су дељиви производом својих цифара.
Решење:
|
|||
Слика 8.29. Изглед форме у Примеру 5 |
Слика 8.30. Изглед форме у Примеру 5 ако је унос исправан |
label1.Text = "Trocifreni brojevi deljivi proizvodom svojih cifara su: " + "\n";
//Ovo je brojac koji nam pokazuje koliko ima trocifrenih brojeva deljivih proizvodom svojih cifara
int br = 0;
for (int i = 100; i < 1000; i++)
{
int a = i / 100; //Odredjujemo cifru stotina
int b = i / 10 - a * 10; //Odredjujemo cifru desetica
int c = i - 10 * b - 100 * a; //Odredjujemo cifru jedinica
//Promenljiva p je proizvod cifara trocifrenog broja abc
int p = a * b * c;
//Ako je proizvod cifara razlicit od 0, mozemo proveravati da li je broj deljiv sa p
//Ukoliko je p=0, ne mozemo to proveravati jer nije dozvoljeno deljenje nulom!
if (p != 0)
{
if (i % p == 0)
{
//Brojac br povecamo za 1 svaki put kad odredimo jedan trocifren broj
//Koji je deljiv proizvodom svojih cifara
br++;
//U labelu 1 upisujemo redni broj trocifrenog broja kao i sam trocifreni broj
label1.Text = label1.Text + br + ". " + i + "\n";
}
}
}
Пример 6.
ТАБЕЛИРАЊЕ ФУНКЦИЈЕ
Дата је функција f(x)=e^x+k*ln|sin(x)|, k је цео број такав да је |k| < 100.
Функцију f(x) треба табелирати у низу еквидистантних тачака (подједнако удаљених)
xo , x1 , ... , xn таквих да је
xo =a, xn =b, 0 < a < b < 10 и n < 10.
Написати програм који омогућава да се након притиска на командно дугме
прихвате величине k, n, a и b које је корисник унео и
прикаже на екрану одговарајућу табелу функције.
Решење:
|
|||
Слика 8.31. Изглед форме у Примеру 6 |
Слика 8.32. Изглед форме у Примеру 6 ако је унос исправан (Тако да уколико смо нпр. унели следеће вредности k=-4, n=5, a=0,12 и b=8,55 наш програм треба да изгледа овако) | Слика 8.33. Изглед форме у Примеру 6 ако унос није исправан (Уколико смо унели неку погрешну вредност, нпр. n=15 наш програм треба да изгледа овако) |
//Promenljive y, x i h su nam realni brojevi
double y, x, h;
//Promenljive k i n su celobrojne vrednosti koje korisnik unosi
int k = int.Parse(textBox1.Text);
int n = int.Parse(textBox2.Text);
//Korisnik unosi realne promenljive a i b i one predstavljaju pocetak i kraj intervala
double a = double.Parse(textBox3.Text);
double b = double.Parse(textBox4.Text);
//Ispitujemo da li su uslovi u zadatku ispunjeni
if (n > 0 && n <= 10 && Math.Abs(k) <= 100 && a > 0 && a < b && b < 10)
{
label5.Text = "Tabela funkcije f(x) = exp(x) + " + k + " * ln(abs(sin(x)))"+"\n"+"\n";
//Promenljiva h je korak izmedju tacaka
h = (double)((b - a) / n);
for (int i = 0; i <= n; i++)
{
//Promenljiva x nam predstavlja tacku
x =(double) (a + i * h);
//Promenljiva y je vrednost funkcije f(x) u tacki x
y = Math.Exp(x) + k * Math.Log(Math.Abs(Math.Sin(x)));
label5.Text = label5.Text + x + " " + y + "\n";
}
}
//Ako uslovi nisu ispunjeni, tada prikazujemo odgovarajucu poruku
else
{
MessageBox.Show("Niste uneli dobre vrednosti!");
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
textBox4.Text = "";
textBox1.Focus();
}
Пример 7. Написати програм који омогућава да се након притиска на командно дугме ODREDI прихвате позитивни цели бројеви m и n које је корисник унео и да се, затим, одреде и прикажу њихови NZS и NZD.
Решење:
|
|||
Слика 8.34. Изглед форме у Примеру 7 |
Слика 8.35. Изглед форме у Примеру 7 ако је унос исправан (Тако да уколико смо нпр. унели следеће вредности n=15 и m=48 наш програм треба да изгледа овако) | Слика 8.36. Изглед форме у Примеру 7 ако унос није исправан (Уколико смо унели неку погрешну вредност, нпр. n=-3 и m=48 наш програм треба да изгледа овако) |
//Promenljiva nzs je celobrojna vrednost
int nzs;
//Promenljiva nzd je takodje celobrojna vrednost i uvek je barem 1
//Jednaka je 1 u slucaju da su brojevi m i n uzajamno prosti
int nzd = 1;
//Korisnik unosi vrednosti m i n
int m = int.Parse(textBox1.Text);
int n = int.Parse(textBox2.Text);
//Ispitujemo da li su brojevi m i n prirodni
if (m > 0 && n > 0)
{
//U slucaju da je broj m<=n
if (m <= n)
{
//Brojac i inicijalizujemo na m i idemo sve dok je i>=1, sa korakom -1
for (int i = m; i >= 1; i--)
//Ako su brojevi m i n deljivi brojem i, to je onda nzd
if (m % i == 0 && n % i == 0)
{
//Cim smo odredili nzd, prekidamo petlju
nzd = i;
break;
}
}
//U slucaju da je m < n
else
//Brojac j inicijalizujemo na n i idemo sve dok je j>=1, sa korakom -1
for (int j = n; j >= 1; j--)
//Ako su brojevi m i n deljivi brojem j, to je onda nzd
if (m % j == 0 && n % j == 0)
{
//Cim smo odredili nzd, prekidamo petlju
nzd = j;
break;
}
//Konacno nzs mozemo odrediti tako sto proizvod brojeva m i n podelimo sa nzd
nzs = (int)m * n / nzd;
//Na kraju u labelama 3 i 4 ispisujemo odgovarajuca resenja
label3.Text = "NZD(m,n)= " + nzd;
label4.Text = "NZS(m,n)= " + nzs;
}
//Ako brojevi m i n nisu prirodni
else
{
//Ispisujemo odgovarajucu poruku i oslobadjamo textBox-ove za drugi unos
MessageBox.Show("m i n moraju biti celi pozitivni brojevi!");
textBox1.Text = "";
textBox2.Text = "";
textBox1.Focus();
}
Пример 8. Написати програм који омогућава да се након притиска на командно дугме ISPITAJ прихвати цео број n ,n > 0, и одреди да ли је број n прост или није.
Решење:
|
|||
Слика 8.37. Изглед форме у Примеру 8 |
Слика 8.38. Изглед форме у Примеру 8 ако је унос исправан (Тако да уколико смо нпр. унели следећу вредност n=17 наш програм треба да изгледа овако) | Слика 8.39. Изглед форме у Примеру 8 ако унос није исправан (Уколико смо унели неку погрешну вредност, нпр. n=-9 наш програм треба да изгледа овако) |
int n, ind, i;
//Korisnik unosi celobrojnu vrednost n
n = int.Parse(textBox1.Text);
//Ako je ispunjen uslov, tj. ako je n>0 ispitujemo da li je broj prost
if (n > 0)
{
//Postavimo indikator ind na 0 i ako je na kraju ind=0 broj je prost,
//U suprotnom (ind=1) broj nije prost
ind = 0;
//Ako je broj n>3
if (n > 3)
//Inicijalizujemo brojac i na 2 i prolazimo kroz petlju dokle god je ispunjen uslov
//U svakom sledecem koraku i je za 1 vece od prethodne vrednosti
for (i = 2; i <= (int)(Math.Sqrt(n) + 1); i++)
//Ako je broj n deljiv sa i tada indikator ind postavljamo na 1
//A to znaci da broj n nije prost
if (n % i == 0)
ind = 1;
//Na kraju u zavisnosti od vrednosti promenljive ind u labeli2 ispisujemo resenje
if (ind == 0)
label2.Text = "Broj n = " + n + " je prost.";
else
label2.Text = "Broj n = " + n + " nije prost.";
}
//Ako uslov nije ispunjen, tj. n<=0 ispisujemo odgovarajucu poruku
//I oslobadjamo textBox za sledeci unos
else
{
MessageBox.Show("Unesite pozitivan ceo broj!");
textBox1.Text = "";
textBox1.Focus();
}
Пример 9. Написати програм који омогућава да се након притиска на командно дугме ODREDI прихвате цели бројеви a и b, такви да важи a,b > 0,a < b и да се затим за унети сегмент пронађе максимални збир квадрата бројева m и n, при чему мора да бде испуњен услов |n*n-m*n-m*m|=1.
Решење:
|
|||
Слика 8.40. Изглед форме у Примеру 9 |
Слика 8.41. Изглед форме у Примеру 9 ако је унос исправан (Тако да уколико смо нпр. унели следеће вредноси a=0 и b=5 наш програм треба да изгледа овако) | Слика 8.42. Изглед форме у Примеру 9 ако унос није исправан (Уколико смо унели неку погрешну вредност, нпр. a=-9 и b=5 наш програм треба да изгледа овако) |
int m, n, max, uslov;
//Uzimamo celobrojne vrednosti a i b
int a = int.Parse(textBox1.Text);
int b = int.Parse(textBox2.Text);
//U pocetku postavimo da je max=0 i uslov=0
max = 0;
uslov = 0;
//Prvo se pitamo da li su a i b negativni i da li je a>=b
//Ako je bilo koji od ovih uslova ispunjen, tada moramo ponovo uneti ispravne brojeve
//Ispisuje se poruka na ekranu
//I oslobadjaju se texBox1 i textBox2 za novi unos
if (a < 0 || b < 0 || a>=b)
{
MessageBox.Show("Morate uneti pozitivne cele brojeve a i b i pri tome mora a biti manje od b!");
textBox1.Text = "";
textBox2.Text = "";
}
//Ako brojevi a i b zadovoljavaju uslove zadatka
else
{
//U label3 ispisujemo nase resenje
label3.Text = "Maksimalni zbir kvadrata dva broja iz segmenta [ " + a + " , " + b + " ] je: ";
//Prolazimo kroz for petlju za n
for (n = a; n <= b; n++)
//U ovoj for petlji imamo jos jednu for petlju za m
for (m = a; m <= b; m++)
{
//Prvo izracunamo vrednost izraza iz uslova zadatka
//A to je izraz n*n-m*n-m*m
uslov = n * n - m * n - m * m;
//Zatim se pitamo da li je ispunjen uslov koji je dat u zadatku,
//Tj. da li vazi |n*n-m*n-m*m|=1
if (Math.Abs(uslov) == 1)
{
//Ako je uslov ispunjen, onda je max=m*m+n*n
max = m * m + n * n;
break;
}
}
//Na kraju u label3 se ispisuje nase resenje
//Nase resenje ce biti zbir kvadrata ona dva broja
//Koji su poslednji u ovoj dvostrukoj petlji,
//Takvi da zadovoljavaju uslov koji je u zadatku dat
label3.Text = label3.Text + max;
}
Пример 10. Написати програм који на основу унетог броја месеца и дана у месецу године која није преступна одређује редни број одговарајућег дана у години ( од 1 до 365 )
Решење:
|
|||
Слика 8.43. Изглед форме у Примеру 10 |
Слика 8.44. Изглед форме у Примеру 10 ако је унос исправан (Тако да уколико смо нпр. унели следеће вредноси dan=30 и mesec=12 наш програм треба да изгледа овако) |
int m, i, suma;
//Ubacujemo promenljive koje ce nam pomoci u toku rada programa
int dan = int.Parse(textBox1.Text);
int mesec = int.Parse(textBox2.Text);
//Unosimo celobrojne vrednosti za dan i mesec
i=31;
suma=0;
//U pocetku postavimo pocetne vrednosti za promenljive suma,i
if (mesec == 2 && (1 <= dan && dan <= 28))
//Za pocetak,moramo uneti odgovarajuca pitanja,da ne bi doslo do greske pri unosu
//Npr, da u februaru mozemo uneti vrednost za promenljivu dan,samo do broja 28
//takodje,u okviru svakog if-a,unosicemo istu for petlju,da bi prosli kroz sve prepreke
//za unos podataka
{
for (m = 1; m < mesec; m++)
//Ovde brojac ispituje da li je promenljiva mesec izmedju jedinice i unete
//Vrednosti za mesec
{
if (m == 2)
//Ako je mesec februar,promenljiva suma uzima vrednost 28
{
suma = suma + 28;
i = 30;
//Promenljiva uzima vrednost 30
}
else
{
if (m == 8)
//Znamo da su jul i avgust dva meseca koji jedan za drugim imaju po 31 dan,
//Zato moramo i to da obradimo
{
i = 31;
}
suma = suma + i;
}
if (i == 31)
i--;
else
if (i == 30)
i++;
//Naravno u slucaju da obradjujemo mesece koji imaju po 30 ili 31 dan,
//Respektivno se menja promenljiva i,povecavajuci/umanjujuci svoju vrednost
}
suma = suma + dan;
//Na kraju samo saberemo sve vrednosti do meseca u kojem je trazeni dan,zajedno sa
//Vrednoscu dana koji je unet
label3.Text = "" + suma;
//Ispisemo trazeni rezultat u labelu
}
else
if ((mesec == 1 || mesec == 3 || mesec == 5 || mesec == 7 || mesec == 8 ||
mesec == 10 || mesec == 12) && (1 <= dan && dan <= 31))
//Ili da ne mozemo unositi brojeve koji nisu u opsegu [1,31] za mesece koji imaju
//Taj broj dana
{
for (m = 1; m < mesec; m++)
{
if (m == 2)
//Ovde ispitujemo da li je nas parametar jednak 2
{
suma = suma + 28;
i = 30;
}
else
//Sledecim redovima ispitujemo slucajeve u van prethodnog
{
if (m == 8)
{
i = 31;
}
suma = suma + i;
}
if (i == 31)
i--;
else
if (i == 30)
i++;
}
//Na kraju, samo promenimo prethodno podrazumevane vrednosti promenljivih
suma = suma + dan;
label3.Text = "" + suma;
}
else
if ((mesec == 4 || mesec == 6 || mesec == 9 || mesec == 11) &&
(1 <= dan && dan <= 30))
//U ovom slucaju ispitujemo da li je broj dana izmedju 1 i 30
//Za odgovarajuce mesece
{
for (m = 1; m < mesec; m++)
{
if (m == 2)
//Ovde ispitujemo da li je nas parametar jednak 2
{
suma = suma + 28;
i = 30;
}
else
//Sledecim redovima ispitujemo slucajeve u van prethodnog
{
if (m == 8)
{
i = 31;
}
suma = suma + i;
}
if (i == 31)
i--;
else
if (i == 30)
i++;
}
//Na kraju, samo promenimo prethodno podrazumevane vrednosti promenljivih
suma = suma + dan;
label3.Text = "" + suma;
}
else label3.Text = "Niste uneli ispravne podatke";
Пример 11. Написати програм којим се тестира да ли је унет број Армстронгов.
Решење:
|
|||
Слика 8.45. Изглед форме у Примеру 11 |
Слика 8.46. Изглед форме у Примеру 11 ако је унос исправан (Тако да уколико смо нпр. унели следећy вредност broj=153 наш програм треба да изгледа овако) | Слика 8.47. Изглед форме у Примеру 11 ако унос није исправан (Уколико смо унели неку погрешну вредност, нпр. broj=20 наш програм треба да изгледа овако) |
int broj = int.Parse(textBox1.Text);
//Unosimo broj za koji cemo proveriti da li je Armstrongov
int n;
int i;
int suma;
int j;
//Dakle,unosimo promenljive koje ce nam pomoci u toku rada
i = 10;
suma = 0;
n = 0;
j = 1;
while (broj * 10 >= i)
//U sklopu while petlje cemo razdvajati broj na cifre
{
n = (broj % i - n) / j;
suma = suma + n * n * n;
j = j * 10;
i = i * 10;
//Na kraju cemo ispitati da li, na osnovu pravila Armstrongovog broja,
//Dobijamo vrednost koju zelimo, a tako ujedno i ispitamo ono sto
//Zelimo
}
if (suma == broj || broj == 0)
label3.Text = "Broj je Armstrongov";
else
label3.Text = "Broj nije Armstrongov";
Пример 12. Написати програм који ће из унетог броја избацити све непарне цифре
Решење:
|
|||
Слика 8.48. Изглед форме у Примеру 12 |
Слика 8.49. Изглед форме у Примеру 12 ако је унос исправан |
int broj = int.Parse(textBox1.Text);
//Unosimo broj cije neparne cifre zelimo da izbacimo
int n;
int i;
int suma;
int j;
int k;
int kopija;
//Ovde unosimo promenljivo koje ce nam pomoci u programu
i = 10;
j = 1;
n = 0;
k = 1;
suma = 0;
kopija = 0;
//Iniciramo promenljive na vrednosti koje nam odgovaraju
while (broj * 10 >= i)
//Kao i u prethodnom zadatku,broj delimo na cifre
{
n = (broj % i - kopija) / j;
if (n % 2 == 0)
//Ispitujemo da li je uneto n deljivo sa 2
{
suma = suma + (n * i) / (k * 10);
}
else
{
k = k * 10;
//Promeljivu k mnozimo sa 10
}
//Ostalo je samo da na kraju promenimo podrazumevane vrednosti promenljivih,
//Za sledecu iteraciju petlje
kopija = kopija + (n * i) / 10;
j = j * 10;
i = i * 10;
}
textBox2.Text = "" + suma;
//Sto se tice promenljive suma,ona kupi samo cifre koje nam trebaju,
//Tj. parne cifre,koje na kraju izbacimo u textboxu
Пример 13. Написати програм који израчунава број добијен обртањем цифара унетог целог броја
Решење:
|
|||
Слика 8.50. Изглед форме у Примеру 13 |
Слика 8.51. Изглед форме у Примеру 13 ако је унос исправан |
int i;
int j;
int cifra = 0;
int suma = 0;
int prava_suma=0;
int a = int.Parse(textBox1.Text);
//Ubacujemo broj cije cifre okrecemo
i = 10;
while (i < a)
i = i * 10;
j = 10;
while (i != 1)
//Kao i u prethodnim zadacima,uneti broj,delimo na cifre
{
i = i / 10;
cifra = ((a % j) - prava_suma) / (j / 10);
prava_suma = prava_suma + cifra * (j / 10);
//Ovde promenljive menjamo na odgovarajuci nacin, da bi bile spremne za sledecu iteraciju
suma = suma + cifra * i;
j = j * 10;
}
label3.Text = "" + suma;
Пример 14. Написати програм који за унет број израчунава цео део његовог корена.
Решење:
|
|||
Слика 8.52. Изглед форме у Примеру 14 |
Слика 8.53. Изглед форме у Примеру 14 ако је унос исправан |
int i;
int n = int.Parse(textBox1.Text);
//Unosimo broj ciji ceo deo korena trazimo
i = 0;
while (i * i < n)
//Trazimo broj ciji kvadrat nece preci vrednost unetog broja
i++;
if(n!=1)
i--;
label3.Text = "" + i;
//Na kraju samo ispisemo u labeli dobijeni broj
Пример 15. Написати програм којим се надовезују цифре два унета цела броја..
Решење:
|
|||
Слика 8.54. Изглед форме у Примеру 15 |
Слика 8.55. Изглед форме у Примеру 15 ако је унос исправан |
int a = int.Parse(textBox2.Text);
int b = int.Parse(textBox1.Text);
int i;
int trazeni_broj;
//Unosimo dva broja,cije cifre nadovezujemo
//Resicemo problem zadatka na sledeci nacin:
//Prvom broju cemo dodati onoliko nula,koliko drugi broj ima cifara
//Na kraju cemo ih jednostavno sabrati i dobiti trazeno
i = 1;
do
{
i = i * 10;
}
while (i <= a);
//Na kraju samo pripremimo trazeni broj za sledecu iteraciju
trazeni_broj = b*i + a;
label4.Text = "Trazeni broj je: " + trazeni_broj;
Пример 16. Написати програм који умеће унету цифру на унету позицију унетог целог броја.
Решење:
|
|||
Слика 8.56. Изглед форме у Примеру 16 |
Слика 8.57. Изглед форме у Примеру 16 ако је унос исправан |
int broj = int.Parse(textBox1.Text);
int poz = int.Parse(textBox3.Text);
int unos = int.Parse(textBox2.Text);
int i;
//Unosimo broj,poziciju unosa cifre,kao i samu cifru
int j;
int temp;
i = 1;
j = 0;
if (poz != 0)
//Izbegavanje ulazenja u petlju specijalnog slucaja,
//Gde je poz=0
{
poz = poz - 1;
do
{
i = i * 10;
j++;
}
while (j - 1 < poz);
}
temp = broj%i + unos*i + (broj/i)*i*10;
//Prosirujemo deo pre pozicije za umetanje cifre,
//Za onoliko nula,za koliko je cifara ostalo od broja
label5.Text = "Trazeni broj je: " + temp;
Пример 17. Написати програм који размењује прву и последњу цифру унетог целог броја.
Решење:
|
|||
Слика 8.58. Изглед форме у Примеру 17 |
Слика 8.59. Изглед форме у Примеру 17 ако је унос исправан |
int a = int.Parse(textBox1.Text);
//Unosimo broj cije ce prva i poslednja cifra da zamene mesta
int i;
int p;
int q;
int cifra;
int prava_suma;
int k;
int j;
//Unosimo nekoliko promenljivih koje ce nam pomoci pri radu
prava_suma = 0;
j = 10;
i = 1;
do
{
i = i * 10;
}
while (i <= a);
k = i/10;
q = a % 10;
//Ono sto radimo je da od pocetnog broja oduzimamo prvu cifru,
//Pomnozenu promenljivom i i 10^n, gde je n broj cifara unetog broja
do
{
i = i / 10;
cifra = ((a % j) - prava_suma) / (j / 10);
prava_suma = prava_suma + cifra * (j / 10);
j = j * 10;
}
while (i != 1);
p = cifra;
a = a - p * k + q * k - q + p;
//Na kraju samo saberemo cifre koje smo "razdvojili"
label3.Text = "Trazeni broj je: " + a;
Пример 18. Дефинишемо низ са xo =1, xn+1 =xn - (xn * xn -a)/2xn. Испитати чему тежи низ, за унети број а. Итеративни поступак зауставити када је |xn+1-xn| < 0.0001.
Решење:
|
|||
Слика 8.60. Изглед форме у Примеру 18 |
Слика 8.61. Изглед форме у Примеру 18 ако је унос исправан |
double p, q, suma;
//Ubacujemo a
int a = int.Parse(textBox1.Text);
p = 1;
//q je clan niza posle p
suma = p;
while (6 == 6)
{
q = p - (p * p - a) / (2 * p);
if (q - p < 0)
{
//Sada ispitujemo da li je razlika veca od -0.0001
int (q - p > -0.0001)
break;
}
else
{
//Ovde, ovom petljom proveravamo da li je razlika manja od datog broja
if (q - p < 0.0001)
break;
}
//Sabiramo clanove niza i stavljamo zbir u promenljivu "suma",
//Dok dodeljujemo vrednost q promenljivoj p da bi u sledecem 'krugu'
//Nasli naredni clan niza u promenljivoj q
suma = suma + q;
p = q;
}
label2.Text = "" + suma;