Ajutor la problema asta va rog!!

Se citesc de la tastatura S, o sumă de bani disponibilă de 4 cifre (s<10000), n, numărul de produse (n<8) apoi cele

n preţuri ale unor produse p1,p2, ....pn şi cantităţile în care sunt disponibile c1,c2, ....cn.

a. Să se afişeze pe ecran cu un mesaj corespunzător

a1.Lista produselor și prețurile lor

a2.Lista produselor ordonate după preț

a3.Daca primele 4 produse care pot fi cumpărate cu suma dată c.

a.4.Cele mai ieftine produse şi numărul lor

b.Să se scrie în fişierul tema5.out: Lista produselor în ordinea descrescătoare a cantităţilor​


Răspuns :

#include <iostream>

#include <fstream>

using namespace std;

ofstream fout("tema5.out");

int S, n;

struct Produs{

   int pret, cantitate;

}x[8];

int main()

{

   cout << "Suma = "; cin >> S;

   cout << "Nr. de produse: "; cin >> n;

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

       cout << endl << "Produsul " << i+1 << endl;

       cout << "Pret: "; cin >> x[i].pret;

       cout << "Cantitate: "; cin >> x[i].cantitate;

   }

   cout << endl;

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

       cout << x[i].pret << ' ' << x[i].cantitate << endl;

   for(int i=0; i<n-1; ++i)

       for(int j=i+1; j<n; ++j)

           if(x[i].pret > x[j].pret){ //nu ai scris daca crescator sau descrescator, modifici tu dupa cerinta

               Produs aux = x[i];

               x[i] = x[j];

               x[j] = aux;

           }

   cout << endl << "Produsele ordonate crescator dupa pret sunt: "  << endl;

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

       cout << x[i].pret << ' ' << x[i].cantitate << endl;

   int sum = 0;

   for(int i=0; i<4; ++i)

       sum += x[i].pret;

   if(sum <= S)

       cout << endl << "Produsele pot fi cumparate" << endl;

   else

       cout << endl << "Produsele nu pot fi cumparate" << endl;

   for(int i=0; i<n-1; ++i)

       for(int j=i+1; j<n; ++j)

           if(x[i].cantitate < x[j].cantitate){

               Produs aux = x[i];

               x[i] = x[j];

               x[j] = aux;

           }

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

       fout << x[i].pret << ' ' << x[i].cantitate << endl;

   return 0;

}