You are on page 1of 26

1) Napraviti klasu koja opisuje kompleksne brojeve.

Klasa treba da ima sledeće


metode:
parametrizovani konstrukor, za sabiranje dva kompleksna broja, za oduzimanje dva
kompleksna
broja, za proveru jednakosi i različitosti(da li su različiti ili su jednaki), za
proveru da li je jedan
broj veći/manji od drugog broja, za konjugovanje kompleksnog broja i za ispis
kompleknog broja.
Metode u klasi realizovati preopterećenjem operatora. U glavnom programu u okviru
petlje (na
kraju pitati korisnika da li želi da ponovi operaciju) testirati metode za
sabiranje i proveru
različitosti. Kompleksni broj je veći/manji od drugog broja ako mu je moduo
veći/manji.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace KompleksniBr12
{
class Meni
{
private Meni()
{

public static void Test()


{
char odg;
do
{
switch (odg = OsnMeni())
{
case '1':
Console.Write("Unesi realni deo prvog kompleksnog broja:");
double r1=double.Parse(Console.ReadLine());
Console.Write("Unesi imaginarni deo prvog kompleksnog
broja:");
double i1=double.Parse(Console.ReadLine());
Kompleks z1 = new Kompleks(r1, i1);
Console.Write("Unesi realni deo drugog kompleksnog
broja:");
double r2 = double.Parse(Console.ReadLine());
Console.Write("Unesi imaginarni deo drugog kompleksnog
broja:");
double i2 = double.Parse(Console.ReadLine());
Kompleks z2 = new Kompleks(r2, i2);
Kompleks z = z1 + z2;
z1.Ispis('A');
z2.Ispis('B');
z.Ispis('C');
Console.ReadKey();
break;
case '2':
Console.Write("Unesi realni deo prvog kompleksnog broja:");
r1 = double.Parse(Console.ReadLine());
Console.Write("Unesi imaginarni deo prvog kompleksnog
broja:");
i1 = double.Parse(Console.ReadLine());
z1 = new Kompleks(r1, i1);
Console.Write("Unesi realni deo drugog kompleksnog
broja:");
r2 = double.Parse(Console.ReadLine());
Console.Write("Unesi imaginarni deo drugog kompleksnog
broja:");
i2 = double.Parse(Console.ReadLine());
z2 = new Kompleks(r2, i2);
z = z1 - z2;
z1.Ispis('A');
z2.Ispis('B');
z.Ispis('C');
Console.ReadKey();
break;
case '3':
Console.Write("Unesi realni deo prvog kompleksnog broja:");
r1 = double.Parse(Console.ReadLine());
Console.Write("Unesi imaginarni deo prvog kompleksnog
broja:");
i1 = double.Parse(Console.ReadLine());
z1 = new Kompleks(r1, i1);
z = !z1;
z1.Ispis('A');
z.Ispis('B');
Console.ReadKey();
break;
case '4':
Console.Write("Unesi realni deo prvog kompleksnog broja:");
r1 = double.Parse(Console.ReadLine());
Console.Write("Unesi imaginarni deo prvog kompleksnog
broja:");
i1 = double.Parse(Console.ReadLine());
z1 = new Kompleks(r1, i1);
Console.Write("Unesi realni deo drugog kompleksnog
broja:");
r2 = double.Parse(Console.ReadLine());
Console.Write("Unesi imaginarni deo drugog kompleksnog
broja:");
i2 = double.Parse(Console.ReadLine());
z2 = new Kompleks(r2, i2);
if(z1==z2)
{
Console.WriteLine("Komp Brojevi su jednaki.");
}
else
{
Console.WriteLine("Komp Brojevi nisu jednaki.");
}
Console.ReadKey();
break;
case '5':
Console.Write("Unesi realni deo prvog kompleksnog broja:");
r1 = double.Parse(Console.ReadLine());
Console.Write("Unesi imaginarni deo prvog kompleksnog
broja:");
i1 = double.Parse(Console.ReadLine());
z1 = new Kompleks(r1, i1);
Console.Write("Unesi realni deo drugog kompleksnog
broja:");
r2 = double.Parse(Console.ReadLine());
Console.Write("Unesi imaginarni deo drugog kompleksnog
broja:");
i2 = double.Parse(Console.ReadLine());
z2 = new Kompleks(r2, i2);
if (z1 != z2)
{
Console.WriteLine("Komp Brojevi nisu jednaki...");
}
else
{
Console.WriteLine("Komp Brojevi su jednaki...");
}
Console.ReadKey();
break;
}
Console.Clear();
}
while (odg != '6');
}

private static char OsnMeni()


{
Console.WriteLine("\t\t\tProgram za obavljanje osnovnih aritmetičkih
operacija sa kompleksnim brojevima");
Console.WriteLine("\t1)Sabiranje");
Console.WriteLine("\t2)Oduzimanje");
Console.WriteLine("\t3)Konjugovanje");
Console.WriteLine("\t4)Provera jednakosti dva kompleksna broja");
Console.WriteLine("\t5)Provera razlicitosti dva kompleksna broja");
Console.WriteLine("\t6)Kraj programa");
Console.Write("\tOdabetite opciju:");
char odg = Console.ReadKey().KeyChar;
Console.Clear();
return odg;
}
}
}

using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace KompleksniBr12
{
class Kompleks
{
double r, i;

public Kompleks(): this(0,0){}


public Kompleks(double r,double i)
{
this.r = r;
this.i = i;
}

public void Ispis(char naziv)


{
Console.WriteLine($"{naziv}: RE:{r:0.00} IM:{i:0.00}");
}

public static Kompleks operator +(Kompleks z1,Kompleks z2)


{
Kompleks z3 = new Kompleks();
z3.r = z1.r + z2.r;
z3.i = z1.i + z2.i;
return z3;
}

public static Kompleks operator -(Kompleks z1,Kompleks z2)


{
Kompleks z3 = new Kompleks();
z3.r = z1.r - z2.r;
z3.i = z1.i - z2.i;
return z3;
}

public static Kompleks operator !(Kompleks z)


{
return new Kompleks(z.r, -z.i);
}

public static bool operator ==(Kompleks z1,Kompleks z2)


{
return z1.r == z2.r && z1.i == z2.i ? true : false;
}

public static bool operator !=(Kompleks z1,Kompleks z2)


{
return z1.r == z2.r && z1.i == z2.i ? false : true;
}

public static bool operator >(Kompleks z1,Kompleks z2)


{
return Math.Sqrt(Math.Pow(z1.r, 2) + Math.Pow(z1.i, 2)) >
Math.Sqrt(Math.Pow(z2.r, 2) + Math.Pow(z2.i, 2)) ? true : false;
}

public static bool operator <(Kompleks z1, Kompleks z2)


{
return Math.Sqrt(Math.Pow(z1.r, 2) + Math.Pow(z1.i, 2)) >
Math.Sqrt(Math.Pow(z2.r, 2) + Math.Pow(z2.i, 2)) ? false : true;
}
}
}

/*Main*/
if (z1 > z2)
{
Console.WriteLine("Prvi je veci od drugog.");
}
else if (z1 < z2)
{
Console.WriteLine("Drugi je veci od prvog.");
}

2) Napraviti klasu koja opisuje kompleksne brojeve. Klasa treba da ima sledeće
metode:
parametrizovani konstrukor, za množenje dva kompleksna broja, za deljenje dva
kompleksna
broja, za proveru jednakosti dva kompleksna broja (da li su jednaki ili su
različiti), za proveru
različitosti(da li su različiti ili su jednaki) za konjugovanje kompleksnog broja i
za ispis
kompleknog broja. U glavnom programu napraviti zaštitu od deljenja sa nula
kompleksnim
brojem pri tome poređenje delioca obaviti sa nula kompleksnim brojem! U glavnom
programu u
okviru petlje (na kraju pitati korisnika da li želi da ponovi operaciju) testirati
metode za deljenje i
množenje.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace KompleksniBrIz2
{
class Kompleks
{
public double r, i;

public Kompleks() : this(0, 0) { }

public Kompleks(double r, double i)


{
this.r = r;
this.i = i;
}

public void Ispis(char naziv)


{
Console.WriteLine($"{naziv}: RE:{r:0.00} IM:{i:0.00}");
}

public static Kompleks operator +(Kompleks z1,Kompleks z2)


{
Kompleks z3 = new Kompleks();
z3.r = z1.r + z2.r;
z3.i = z1.i + z2.i;

return z3;
}

public static Kompleks operator -(Kompleks z1, Kompleks z2)


{
Kompleks z3 = new Kompleks();
z3.r = z1.r - z2.r;
z3.i = z1.i - z2.i;

return z3;
}

public static Kompleks operator !(Kompleks z)


{
return new Kompleks(z.r, -z.i);
}

public static Kompleks operator *(Kompleks z1, Kompleks z2)


{
Kompleks z3 = new Kompleks();
z3.r = z1.r * z2.r - z1.i * z2.i;
z3.i = z1.r * z2.i + z2.r * z1.i;

return z3;
}

public static Kompleks operator /(Kompleks z1, Kompleks z2)


{
Kompleks z3 = new Kompleks();
z3.r = (z1 * !z2).r / (z2 * !z2).r;
z3.i = (z1 * !z2).i / (z2 * !z2).r;

return z3;
}

public static bool operator ==(Kompleks z1,Kompleks z2)


{
return z1.r == z2.r && z1.i == z2.i ? true : false;
}

public static bool operator !=(Kompleks z1, Kompleks z2)


{
return z1.r == z2.r && z1.i == z2.i ? false : true;
}

}
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace KompleksniBrIz2
{
class Program
{
static void Main(string[] args)
{
char odg;

do
{
Console.Write("Unesite realan deo prvog kompleksnog broja:");
r = double.Parse(Console.ReadLine());
Console.Write("Unesite imaginaran deo prvog kompleksnog broja:");
i = double.Parse(Console.ReadLine());
z1 = new Kompleks(r, i);
Console.Write("Unesite realan deo drugog kompleksnog broja:");
r = double.Parse(Console.ReadLine());
Console.Write("Unesite imaginaran deo drugog kompleksnog broja:");
i = double.Parse(Console.ReadLine());
z2 = new Kompleks(r, i);

try
{
z3 = z1 / z2;
Kompleks z4 = z1 * z2;
if (z2.r == 0.00 && z2.i == 0.00)
{
throw new Exception("Ne sme sa 0");

}
z3.Ispis('A');
if (z1.r == 0.00 && z1.i == 0 || z2.r == 0.00 && z2.i == 0.00)
{
throw new Exception("Ne sme sa nulom");
}
z4.Ispis('A');
}

catch (Exception e)
{
Console.WriteLine(e.Message);
}

odg = Console.ReadKey().KeyChar;
Console.Clear();
}
while (odg == 'd' || odg == 'D');

}
}
}

3) Napraviti klasu kvadratna matrica. Klasa treba da ima atribute dimenziju matrice
(tako da bude
javno svojstvo) i samu matricu. Klasa treba da ima sledeće metode:
parametrizovani/podrazumevani konstrukor, za unos matrice (poziva se u okviru
kontrukotra),
za ispis matrice, za sabiranje dve matrice, za proveru jednakosti dve matrice broja
(da li su
jednake ili su različite), za proveru različitosti(da li su različite ili su
jednake), transponovanje
matrice . Da bi se obavile operacije nad dve matrice one moraju da budu istih
dimenzija. Tako da
u tim slučajevima je potrebno uneti samo dimenziju prve matrice. U glavnom programu
u okviru
petlje (na kraju pitati korisnika da li želi da ponovi operaciju) tesitrati rad
metoda za sabiranje
matrica i transponovanje matrice.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Matrice12
{
class Meni
{
private Meni()
{

public static void Test()


{
char odg;
Matrica mat3;
do
{
switch (odg = OsnMeni())
{
case '1':
Console.Write("Unesite dimenziju matrice A:");
uint d=uint.Parse(Console.ReadLine());
Matrica mat1 = new Matrica(d, 'A');
Console.Write("Unesite dimenziju matrice B:");
uint d2 = uint.Parse(Console.ReadLine());
Matrica mat2 = new Matrica(d2, 'B');
if(mat1.d!=mat2.d)
{
Console.WriteLine("Matrice razlicitih duzina se ne mogu
sabrati.");
}
else
{
mat3 = mat1 + mat2;
Console.WriteLine("Ispis matrice A:");
mat1.IspisMatrice();
Console.WriteLine("Ispis matrice B:");
mat2.IspisMatrice();
Console.WriteLine("Ispis matrice C:");
mat3.IspisMatrice();
}
Console.ReadKey();
break;
case '2':
Console.Write("Unesite dimenziju matrice A:");
d = uint.Parse(Console.ReadLine());
mat1 = new Matrica(d, 'A');
Console.Write("Unesite dimenziju matrice B:");
d2 = uint.Parse(Console.ReadLine());
mat2 = new Matrica(d2, 'B');
if (mat1.d != mat2.d)
{
Console.WriteLine("Matrice razlicitih duzina se ne mogu
oduzimati.");
}
else
{
mat3 = mat1 - mat2;
Console.WriteLine("Ispis matrice A:");
mat1.IspisMatrice();
Console.WriteLine("Ispis matrice B:");
mat2.IspisMatrice();
Console.WriteLine("Ispis matrice C:");
mat3.IspisMatrice();
}
Console.ReadKey();
break;
case '3':
Console.Write("Unesite dimenziju matrice A:");
d = uint.Parse(Console.ReadLine());
mat1 = new Matrica(d, 'A');
Console.Write("Unesite dimenziju matrice B:");
d2 = uint.Parse(Console.ReadLine());
mat2 = new Matrica(d2, 'B');
if (mat1.d != mat2.d)
{
Console.WriteLine("Matrice razlicitih duzina se ne mogu
porediti.");
}
else
{
if(mat1==mat2)
{
Console.WriteLine("Matrice su jedanke.");
}
else
{
Console.WriteLine("Matrice su razlicite.");
}
}
Console.ReadKey();
break;
case '4':
Console.Write("Unesite dimenziju matrice A:");
d = uint.Parse(Console.ReadLine());
mat1 = new Matrica(d, 'A');
Console.Write("Unesite dimenziju matrice B:");
d2 = uint.Parse(Console.ReadLine());
mat2 = new Matrica(d2, 'B');
if (mat1.d != mat2.d)
{
Console.WriteLine("Matrice razlicitih duzina se ne mogu
porediti.");
}
else
{
if (mat1 != mat2)
{
Console.WriteLine("Matrice nisu jedanke...");
}
else
{
Console.WriteLine("Matrice su jedanke...");
}
}
Console.ReadKey();
break;
case '5':
Console.Write("Unesite dimenziju matrice A:");
d = uint.Parse(Console.ReadLine());
mat1 = new Matrica(d, 'A');
mat3 = !mat1;
Console.WriteLine("Ispis matrice A:");
mat1.IspisMatrice();
Console.WriteLine("Ispis matrice T");
mat3.IspisMatrice();
Console.ReadKey();
break;
}
Console.Clear();
}
while (odg != '6');
}

private static char OsnMeni()


{
Console.WriteLine("\t\t\tProgram za obavljanje osnovnih aritmetičkih
operacija nad matricama");
Console.WriteLine("\t1)Sabiranje");
Console.WriteLine("\t2)Oduzimanje");
Console.WriteLine("\t3)Provera jednakosti dve matrice");
Console.WriteLine("\t4)Provera različitosti dve matrice");
Console.WriteLine("\t5)Transponovanje matrice");
Console.WriteLine("\t6)Kraj programa");
Console.Write("\tOdabetite opciju:");
char odg = Console.ReadKey().KeyChar;
Console.Clear();
return odg;
}
}
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Matrice12
{
class Matrica
{
public uint d { get; set; }
int[,] mat;
char naziv;
public Matrica(uint d,char naziv)
{
this.d = d;
this.naziv = naziv;
mat = new int[d, d];
UnosMatrice();
}

public Matrica(char naziv, uint d)


{
this.naziv = naziv;
this.d = d;
mat = new int[d, d];
}

public void UnosMatrice()


{
for(int i=0;i<mat.GetLength(0);i++)
{
for(int j=0;j<mat.GetLength(1);j++)
{
Console.Write($"{naziv} [{i+1},{j+1}]:");
mat[i, j] = int.Parse(Console.ReadLine());
}
}
}

public void IspisMatrice()


{
for (int i = 0; i < mat.GetLength(0); i++)
{
for (int j = 0; j < mat.GetLength(1); j++)
{
Console.Write("{0,5}", mat[i,j]);
}
Console.WriteLine();
}
}

public static Matrica operator +(Matrica mat1,Matrica mat2)


{
Matrica mat3 = new Matrica('C', mat1.d);
for (int i = 0; i < mat1.mat.GetLength(0); i++)
{
for (int j = 0; j < mat1.mat.GetLength(1); j++)
{
mat3.mat[i, j] = mat1.mat[i, j] + mat2.mat[i, j];
}
}
return mat3;
}

public static Matrica operator -(Matrica mat1, Matrica mat2)


{
Matrica mat3 = new Matrica('C', mat1.d);
for (int i = 0; i < mat1.mat.GetLength(0); i++)
{
for (int j = 0; j < mat1.mat.GetLength(1); j++)
{
mat3.mat[i, j] = mat1.mat[i, j] - mat2.mat[i, j];
}
}
return mat3;
}

public static bool operator ==(Matrica mat1, Matrica mat2)


{
for (int i = 0; i < mat1.mat.GetLength(0); i++)
{
for (int j = 0; j < mat1.mat.GetLength(1); j++)
{
if (mat1.mat[i, j] != mat2.mat[i,j])
{
return false;
}
}
}
return true;
}

public static bool operator !=(Matrica mat1, Matrica mat2)


{
for (int i = 0; i < mat1.mat.GetLength(0); i++)
{
for (int j = 0; j < mat1.mat.GetLength(1); j++)
{
if (mat1.mat[i, j] != mat2.mat[i, j])
{
return true;
}
}
}
return false;
}

public static Matrica operator !(Matrica mat)


{
Matrica mat3 = new Matrica('T', mat.d);
for (int i = 0; i < mat.mat.GetLength(0); i++)
{
for (int j = 0; j < mat.mat.GetLength(1); j++)
{
mat3.mat[i, j] = mat.mat[j, i];
}
}
return mat3;
}
}
}

4) Napraviti klasu kvadratna matrica. Klasa treba da ima atribute dimenziju matrice
(tako da bude
javno svojstvo) i samu matricu. Klasa treba da ima sledeće metode:
parametrizovani/podrazumevani konstrukor, za unos matrice (poziva se u okviru
kontrukotra),
za ispis matrice, oduzimanje dve matrice, za proveru jednakosti dve matrice broja
(da li su
jednake ili su različite), za proveru različitosti(da li su različite ili su
jednake) i množenje matrice
sklarom. Za proveru napraviti sistem menija. Da bi se obavile operacije nad dve
matrice one
moraju da budu istih dimenzija. Tako da u tim slučajevima je potrebno uneti samo
dimenziju
prve matrice. U glavnom programu u okviru petlje (na kraju pitati korisnika da li
želi da ponovi
operaciju) tesitrati rad metoda za oduzimanje matrica i množenje matrice sklarom.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Matrice22
{
class Meni
{
private Meni()
{

public static void Test()


{
char odg;
Matrica rez;
do
{
switch (odg = OsnMeni())
{
case '1':
Console.Write("Unesite dimenziju matrice A:");
uint d = uint.Parse(Console.ReadLine());
Matrica mat1 = new Matrica(d, 'A');
Console.Write("Unesite dimenziju matrice B:");
uint d2 = uint.Parse(Console.ReadLine());
Matrica mat2 = new Matrica(d2, 'B');
if(mat1.d!=mat2.d)
{
Console.WriteLine("Operacija se ne moze izvrsiti jer
matrice nisu istih dimenzija.");
}
else
{
rez = mat1 + mat2;
Console.WriteLine("Ispis matrice A:");
mat1.IspisMatrice();
Console.WriteLine("Ispis matrice B:");
mat2.IspisMatrice();
Console.WriteLine("Ispis matrice C:");
rez.IspisMatrice();
}
Console.ReadKey();
break;
case '2':
Console.Write("Unesite dimenziju matrice A:");
d = uint.Parse(Console.ReadLine());
mat1 = new Matrica(d, 'A');
Console.Write("Unesite dimenziju matrice B:");
d2 = uint.Parse(Console.ReadLine());
mat2 = new Matrica(d2, 'B');
if (mat1.d != mat2.d)
{
Console.WriteLine("Operacija se ne moze izvrsiti jer
matrice nisu istih dimenzija.");
}
else
{
rez = mat1 - mat2;
Console.WriteLine("Ispis matrice A:");
mat1.IspisMatrice();
Console.WriteLine("Ispis matrice B:");
mat2.IspisMatrice();
Console.WriteLine("Ispis matrice C:");
rez.IspisMatrice();
}
Console.ReadKey();
break;
case '3':
Console.Write("Unesite dimenziju matrice A:");
d = uint.Parse(Console.ReadLine());
mat1 = new Matrica(d, 'A');
Console.Write("Unesite dimenziju matrice B:");
d2 = uint.Parse(Console.ReadLine());
mat2 = new Matrica(d2, 'B');
if (mat1.d != mat2.d)
{
Console.WriteLine("Operacija se ne moze izvrsiti jer
matrice nisu istih dimenzija.");
}
else
{
if(mat1==mat2)
{
Console.WriteLine("Matrice su jednake.");
}
else
{
Console.WriteLine("Matrice su razlicite.");
}
}
Console.ReadKey();
break;
case '4':
Console.Write("Unesite dimenziju matrice A:");
d = uint.Parse(Console.ReadLine());
mat1 = new Matrica(d, 'A');
Console.Write("Unesite dimenziju matrice B:");
d2 = uint.Parse(Console.ReadLine());
mat2 = new Matrica(d2, 'B');
if (mat1.d != mat2.d)
{
Console.WriteLine("Operacija se ne moze izvrsiti jer
matrice nisu istih dimenzija.");
}
else
{
if (mat1 != mat2)
{
Console.WriteLine("Matrice nisu jednake...");
}
else
{
Console.WriteLine("Matrice su jedanake...");
}
}
Console.ReadKey();
break;
case '5':
Console.Write("Unesite dimenziju matrice A:");
d = uint.Parse(Console.ReadLine());
mat1 = new Matrica(d, 'A');
Console.Write("Unesite skalar kojim mnozite matricu A:");
int s = int.Parse(Console.ReadLine());
rez = mat1 * s;
Console.WriteLine("Ispis matrice A:");
mat1.IspisMatrice();
Console.WriteLine("Ispis matrice S:");
rez.IspisMatrice();
Console.ReadKey();
break;
}
Console.Clear();
}
while (odg != '6');
}

private static char OsnMeni()


{
Console.WriteLine("\t\t\tProgram za obavljanje osnovnih aritmetičkih
operacija nad matricama");
Console.WriteLine("\t1)Sabiranje");
Console.WriteLine("\t2)Oduzimanje");
Console.WriteLine("\t3)Provera jednakosti dve matrice");
Console.WriteLine("\t4)Provera različitosti dve matrice");
Console.WriteLine("\t5)Mnozenje matrice skalarom");
Console.WriteLine("\t6)Kraj programa");
Console.Write("\tOdabetite opciju:");
char odg = Console.ReadKey().KeyChar;
Console.Clear();
return odg;
}
}
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Matrice22
{
class Matrica
{
public uint d { get; set; }
int[,] mat;
char naziv;

public Matrica(uint d, char naziv)


{
this.d = d;
this.naziv = naziv;
mat = new int[d, d];
UnosMatrice();
}

public Matrica(char naziv,uint d)


{
this.naziv = naziv;
this.d = d;
mat = new int[d, d];
}

public void UnosMatrice()


{
for(int i=0;i<mat.GetLength(0);i++)
{
for(int j=0;j<mat.GetLength(1);j++)
{
Console.Write($"{naziv} [{i+1},{j+1}]:");
mat[i,j]=int.Parse(Console.ReadLine());
}
}
}

public void IspisMatrice()


{
for(int i=0;i<mat.GetLength(0);i++)
{
for(int j=0;j<mat.GetLength(1);j++)
{
Console.Write("{0,5}", mat[i,j]);
}
Console.WriteLine();
}
}

public static Matrica operator +(Matrica mat1,Matrica mat2)


{
Matrica rez = new Matrica('C', mat1.d);
for(int i=0;i<mat1.mat.GetLength(0);i++)
{
for(int j=0;j<mat1.mat.GetLength(1);j++)
{
rez.mat[i, j] = mat1.mat[i, j] + mat2.mat[i, j];
}
}
return rez;
}

public static Matrica operator -(Matrica mat1, Matrica mat2)


{
Matrica rez = new Matrica('C', mat1.d);
for (int i = 0; i < mat1.mat.GetLength(0); i++)
{
for (int j = 0; j < mat1.mat.GetLength(1); j++)
{
rez.mat[i, j] = mat1.mat[i, j] - mat2.mat[i, j];
}
}
return rez;
}

public static Matrica operator *(Matrica mat,int s)


{
Matrica rez = new Matrica('S', mat.d);
for (int i = 0; i < mat.mat.GetLength(0); i++)
{
for (int j = 0; j < mat.mat.GetLength(1); j++)
{
rez.mat[i, j] = s * mat.mat[i, j];
}
}
return rez;
}

public static bool operator ==(Matrica mat1,Matrica mat2)


{
for (int i = 0; i < mat1.mat.GetLength(0); i++)
{
for (int j = 0; j < mat1.mat.GetLength(1); j++)
{
if (mat1.mat[i, j] != mat2.mat[i,j])
{
return false;
}
}
}
return true;
}

public static bool operator !=(Matrica mat1, Matrica mat2)


{
for (int i = 0; i < mat1.mat.GetLength(0); i++)
{
for (int j = 0; j < mat1.mat.GetLength(1); j++)
{
if (mat1.mat[i, j] != mat2.mat[i, j])
{
return true;
}
}
}
return false;
}
}
}

5) Napraviti program tako da klasu jednakostranični trougao nasleđuje klasa


pravilni šestougao a
klasu pravilni šestougao nasleđuje klasa šestostrana prizma. U klasama
jednakostranični trougao
i pravilni šestougao realizovati metode za računanje obima i površine tako da u
izvedenoj klasi
istoimene metode bazne klase budu preopterećene. U klasi šestostrana prizma treba
realizovati
metode za računanje površine (ova metoda treba da bude redefinisana u odnosu na
metodu u
osnovnoj klasi) i metodu za računanje zapremine. U glavnom programu u okviru petlje
(na kraju
pitati korisnika da li želi da ponovi operaciju) testirati metode za računanje
površine i zapremine
šestostrane prizme.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Zadatak5Iz
{
class Program
{
static void Main(string[] args)
{
try
{
Console.Write("Unesi stranicu baze:");
int a=int.Parse(Console.ReadLine());
Console.Write("Unesi visinu:");
int H = int.Parse(Console.ReadLine());
Prizma p = new Prizma(a, H);
if (a <= 0 || H <= 0)
throw new Exception("Stranice ne smeju biti negativne");
Console.WriteLine($"Povrsina:{p.Povrsina():0.00}");
Console.WriteLine($"Zapremina:{p.Zapremina():0.00}");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}

class JedTrougao
{
protected int a;

public JedTrougao(int a)
{
this.a = a;
}

public virtual double Povrsina()


{
return Math.Pow(a, 2) * Math.Sqrt(3) / 4;
}

public virtual double Obim()


{
return 3 * a;
}
}

class Sestougao:JedTrougao
{
public Sestougao(int a) : base(a) { }

public override double Povrsina()


{
return 6*base.Povrsina();
}

public override double Obim()


{
return 6 * a;
}
}

class Prizma : Sestougao


{
int H;

public Prizma(int a, int H) : base(a)


{
this.H = H;
}

public override double Povrsina()


{
return 2 * base.Povrsina() + Omotac();
}

public double Omotac()


{
return Obim() * H;
}

public double Zapremina()


{
return base.Povrsina() * H;
}
}
}

6) Napraviti program koji sadrži apstraktnu klasu geometrijska figura. Ova klasa
sadrži dve
apstraktne metode za računanje obima i površine geometrijske figure. Ovu klasu
treba da
nasledi klasa romboid koja sadrži atribute dve stranice i ugao među stranicama.
Klasu romboid
treba da nasledi klasa kvadrat u okviru koje treba da se redefinišu metode za
računanje obima i
površine kvadrata. U glavnom programu u okviru petlje (na kraju pitati korisnika da
li želi da
ponovi operaciju)testirati metode za računanje obima i površine kvadrata.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ApstraktneKlaseIz1
{
class Program
{
static void Main(string[] args)
{
try
{
Console.Write(Unesite stranicu a);
double a = double.Parse(Console.ReadLine());
Kvadrat k = new Kvadrat(a);
if (a = 0)
throw new Exception(Stranica a ne sme biti negativna);
Console.WriteLine($Povrsina{k.Povrsina()});
Console.WriteLine($Obim{k.Obim()});
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}

abstract class GeometrijskaFigura


{
abstract public double Obim();
abstract public double Povrsina();
}

class Romboid GeometrijskaFigura


{
protected double a, b;
double alfa;

public Romboid(double a, double b, double alfa)


{
this.a = a;
this.b = b;
this.alfa = Konverzija(alfa);
}

private double Konverzija(double alfa)


{
return (Math.PI 180) alfa;
}

public override double Obim()


{
return 2 a + 2 b;
}

public override double Povrsina()


{
return a b Math.Sin(alfa);
}
}

class Kvadrat Romboid


{
public Kvadrat(double a) base(a, a, 90) { }

public override double Obim()


{
return 4 a;
}

public override double Povrsina()


{
return a a;
}
}
}

7) Napraviti program koji sadrži interfejs geometrijska figura. Ovaj interfejs


sadrži dve metode za
računanje obima i površine geometrijske figure. Ovaj interfejs treba da nasledi
klasa trougao.
Klasu trougao treba da nasledi klasa trostrana prizma. U okviru ove klase treba
realizovati
metode za računanje površine (ova metoda treba da bude redefinisana u odnosu na
metodu u
osnovnoj klasi) i metodu za računanje zapremine. U glavnom programu u okviru petlje
(na kraju
pitati korisnika da li želi da ponovi operaciju) testirati metode za računanje
površine i zapremine
trostrane prizme.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace InterfejsIz1
{
class Program
{
static void Main(string[] args)
{
try
{
Console.Write("Unesite stranicu prizme:");
double a = double.Parse(Console.ReadLine());
Console.Write("Unesite visinu prizme:");
double H = double.Parse(Console.ReadLine());
Prizma p = new Prizma(a, H);
if (a <= 0 || H <= 0)
throw new Exception("Stranica i visina ne smeju biti
negativne!");
Console.WriteLine($"Povrsina:{p.Povrsina():0.00}");
Console.WriteLine($"Zapremina:{p.Zapremina():0.00}");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}

}
}

interface GeometrijskaFigura
{
double Obim();
double Povrsina();
}

class Trougao : GeometrijskaFigura


{
double a, b, c;

public Trougao(double a, double b, double c)


{
this.a = a;
this.b = b;
this.c = c;
}

public double Obim()


{
return a + b + c;
}

public virtual double Povrsina()


{
double s = Obim() / 2;
return Math.Sqrt(s * (s - a) * (s - b) * (s - c));
}
}

class Prizma:Trougao
{
double H;

public Prizma(double a,double H) : base(a, a, a)


{
this.H = H;
}

public override double Povrsina()


{
return 2 * base.Povrsina() + Omotac();
}

public double Omotac()


{
return Obim() * H;
}

public double Zapremina()


{
return base.Povrsina() * H;
}
}
}

8) Napraviti apstraktnu klasu geometrijsko telo koja u sebi sadrži dve apstraktne
metode: povrsina
i zapremina. Napraviti klasu kvadar koja nasleđuje klasu geometrijsko telo.
Napraviti klasu kocka
koja nasleđuje klasu kvadar. Redefinisati metode za izračuvanje površine i
zapremine. U glavnom
programu u okviru petlje (na kraju pitati korisnika da li želi da ponovi operaciju)
testirati metode
za računanje površine i zapremine kocke.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ApstraktneKlaseIz2
{
class Program
{
static void Main(string[] args)
{
try
{
Console.Write("Unesi stranicu kocke a:");
double a = double.Parse(Console.ReadLine());
Kocka k = new Kocka(a);
if (a <= 0)
throw new Exception("Stranica ne sme biti negativna");
Console.WriteLine($"Povrsina:{k.Povrsina()}");
Console.WriteLine($"Zapremina:{k.Zapremina()}");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}

abstract class GeometrijskaFigura


{
abstract public double Povrsina();
abstract public double Zapremina();
}

class Kvadar : GeometrijskaFigura


{
protected double a;
double b, c;

public Kvadar(double a,double b,double c)


{
this.a = a;
this.b = b;
this.c = c;
}
public override double Povrsina()
{
return 2 * (a * b + a * c + b * c);
}

public override double Zapremina()


{
return a * b * c;
}
}

class Kocka : Kvadar


{
public Kocka(double a) : base(a, a, a) { }

public override double Povrsina()


{
return 6 * a * a;
}

public override double Zapremina()


{
return a * a * a;
}
}
}

9) Napraviti interfejs geometrijsko telo koji u sebi sadrži deklaraciju dve


funkcije: povrsina i
zapremina. Napraviti klasu krug koji u sebi sadrži metode za izračuvanje obima i
površine kruga.
Napraviti klasu valjak koja nasleđuje klasu krug i interfejs geometrijsko telo.
Redefinisati metodu
za izračuvanje površine. U glavnom programu u okviru petlje (na kraju pitati
korisnika da li želi
da ponovi operaciju) testirati metode za računanje površine i zapremine valjka.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace InterfejsIz2
{
class Program
{
static void Main(string[] args)
{
try
{
Console.Write("Unesite poluprecnik baze valjka:");
double r = double.Parse(Console.ReadLine());
Console.Write("Unesite visinu valjka:");
double H = double.Parse(Console.ReadLine());
Valjak v = new Valjak(r, H);
if (r <= 0 || H <= 0)
throw new Exception("Stranica i visina ne smeju biti
negativne");
Console.WriteLine($"Povrsina:{v.Povrsina():0.00}");
Console.WriteLine($"Zapremina:{v.Zapremina():0.00}");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}

}
}

interface GeometrijskoTelo
{
double Povrsina();
double Zapremina();
}

class Krug
{
double r;

public Krug(double r)
{
this.r = r;
}

public double Obim()


{
return 2 * r * Math.PI;
}

public virtual double Povrsina()


{
return Math.Pow(r, 2) * Math.PI;
}
}

class Valjak : Krug, GeometrijskoTelo


{
double H;

public Valjak(double r,double H) : base(r)


{
this.H = H;
}

public override double Povrsina()


{
return 2 * base.Povrsina() + Omotac();
}

public double Omotac()


{
return base.Obim()*H;
}

public double Zapremina()


{
return base.Povrsina() * H;
}
}
}

You might also like