Inregistrare • Cautare • FAQ • Membri • Grupuri • Autentificare
lab 7

 
Raspunde la subiect    Pagina de start a forumului MiniZone » programming Subiectul anterior
Subiectul urmator

lab 7
Autor Mesaj
Zappu
Administrator
Administrator
Zappu

Data inscrierii: 10/Noi/2007
Mesaje: 718
Localitate: Cluj

Mesaj lab 7 Raspunde cu citat (quote)
/*1.Modificaţi exemplul 3 astfel încât să permită obtinerea unui nou punct, avand coordonatele
obtinute prin adunarea coordonatelor a două astfel de puncte. Numele noului punct va fi
rezultat prin concatenarea numelor celor două puncte. Adaugati si testati o metoda care
calculeaza distanta de la un punct la origine.*/


#include <iostream>
using namespace std;
#include <string.h>
#include <stdio.h>
class CPunctText
{
public:
//constructor standard
CPunctText();
//constructor de initializare
CPunctText(int ix, int iy, char *sText="Punct");
//constructor de copiere
CPunctText(CPunctText &pct);
//destructor:
~CPunctText();
public:
CPunctText Adunare(CPunctText &a);
int Get_x() { return x; }
int Get_y() { return y; }
char *Get_sNume() { return sNume; }
void Afis()
{
cout << "\nObiectul are x= " <<x;
cout << "\nObiectul are y= " <<y;
cout << "\nObiectul are sirul = " <<sNume;
}//afis
void Afis(CPunctText a)
{
cout << "\nObiectul are x= " <<a.Get_x();
cout << "\nObiectul are y= " <<a.Get_y();
cout << "\nObiectul are sirul = " <<a.Get_sNume();
}//afis
private:
int x;
int y;
int lungime_sir;
char *sNume;
};
CPunctText::CPunctText()
{
cout << "\n constructor standard";
lungime_sir = 20;
sNume=new char[lungime_sir];
}
CPunctText::CPunctText(int ix, int iy, char *sText)
{
cout << "\n constructor de initializare";
lungime_sir = strlen(sText)+1;
sNume=new char[lungime_sir];
x=ix;
y=iy;
strcpy(sNume, sText);
}
CPunctText::CPunctText(CPunctText &pct)
{
cout << "\n constructor de copiere";
sNume=new char[pct.lungime_sir];
x=pct.x;
y=pct.y;
lungime_sir = pct.lungime_sir;
strcpy(sNume,pct.sNume);
}
CPunctText::~CPunctText()
{
cout << "\n destructor";
delete sNume;
}
CPunctText CPunctText::Adunare(CPunctText &a)
{
CPunctText b(x+a.Get_x(),y+a.Get_y(),strstr(sNume,a.Get_sNume()));
return b;
}
int main(void)
{
CPunctText cpt1(1,2,(char *)"Punct1");
//apel constructor de initializare
CPunctText cpt2(cpt1); //apel constructor de copiere
//CPunctText cpt3=cpt2; //apel constructor de copiere
CPunctText cpt3(4,5); //apel constructor de initializare
cpt1.Afis(&cpt1.Adunare(cpt3));
return 0;
}


/*2.Să se scrie o aplicaţie C/C++ care sa modeleze obiectual un şir de numere reale. Creaţi două
instanţe ale clasei şi afisati valorile unui al 3-lea sir, obtinute prin scaderea elementelor
corespunzatoare din primele 2 siruri. Daca sirurile au lungimi diferite, sirul rezultat va avea
lungimea sirului cel mai scurt.*/

#include<iostream>
using namespace std;
class Sir_Real
{
float *sir;
int dimensiune;
public:
Sir_Real(int dim,float *a)
{
sir=new float[dim];
dimensiune=dim;
for(int i=0;i<dim;i++)
{
sir[i]=a[i];
}
}
Sir_Real(Sir_Real &a)
{

sir=new float[a.Get_dim()];
dimensiune=a.Get_dim();
for(int i=0;i<a.Get_dim();i++)
{
sir[i]=a.Get_sir()[i];
}
}
~Sir_Real()
{
delete sir;
}
int Get_dim() { return dimensiune; }
float *Get_sir() { return sir; }
void Afis_Dif(Sir_Real a)
{
int n;
if(dimensiune<=a.Get_dim()) n=dimensiune;
else n=a.Get_dim();
cout << "Sirul diferenta este: ";
//float *tmp=b.Get_sir();//new float[n]];

for(int i=0;i<n;i++)
{
cout << sir[i]-a.Get_sir()[i];
if(i<n-1) cout << ", ";
else cout << endl;
}
}
};
int main(void)
{
float sir_a[]={1,2,3,4,5,6,7,8,9,10};
float sir_b[]={5,6,7,8};
Sir_Real a(10,sir_a),b(4,sir_b);
a.Afis_Dif(b);
}


/*3.Să se scrie o aplicaţie în care se modelează clasa Student cu nume, prenume şi notele din
sesiunea din iarnă. Să se afişeze numele studenţilor din grupă care au restante si apoi numele
primilor 3 studenti din grupa în ordinea mediilor.*/



#include<stdio.h>
#include<stdlib.h>
#include<string.h>
class Student
{
char *nume;
char *prenume;
int note[7];
public:
Student(Student &s);
void Set(char name[],char prenome[],int notes[7]);
void Afis_Student();
Student() { }
~Student();
float Get_media();
char *Get_nume() { return nume; }
char *Get_prenume() { return prenume; }
int *Get_note() { return note; }
};
Student::Student(Student &s)
{
nume=new char[strlen(s.Get_nume())];
prenume=new char[strlen(s.Get_prenume())];
strcpy(nume,s.Get_nume());
strcpy(prenume,s.Get_prenume());
for(int i=0;i<7;i++)
{
note[i]=s.Get_note()[i];
}
}
void Student::Set(char name[],char prenome[],int notes[7])
{
nume=new char[strlen(name)];
prenume=new char[strlen(prenome)];
strcpy(nume,name);
strcpy(prenume,prenome);
for(int i=0;i<7;i++)
{
note[i]=notes[i];
}
}
void Student::Afis_Student()
{
printf("Nume:%s\nPrenume:%s\nMedia:%.2f\n",nume,prenume,this->Get_media());
}
Student::~Student()
{
delete nume;
delete prenume;
}
float Student::Get_media()
{
float media=0;
for(int i=0;i<7;i++)
{
media+=note[i];
}
media/=7;
return media;
}
int comparare(Student *v1,Student *v2);
Student *Read_studenti(int n);
void Afis_top3(Student *stud);
int main(void)
{
int n;
printf("Introduceti numarul de studenti din grupa:");
scanf("%d",&n);
Student *stud=Read_studenti(n);
qsort( (Student *)stud, n, sizeof( Student ), (int (*) (const void *, const void *)) comparare );
printf("Podiumul din grupa 1 dupa sesiunea din toamna este:\n");
return 0;
Afis_top3(stud);
}
Student *Read_studenti(int n)
{
Student *stud=new Student[n];
char tmp_nume[256];
char tmp_prenume[256];
int tmp_note[7];
for(int i=0;i<n;i++)
{
printf("Introduceti datele aferente primului student\n");
printf("Introduceti numele:");scanf("%s",tmp_nume);
printf("Introduceti prenumele:");scanf("%s",tmp_prenume);
printf("Acum introduceti mai jos notele conform numarului din catalog:\n");
for(int j=0;i<7;j++)
{
printf("Nota %d: ",j+1);scanf("%d",&tmp_note[j]);
}
stud[i].Set(tmp_nume,tmp_prenume,tmp_note);
}
return stud;
}
void Afis_top3(Student *stud)
{
char *loc;
for(int i=0;i<3;i++)
{
loc=new char[i+2];
switch(i)
{
case 0: loc[0]='I';loc[1]='\0';break;
case 1: loc[0]='I';loc[1]='I';loc[2]='\0';break;
case 2: loc[0]='I';loc[1]='I';loc[2]='I';loc[3]='\0';break;
default: delete loc;
}
printf("\n\t\t\t\tLocul %d\n",i+1);
stud[i].Afis_Student();
delete loc;
}
}
int comparare(Student *v1,Student *v2)
{
if(v1->Get_media()<v2->Get_media())
return 1;
if(v1->Get_media()==v2->Get_media())
return 0;
if(v1->Get_media()>v2->Get_media())
return -1;

return ((v1->Get_media()-v2->Get_media()));
}






/*4.Să se scrie o aplicaţie C/C++ în care se citeşte de la tastatură un punct prin coordonatele x,y,z.
Să se scrie o metodă prin care să se facă translaţia punctului cu o anumită distanţă pe fiecare
dintre cele trei axe. Să se verifice dacă dreapta care uneşte debutantul punct şi cel rezultat în urma
translaţiei trec printr-un al treilea punct dat de la consolă.*/



#include<iostream>
using namespace std;
class Punct
{
int x;
int y;
int z;
public:
int Get_x() { return x; }
int Get_y() { return y; }
int Get_z() { return z; }
Punct(int ix,int iy,int iz)
{
x=ix;
y=iy;
z=iz;
}
Punct() {}
void Translatie(int n)
{
x+=n;
y+=n;
z+=n;
}
int Verificare(Punct pct,int ix,int iy,int iz)
{
if(((float)(ix-x)/(float)(pct.Get_x()-x)==((float)(iy-y)/(float)(pct.Get_y()-y)))&&((float)(iy-y)/(float)(pct.Get_y()-y)==((float)(iz-z)/(float)(pct.Get_z()-z))))
return 1;
else return 0;
}

};
int main(void)
{
int x,y,z,n;
cout << "X=";cin >> x;
cout << "Y=";cin >> y;
cout << "Z=";cin >> z;
Punct a(x,y,z);
cout << "Introduceti un numar cu care sa se faca translatia:";cin >> n;
Punct b=a;
b.Translatie(n);
cout << "Introduceti coordonatele unui punct:" << endl;
cout << "X=";cin >> x;
cout << "Y=";cin >> y;
cout << "Z=";cin >> z;
if(a.Verificare(b,x,y,z))
cout << "Punctul de coordonate (" << x << "," << y << "," << z << ") se afla pe dreapta ab" << endl;
else
cout << "Punctul de coordonate (" << x << "," << y << "," << z << ") nu se afla pe dreapta ab" << endl;
return 0;
}

_________________
Detinator MiniZone
www.zappdivercity.blogspot.com
09/04/2014 09:07 Vezi profilul utilizatorului Trimite mesaj privat
Afiseaza mesajele pentru a le previzualiza:    

Raspunde la subiect    Pagina de start a forumului MiniZone » programming Ora este GMT + 3 ore
Pagina 1 din 1

 
Mergi direct la: 
Nu puteti crea un subiect nou in acest forum
Nu puteti raspunde in subiectele acestui forum
Nu puteti modifica mesajele proprii din acest forum
Nu puteti sterge mesajele proprii din acest forum
Nu puteti vota in chestionarele din acest forum


Powered by phpBB © 2001, 2005 phpBB Group
Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro