Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 5

struct mobila{

unsigned int IDnrinventar;


char denumire[50];
char material[50];
unsigned int inaltime;
unsigned int latime;
unsigned int adancime;
unsigned int pret;
unsigned int stoc;

};
void add(mobila *v,int n){
cout << endl<<"Dati ID: ";
cin >> v[n].IDnrinventar;
cout << "Dati denumirea ";
cin >> v[n].denumire;
cout << "Dati materialul: ";
cin >> v[n].material;
cout << "Dati inaltimea; ";
cin>> v[n].inaltime;
cout << "Dati latimea: ";
cin >> v[n].latime;
cout << "Dati adancimea: ";
cin >> v[n].adancime;
cout << "Dati pretul: ";
cin >> v[n].pret;
cout << "Dati stocul : ";
cin >> v[n].stoc;

void update(mobila *v,int n, int id){


for(int i=0;i<=n;i++){
if(v[i].IDnrinventar==id){
cout<<"introduceti pret:";
cin>>v[i].pret;
cout<<"introduceti stoc";
cin>>v[i].stoc;
}
}
}

int comparare1(const void* a, const void* b)


{
mobila p1 = *(mobila*)a;
mobila p2 = *(mobila*)b;

if (p1.pret == p2.pret)
{
return (p1.stoc - p2.stoc);
}
else
return (p1.pret - p2.pret);
}

int main()
{

int n;
mobila * v= new mobila[n];
ifstream fi("text.txt");

if (!fi){ cout<<"eroare";
return -1;}
fi>>n;
for(int i=0;i<n;i++){

fi>>v[i].IDnrinventar>>v[i].denumire>>v[i].material>>v[i].inaltime>>v[i].latime>>v[
i].adancime>>v[i].pret>>v[i].stoc;
cout<<"\nID:"<<v[i].IDnrinventar<<"\nDenumire:"<<v[i].denumire<<"\
nMaterial:"<<v[i].material<<"\nInaltime:"<<v[i].inaltime<<"\
nLatime:"<<v[i].latime<<"\nAdancime:"<<v[i].adancime<<"\nPret:"<<v[i].pret<<"\
nStoc:"<<v[i].stoc<<endl;
}

add(v,n);
cout<<"\nIntregul vector dupa adaugare a un nou element:\n";

for(int i=0;i<=n;i++){

cout<<"\nID:"<<v[i].IDnrinventar<<"\nDenumire:"<<v[i].denumire<<"\
nMaterial:"<<v[i].material<<"\nInaltime:"<<v[i].inaltime<<"\
nLatime:"<<v[i].latime<<"\nAdancime:"<<v[i].adancime<<"\nPret:"<<v[i].pret<<"\
nStoc:"<<v[i].stoc<<endl;
}

int id;
cout<<"introduceti id de modificat:";
cin>>id;
update(v,n,id);

cout<<"\n Vector dupa Update:";

for(int i=0;i<=n;i++){

cout<<"\nID:"<<v[i].IDnrinventar<<"\nDenumire:"<<v[i].denumire<<"\
nMaterial:"<<v[i].material<<"\nInaltime:"<<v[i].inaltime<<"\
nLatime:"<<v[i].latime<<"\nAdancime:"<<v[i].adancime<<"\nPret:"<<v[i].pret<<"\
nStoc:"<<v[i].stoc<<endl;

qsort(v, n+1, sizeof(mobila), comparare1);


cout << endl << "Ordonare dupa pret: ";
for (int i = 0; i <= n; i++)
{
cout<<"\nID:"<<v[i].IDnrinventar<<"\nDenumire:"<<v[i].denumire<<"\
nMaterial:"<<v[i].material<<"\nInaltime:"<<v[i].inaltime<<"\
nLatime:"<<v[i].latime<<"\nAdancime:"<<v[i].adancime<<"\nPret:"<<v[i].pret<<"\
nStoc:"<<v[i].stoc<<endl;
}

cout<<"introduceti numarul de top-uri";

int m;
cin>>m;

cout<<"top"<<m<< "preturi";
for(int i=n;i>n-m;i--){

cout<<"\nID:"<<v[i].IDnrinventar<<"\nDenumire:"<<v[i].denumire<<"\
nMaterial:"<<v[i].material<<"\nInaltime:"<<v[i].inaltime<<"\
nLatime:"<<v[i].latime<<"\nAdancime:"<<v[i].adancime<<"\nPret:"<<v[i].pret<<"\
nStoc:"<<v[i].stoc<<endl;

return 0;
}

//4

int k, i,n,cnt1,cnt2;
int *v;
void init() {
v[k] = 0;
}

bool am_succesor() {
if (v[k] < 2) {
++v[k];
return true;
}
else return false;
}

bool solutie() {
if (k == n - 1) {
cnt1=0;
cnt2=0;
for(int i=0;i<n;i++)
{
if(v[i]==1) cnt1++;
else if (v[i]==2)cnt2++;
}
if(cnt1==cnt2) return true;
else return false;
//return true;
}
else return false;
}

void tipar() {
for (i = 0; i < n; i++) {
if(v[i]==1) cout<<"(";
else cout<<")";
}
cout << endl;
}

bool e_valid() {
if(v[k]==2){
cnt1=0;
cnt2=0;
for(int i=0;i<k;i++){
if(v[i]==1) cnt1++;
else cnt2++;
}
if(cnt1<=cnt2) return false;
}
return true;
}

void back() {
k = 0;
init();
bool AS;
while (k >= 0) {
do {
AS = am_succesor();
}while (AS && !e_valid());
if (AS) {
if (solutie()) tipar();
else if(k<n-1){ //!!
++k;
init();
}
}
else k--;
}
}

int main() {
redo: cout << "Nr Elemente vector: ";
cin >> n;
if(n%2==1) goto redo;
v = new int[n];
back();
return 0;
}

You might also like