Bu Blogda Ara

8 Aralık 2007 Cumartesi

C++ 'ta NYP örneği

Algoritma ödevlerimden soru 6.1 için getirdiğim çözüm nesne yönelimli programlamaya örnek oluşturacağını düşündüm. Programın nesneleri şu şekilde:
Sıkıldığım için uygulamanın algoritmasını çizmedim kusura bakmayın :)

Soru 6.1 de 3 bilinmeyenli 3 denklemin çözümü istenmektedir.Soru Lineer Cebir dersinde gördüğümüz Kramer yöntemiyle çözülebilir.

Cevap 6.1

#include "iostream"
#include "conio.h"

// Dev-C++ Compiler

class ekran //ekran sınıfımız (şablon)
{
public:
void yaz(char *yazi); // ekran sınıfımızada bulunan ve dışarıdan erişilebilen (public) metodlar.
void yaz(double yazi);
void yenisatir();
void bekle();
void temizle();
int oku();
};


int ekran::oku() // fonksiyonların tanımları
{
int n;
std::cin>>n;
return n;
};
void ekran::temizle()
{
system("CLS");
};


void ekran::bekle()
{
getch();
};
void ekran::yenisatir()
{
std::cout<<"\n";
};
void ekran::yaz(char *yazi)
{
std::cout << yazi;
};
void ekran::yaz(double yazi) //OVERLOADING aşırı yükleme ;)
{
std::cout << yazi;
};




class denklem {
private:
int a,b,c,x;
public:
denklem();
void degerata(int d, int e, int f,int x);
int degeroku1();
int degeroku2();
int degeroku3();
int degerokux();
};

denklem::denklem()
{
degerata(1,1,1,0);
};
void denklem::degerata(int d, int e, int f, int g)
{
a=d;
b=e;
c=f;
x=g;
};
int denklem::degeroku1()
{
return a;
};
int denklem::degeroku2()
{
return b;
};
int denklem::degeroku3()
{
return c;
};







int denklem::degerokux()
{
return x;
};
class ds : public denklem
{

public:
ds(void);
denklem d1,d2,d3;
double delta();
double delta1();
double delta2();
double delta3();
double x1();
double x2();
double x3();
void goster(denklem dd);
};
void ds::goster(denklem dd)
{
ekran e1;
e1.yaz(dd.degeroku1());
e1.yaz("x(1)+");
e1.yaz(dd.degeroku2());
e1.yaz("x(2)+");
e1.yaz(dd.degeroku3());
e1.yaz("x(3) = ");
e1.yaz(dd.degerokux());
};
double ds::delta1()
{
ds td1;
td1.d1.degerata(d1.degerokux(),d1.degeroku2(),d1.degeroku3(),d1.degerokux());
td1.d2.degerata(d2.degerokux(),d2.degeroku2(),d2.degeroku3(),d2.degerokux());
td1.d3.degerata(d3.degerokux(),d3.degeroku2(),d3.degeroku3(),d3.degerokux());
return (td1.d1.degeroku1()*td1.d2.degeroku2()*td1.d3.degeroku3()+td1.d1.degeroku2()*td1.d2.degeroku3()*td1.d3.degeroku1()+td1.d2.degeroku1()*td1.d3.degeroku2()*td1.d1.degeroku3())-(td1.d1.degeroku3()*td1.d2.degeroku2()*td1.d3.degeroku1()+td1.d2.degeroku3()*td1.d3.degeroku2()*td1.d1.degeroku1()+td1.d1.degeroku2()*td1.d2.degeroku1()*td1.d3.degeroku3());
};
double ds::delta2()
{
ds td1;
td1.d1.degerata(d1.degeroku1(),d1.degerokux(),d1.degeroku3(),d1.degerokux());
td1.d2.degerata(d2.degeroku1(),d2.degerokux(),d2.degeroku3(),d2.degerokux());
td1.d3.degerata(d3.degeroku1(),d3.degerokux(),d3.degeroku3(),d3.degerokux());
return (td1.d1.degeroku1()*td1.d2.degeroku2()*td1.d3.degeroku3()+td1.d1.degeroku2()*td1.d2.degeroku3()*td1.d3.degeroku1()+td1.d2.degeroku1()*td1.d3.degeroku2()*td1.d1.degeroku3())-(td1.d1.degeroku3()*td1.d2.degeroku2()*td1.d3.degeroku1()+td1.d2.degeroku3()*td1.d3.degeroku2()*td1.d1.degeroku1()+td1.d1.degeroku2()*td1.d2.degeroku1()*td1.d3.degeroku3());
};
double ds::delta3()
{
ds td1;
td1.d1.degerata(d1.degeroku1(),d1.degeroku2(),d1.degerokux(),d1.degerokux());
td1.d2.degerata(d2.degeroku1(),d2.degeroku2(),d2.degerokux(),d2.degerokux());
td1.d3.degerata(d3.degeroku1(),d3.degeroku2(),d3.degerokux(),d3.degerokux());
return (td1.d1.degeroku1()*td1.d2.degeroku2()*td1.d3.degeroku3()+td1.d1.degeroku2()*td1.d2.degeroku3()*td1.d3.degeroku1()+td1.d2.degeroku1()*td1.d3.degeroku2()*td1.d1.degeroku3())-(td1.d1.degeroku3()*td1.d2.degeroku2()*td1.d3.degeroku1()+td1.d2.degeroku3()*td1.d3.degeroku2()*td1.d1.degeroku1()+td1.d1.degeroku2()*td1.d2.degeroku1()*td1.d3.degeroku3());
};
double ds::x1()
{
return (double)delta1()/delta();
};
double ds::x2()
{
return (double)delta2()/delta();
};
double ds::x3()
{
return (double)delta3()/delta();
};
double ds::delta()
{
return (d1.degeroku1()*d2.degeroku2()*d3.degeroku3()+d1.degeroku2()*d2.degeroku3()*d3.degeroku1()+d2.degeroku1()*d3.degeroku2()*d1.degeroku3())-(d1.degeroku3()*d2.degeroku2()*d3.degeroku1()+d2.degeroku3()*d3.degeroku2()*d1.degeroku1()+d1.degeroku2()*d2.degeroku1()*d3.degeroku3());
};
ds::ds(void)
{
};
int main(int argc, char* argv[])
{
ekran e;
ds ls;
int a1,a2,a3,b1,b2,b3,c1,c2,c3,x1,x2,x3;
e.yaz("a(11)x(1)+a(12)x(2)+a(13)x(3)=b(1)");
e.yenisatir();
e.yaz("a(21)x(1)+a(22)x(2)+a(23)x(3)=b(2)");
e.yenisatir();
e.yaz("a(31)x(1)+a(32)x(2)+a(33)x(3)=b(3)");
e.yenisatir();
e.yaz("Formatinda bir denklem sisteminin degerlerini girelim...\n");
e.yaz("a(11):");
a1=e.oku();
e.yaz("a(12):");
b1=e.oku();
e.yaz("a(13):");
c1=e.oku();
e.yaz("b(1):");
x1=e.oku();
ls.d1.degerata(a1,b1,c1,x1);
e.yaz("a(21):");
a2=e.oku();
e.yaz("a(22):");
b2=e.oku();
e.yaz("a(23):");
c2=e.oku();
e.yaz("b(2):");
x2=e.oku();
ls.d2.degerata(a2,b2,c2,x2);
e.yaz("a(31):");
a3=e.oku();
e.yaz("a(32):");
b3=e.oku();
e.yaz("a(33):");
c3=e.oku();
e.yaz("b(3):");
x3=e.oku();
ls.d3.degerata(a3,b3,c3,x3);
ls.goster(ls.d1);
e.yenisatir();
ls.goster(ls.d2);
e.yenisatir();
ls.goster(ls.d3);
e.yenisatir();
e.yenisatir();
e.yaz("Delta = ");
e.yaz(ls.delta());
e.yenisatir();
e.yaz("Delta1 = ");
e.yaz(ls.delta1());
e.yenisatir();
e.yaz("Delta2 = ");
e.yaz(ls.delta2());
e.yenisatir();
e.yaz("Delta3 = ");
e.yaz(ls.delta3());
e.yenisatir();
e.yenisatir();
if (ls.delta()==0)
{ if (ls.delta1()==0)
{ e.yaz("Denklemin Sonsuz Cozumu vardir..!");
e.bekle();
return 0;

} else { e.yaz("Denklemin Cozum kumesi yoktur..!");
e.bekle(); return 0;
} }
e.yenisatir();
e.yaz("x1 = ");
e.yaz(ls.x1());
e.yenisatir();
e.yaz("x2 = ");
e.yaz(ls.x2());
e.yenisatir();
e.yaz("x3 = ");
e.yaz(ls.x3());
e.bekle();
return 0;
}

Hiç yorum yok: