Sunteți pe pagina 1din 7

1.Se citeste de la tastatura un numar natural n (0n 10 )si apoi n valori natural(a1,a2,..an) .

Afisati toate posibilitatile de a intercalaintre a1,a2,,an operatia +respectiv -astfel incat evaluand expresia de la stanga la dreapta la fiecare pas , rezultatul sa fie pozitiv. Solutia se va afisa pe randuri diferite .
#include<iostream.h> int st[100],n,k,v[50]; int tipar(int p) { int i,s=0; cout<<v[i]<< ; for(i=2;i<=n;i++) if(st[i-1]==1) cout<<+<<v[i]; else cout<<-<<v[i]; cout<<=; s=v[1]; for(i=2;i<=n;i++) if(st[i-1]==1) s=s+v[i]; else s=s-v[i]; cout<<s; cout<<endl; } int valid (int p) { int ok=1,i; for(i=1;i<p;i++) if(st[p]<=st[p-1]) ok=0; return ok; } Int solutie(int p) Int i , s ; If(p!=n-1)

return 0; s=v[1]; for(i=2;i<=n;i++) if(st[i-1]==1) s=s+v[i]; else s=s-v[i]; if(s>0) return 1; else return 0; } Int back (int k) { int k=1; st[k]=0; while(k>0) { if(st[k]<n) st[k]++; if(p<=n-1) {if(solutie(k)) tipar(k); else {k++; st[k]=0;} else p--; } } Int main() { int i; cout<<n=;cin>>n; for(i=1;i<n;i++) cout<<v[<<i<<]=;cin>>v[i]; back(n-1); return 0 ; }

2.Intr-un magazin se gasesc n produse numerotate de la 1 la n. In cumparator care dispune de o suma de bani S,doreste sa cheltuiasca toti banii care ii are,dar fara a cumpara obiecte de acelasi fel.Cunoscand preturile ,scrieti un programcare afiseaza posibilitatile pentru a cheltui banii .
# include<iostream.h> # include<conio.h> # include<stdio.h> Int st[50],pret [25],n,S; Int initializare () { int i; cout<<\n nr produselor n=;cin>>n; cout<<\n suma disponibila S=;cin>>S; cout<<\n Introduceti preturile; for(i=1;i<=n;i++) {cout<<pretul produsului<<i<<: ;cin>>pret[1];} for(i=1;i<25;i++) st[i]=0; } Int val_tot ( int p ) { int v,k; for(v=0;k=1;k<=p;k++) v=pret[st[k]]; return v; } Void tipar (int p) { int j; If(val_tot(p)==S) { for(j=1;j<=p;j++) cout<<st[j]; cout<<endl; } } Int valid( int p ) { int i,ok=1; If(val_tot(p)>S) Ok=0; return ok; }

Int back (int k) { int k=1; st[k]=0; while(k>0) { if(st[k]<n) st[k]++; if(p<=n-1) {if(solutie(k)) tipar(k); else {k++; st[k]=st[k-1];} else p--; } } Int back (int k) { int k=1; st[k]=0; while(k>0) { if(st[k]<n) st[k]++; if(p<=n-1) {if(solutie(k)) tipar(k); else {k++; st[k]=0;} else p--; } } int main() { initializare(); back(); cout<<\n S-au scris solutiile; return 0; }

3.Pentru echipa de baschet al liceului Gh.Lazardin Sibiu sa disponibilizat un loc prin transferul la alt liceu al unuia dintre elevi.Antrenorul echipei are misiunea de a gasi inlocuitorul stut fiind ca baschetbalistii trebuie sa fie inalti,el realizeazapentru inceput o preselectie bazata pe acest criteriu.In acest scop el cere informaticiuanului sa ii puna la dispozitie o lista cu toti elevii(fete si baieti),echipa fiind mixta,care au o inaltime mai mare sau egala cu Hmin data. Informaticianul ca apela la calculator si va scrie un program bazat pe un algoritm divide et impera care preia inaltimea tuturor celor n eleviai liceului si afiseaza lista ceruta. Va invitam sa concepeti un astfel de program.
# include<iostream.h> Int n,i; Typedef struct { char nume[20]; Int inaltime; } elev; elev x[50]; Void citire() { int i; for(i=0;i<n;i++) {cin>>x[i].nume; Cin>>x[i].inaltime;} } Void ordonare () { int i,j; elev aux; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(x[i].inaltime>x[j].inaltime) { aux=x[i]; x[i]=x[j]; x[j]=aux; } } Void afisare () { int i; for(i=0;i<n;i++) {cout<<x[i].nume<< ;

cout<<x[i].inaltime<< ;} } Int caut_bin(int li,int ls) { int mij=(li+ls)/2; if (li>ls) return 1; {if (x[mij].inaltime==a ) return mij; else if (x[mij].inaltime>a) return caut_bin(mij+1,ls,a); else return caut_bin (li,mij-1,ls);} } Int main() { int a,i,k,Hmin; cout<<n=;cin>>n; citire(); afisare(); ordonare(); cout<<Hmin=;cin>>Hmin; cout<<k=;cin>>k; for(i=0;i<=k;i++) {cout<<x[i].nume<< ; cout<<x[i].inaltime<< ; cout<<endl; } return 0; }

S-ar putea să vă placă și