Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
Clasa
definete
variabilele private nume (ir de caractere), echipa (ir de caractere), varsta
(int), record (int),
nr_pole_position (int). Ca membri publici, clasa conine metode accesor i mutator
distincte
pentru fiecare din atributele clasei.
In funcia main, s se creeze 3 instane distincte ale clasei PilotF1 i s se
foloseasc metodele
mutator pentru a iniializa datele din fiecare obiect cu informaia corespunztoare
citit de la
tastatur. Folosind metodele accesor, s se afieze toate datele pilotului cu cel
mai bun record.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
class PilotF1
{
char *nume;
char *echipa;
int varsta;
int record;
int nr_pole_position;
public:
PilotF1() {}
PilotF1(PilotF1& pilot);
void write_nume(char n[]);
void write_echipa(char e[]);
void write_varsta(int v);
void write_record(int r);
void write_nr_pole_position(int p);
const char *get_nume();
const char *get_echipa();
int get_varsta();
int get_record();
int get_nr_pole_position();
};
void Afisare(PilotF1 *pilot);
int main(void)
{
int nr_piloti,best[2]={0,0};//best[0] reprezinta valoarea recordului mare,
best[1] reprezinta i-ul pilotului;
char bufc[256];
int bufi;
printf("Introduceti cati piloti doriti sa
introduceti:");scanf("%d",&nr_piloti);
PilotF1 *p=new PilotF1[nr_piloti];
for(int i=0;i<nr_piloti;i++)//scriere date
{
printf("Introduceti datele pentru pilotul nr.%d:\n",i+1);
printf("Nume:");scanf("%s",bufc);
p[i].write_nume(bufc);
printf("Echipa:");scanf("%s",bufc);
p[i].write_echipa(bufc);
printf("Varsta:");scanf("%d",&bufi);
p[i].write_varsta(bufi);
printf("Record:");scanf("%d",&bufi);
p[i].write_record(bufi);
printf("Nr Pole Position:");scanf("%d",&bufi);
p[i].write_nr_pole_position(bufi);
}
for(int i=0;i<nr_piloti;i++)//comparare record
{
if(best[0]<p[i].get_record())
{
best[0]=p[i].get_record();
best[1]=i;
}
}
Afisare(&p[best[1]]);//afisare best
return 0;
}
PilotF1::PilotF1(PilotF1& pilot)
{
nume=new char[(strlen(pilot.nume))];
echipa=new char[(strlen(pilot.echipa))];
strcpy(nume,pilot.nume);
strcpy(echipa,pilot.echipa);
varsta=pilot.varsta;
record=pilot.record;
nr_pole_position=pilot.nr_pole_position;
}
void PilotF1::write_nume(char n[])
{
if(nume!=NULL) delete nume;
nume=new char[strlen(n)+1];
strcpy(nume,n);
}
void PilotF1::write_echipa(char e[])
{
if(echipa!=NULL) delete echipa;
echipa=new char[strlen(e)+1];
strcpy(echipa,e);
}
void PilotF1::write_varsta(int v)
{
varsta=v;
}
void PilotF1::write_record(int r)
{
record=r;
}
void PilotF1::write_nr_pole_position(int p)
{
nr_pole_position=p;
}
const char *PilotF1::get_nume()
{
return nume;
}
const char *PilotF1::get_echipa()
{
return echipa;
}
int PilotF1::get_varsta()
{
return varsta;
}
int PilotF1::get_record()
{
return record;
}
int PilotF1::get_nr_pole_position()
{
return nr_pole_position;
}
void Afisare(PilotF1 *pilot)
{
printf("Pilotul %s apartinand echipei %s avand varsta %d de ani cu un numar
de %d pole positionuri a obtinut un record de %d",pilot->get_nume(),pilot-
>get_echipa(),pilot->get_varsta(),pilot->get_nr_pole_position(),pilot-
>get_record());
}
#include <iostream>
using namespace std;
class Test2
{
int x;
public:
Test2()
{
cout<<"\nApel constructor explicit vid.";
}
void write_x(int y) { x=y; }
};
int main(void)
{
Test2 ob1;
int a;
cout<<"\nIntroduceti valoarea variabilei de tip \"int\" din clasa: ";
cin>>a;
ob1.write_x(a);
return 0;
}
class Matrix
{
int matrix[10][10],dim1,dim2;
public:
Matrix()
{
int i,j;
cout<<"Introduceti dimensiunile matricii:";
cin>>dim1>>dim2;
cout<<"Introduceti elementele matricii:"<<endl;
for(i=0;i<dim1;i++)
{
for(j=0;j<dim2;j++)
{
cout<<"\nmatrix["<<i<<"]["<<j<<"]=";
cin>>matrix[i][j];
}
}
}
void displayMatrix()
{
int i,j;
cout<<"Elementele matricii sunt: \n";
for(i=0;i<dim1;i++)
{
cout<<"\n";
for(j=0;j<dim2;j++)
cout<<returnElement(i,j)<<" ";
}
cout<<"\n";
}
void displayColumn(int col);
void displayColoanaPrincipala();
void displayElementeDeSubDiagonalaPrincipala();
void modificaMatrice(int n);
private:
int returnElement(int row, int column);
};
void Matrix::modificaMatrice(int n)
{
int i,j;
for(i=0;i<dim1;i++)
{
for(j=0;j<dim2;j++)
{
if(matrix[i][j]>n)matrix[i][j]=0;
else matrix[i][j]=1;
}
}
displayMatrix();
}
void Matrix::displayElementeDeSubDiagonalaPrincipala()
{
int i,j;
for(i=0;i<dim1;i++)
{
for(j=0;j<dim2;j++)
{
if(i>j)cout<<returnElement(i,j)<<" ";
}
}
}
void Matrix::displayColoanaPrincipala()
{
int i;
if(dim1==dim2)
{
for(i=0;i<dim1;i++)
{
cout<<returnElement(i,i)<<" ";
}
}
}
void main(void)
{
Matrix m1;
int c;
m1.displayMatrix();
cout<<"\nIntroduceti un numar pentru o coloana a carei elemente
vor fi afisate: ";
cin>>c;
m1.displayColumn(c);
cout<<"\nElementele de pe diagonala principala sunt: ";
m1.displayColoanaPrincipala();
cout<<"\nElementele de sub diagonala principala sunt: ";
m1.displayElementeDeSubDiagonalaPrincipala();
cout<<"\nIntroduceti valoarea limita: ";
cin>>c;
m1.modificaMatrice(c);
}
4.S se scrie o clas care are ca variabil privat un cmp de tip dat, definit
ntr-o structur
extern clasei (zi int, luna int, an - int). Clasa conine metode mutator i
accesor (publice)
pentru informaia privat. In clas se mai afl doua metode publice care:
- testeaz validitatea datei stocate;
- scrie ntr-un fiier toate datele din anul curent care preced (cronologic) data
stocat n
clas;
In metoda main, dup instanierea clasei i citirea de la tastatur a componentelor
unei date, s
se apeleze metodele membre i apoi s se verifice rezultatele obinute.
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct data
{
int zi;
int luna;
int an;
};
class Calendar
{
data calend;
public:
void write_data(data cal)
{
calend.zi=cal.zi;
calend.luna=cal.luna;
calend.an=cal.an;
}
data get_data()
{
return calend;
}
int validate(data cal)
{
if((cal.zi>=1&&cal.zi<=31)&&(cal.luna>=1&&cal.luna<=12)&&(cal.an>=1&&cal.an<=100000
)) return 1;
else return 0;
}
void write_file(const char *calea)
{
FILE *f;
if(!(f=fopen(calea,"w")))
{
printf("Eroare la crearea fisierului\n");
return;
}
for(int i=calend.luna;i<=12;i++)
{
for(int j=calend.zi;j<=31;j++)
{
fprintf(f,"%d.%d.%d\n",j,i,calend.an);
}
}
printf("Datele au fost scrise cu success!\n");
fclose(f);
}
};
int main(void)
{
Calendar cal;
data tmp;
printf("Introduceti o data in formatul dd/zz/aaaa: ");scanf("%d/%d/
%d",&tmp.zi,&tmp.luna,&tmp.an);
cal.write_data(tmp);
if(cal.validate(cal.get_data())) cal.write_file("txt.txt");
else printf("Data nu are formatul corect. Datele nu au fost scrise in
fisier.\n");
printf("Data scrisa in clasa este: %d/%d/
%d",cal.get_data().zi,cal.get_data().luna,cal.get_data().an);
return 0;
}