Kis Alexandru Lab 7
Kis Alexandru Lab 7
Modificati exemplul 3 astfel incat sa permita obtinerea unui nou punct, avand
coordonatele
obtinute prin adunarea coordonatelor a doua astfel de puncte. Numele noului punct
va fi
rezultat prin concatenarea numelor celor doua puncte. Adaugati si testati o metoda
care
calculeaza distanta de la un punct la un punct la origine.
#include<iostream>
using namespace std;
#include<string.h>
#include<stdio.h>
#include<math.h>
class CPunctText{
private:
int x;
int y;
int lungime_sir;
char *sNume;
public:
//constructor standard
CPunctText();
//constructor initializare
CPunctText(int ix,int iy,char *sText="punct");
//constructor copiere
CPunctText(CPunctText &pct);//constructor copiere
//destructor
~CPunctText();
public:
void Afis()
{
cout<<"\nObiectul are x="<<x;
cout<<"\nObiectul are y="<<y;
cout<<"\nObiectul are sirul="<<sNume<<endl;
}
//constructor
CPunctText::CPunctText()
{
lungime_sir=20;
sNume=new char[lungime_sir];
}
strcpy(sNume,sText);
}
CPunctText::CPunctText(CPunctText &pct)
{
sNume=new char[pct.lungime_sir+1];
x=pct.x;
y=pct.y;
lungime_sir=pct.lungime_sir+1;
strcpy(sNume,pct.sNume);
}
s.x=x+pct.x;
s.y=y+pct.y;
s.lungime_sir=lungime_sir+pct.lungime_sir+1;
s.sNume=new char[s.lungime_sir];
strcpy(s.sNume,sNume);
strcat(s.sNume,pct.sNume);
return s;
}
//destructor
CPunctText::~CPunctText()
{
delete sNume;
}
void main(void)
{
CPunctText cpt1(1,2,"punct1");//apel constructor standard
CPunctText cpt2(cpt1);//apel constructor de copiere
CPunctText cpt3=cpt2;//apel constructor de copiere
CPunctText cpt4(4,5,"punct4");//apel constructor de initializare
CPunctText cpt5=cpt4.Suma(cpt1);
cpt5.Afis();
cout<<"Distanta de la punct la origine este:"<<cpt5.Distanta()<<endl;
}
2.Sa se scrie o aplicatie C/C++ care sa modeleze obiectual un sir de numere reale.
Creati
doua instante ale clasei si afisati valorile unui al 3-lea sir, obtinut prin
scaderea
elementelor corespunzatoare din primele 2 siruri. Daca sirurile au lungimi
diferite, sirul
rezultat va avea lungimea sirului celui mai scurt.
#include<iostream>
using namespace std;
class Sir{
int n;//lungimea sirului
int *v;//un pointer la un sir de numere intregi
public:
//constructor
Sir()
{
n=1;
v=new int[n];
}
Sir(int m)
{
n=m;
v=new int[n];
for(int i=0;i<n;i++)
{
cout<<"v["<<i+1<<"]=";
cin>>v[i];
}
cout<<endl;
}
//constructor de copiere
Sir(Sir &s)
{
n=s.n;
v=new int[n];
for(int i=0;i<n;i++)
v[i]=s.v[i];
}
//destructor
~Sir()
{
delete v;
}
//metoda de afisare
void Afis()
{
for(int i=0;i<n;i++)
cout<<v[i]<<" ";
cout<<endl;
}
//metoda ce returneaza un sir obtinut prin diferenta a doua siruri
Sir Sir_nou(Sir s)
{
Sir sn;
if (n>s.n)
sn.n=s.n;
else
sn.n=n;
sn.v=new int[sn.n];
for(int i=0;i<sn.n;i++)
sn.v[i]=v[i]-s.v[i];
return sn;
}
};
void main(void)
{
int n;
Sir s3=s1.Sir_nou(s2);
cout<<"\nSirul obtinut este: ";
s3.Afis();
}
#include<iostream>
using namespace std;
#include<string.h>
class Student{
char nume[20];
char prenume[20];
int nr_note;
int note[10];
public:
//constructor
Student()
{
strcpy(nume,"");
strcpy(prenume,"");
nr_note=0;
note[0]=0;
}
//metoda mutator ce initializeaza atributele clasei cu date citite de la
tastatura
void Initializare()
{
char num[20],p[20];
for(int i=0;i<nr_note;i++)
if(note[i]<5)
ok=1;
return ok;
}
};
void main(void)
{
Student v[10];
int i,n,max,k,j;
int medii[10];
for(i=0;i<n;i++)
medii[i]=v[i].Medie();
#include<iostream>
using namespace std;
class Punct{
int x;
int y;
int z;
public:
Punct()
{
x=0;
y=0;
z=0;
}
void Initializare()
{
int ix,iy,iz;
cin>>ix;
cin>>iy;
cin>>iz;
x=ix;
y=iy;
z=iz;
}
void Afisare()
{
cout<<"("<<x<<","<<y<<","<<z<<")\n\n";
}
Punct Translatie(int dx,int dy,int dz)
{
Punct p;
p.x=x+dx;
p.y=y+dy;
p.z=z+dz;
return p;
}
//functia de verificare
void Verificare_coliniaritate(Punct p1,Punct p2)
{
if((((x-p1.x)/(p2.x-p1.x))==((y-p1.y)/(p2.y-p1.y)))&&(((x-p1.x)/(p2.x-
p1.x))==((z-p1.z)/(p2.z-p1.z))))
cout<<"\nCele 3 puncte sunt coliniare!!!\n";
else
cout<<"\nCele 3 puncte nu sunt coliniare!!!\n";
}
};
void main(void)
{
int dx,dy,dz;
Punct p1,p3,p2;
cout<<"Dati valorile cu care doriti sa se faca translatia (dx, dy, dz): ";
cin>>dx;
cin>>dy;
cin>>dz;
p2=p1.Translatie(dx,dy,dz);
cout<<"Noul punct va avea coordonatele: ";
p2.Afisare();