Baza de date magazin c++

Rezolvarea problemelor de matematica prin realizarea unor programe.
crcosmin32
utilizator
utilizator
Mesaje: 20
Membru din: 02 Mar 2016, 20:40
Localitate: Cernavoda

Baza de date magazin c++

Mesaj de crcosmin32 » 18 Oct 2017, 19:23

Salut am si eu o problema la programul acesta :
#include <iostream.h>
#include <conio.h>
#include <fstream.h>
#include <string.h>
struct {char nume[30];float pret;int zi;int luna;int an;char furnizor[30];float cantitate;int aux;}p[30];
int n,i,c,xc,d;
float max,S;
char k;
void main()
{
fstream f("Magazin.txt",ios::in);
f>>n;
for(i=1;i<=n;i++)
{
f>>p.nume;
f>>p.pret;
f>>p.zi;
f>>p.luna;
f>>p.an;
f>>p.furnizor;
f>>p.cantitate;
}
for(i=1;i<=n;i++)
{
cout<<"Produs : "<<p.nume<<endl;
cout<<"Pret : "<<p.pret<<endl;
cout<<"Data : "<<p.zi<<"-"<<p[i].luna<<"-"<<p[i].an<<endl;
cout<<"Furnizor : "<<p[i].furnizor<<endl;
cout<<"Cantitate : "<<p[i].cantitate<<endl;
cout<<endl;
}
cout<<"Tasta 1 : Produsul cu cel mai mare pret."<<endl;
cout<<"Tasta 2 : Ordonarea dupa data fabricatiei."<<endl;
cout<<"Tasta 3 : Valoarea totala a produselor."<<endl;
cout<<"Tasta 4 : Actualizare cantitati."<<endl;
for(xc=1;xc<=120;xc++)
{
cout<<"x";
}
cout<<endl;
cout<<"Ce doriti sa faceti ?"<<endl;
cout<<"Raspuns : ";cin>>c;
if(c!=1&&c!=2&&c!=3&&c!=4)
cout<<"Comanda inexistenta."<<endl;
else switch(c)
{
case 1:{for(i=1;i<=n;i++)
{
if(p[i].pret<p[i+1].pret)
max=p[i+1].pret;
}
cout<<"Pretul maxim este de "<<max<<" lei,iar el este al produsului : "<<p[i+1].nume;
break;
}
case 2:{for(i=1;i<=n;i++)
{
}
break;
}
case 3:{for(i=1;i<=n;i++)
{
S=S+p[i].pret*p[i].cantitate;
}
cout<<"Valoarea totala a produselor este de "<<S<<" lei.";
break;
}
case 4:{for(i=1;i<=n;i++)
{
cout<<"Produs : "<<p[i].nume<<endl;
cout<<"Pret : "<<p[i].pret<<endl;
cout<<"Data : "<<p[i].zi<<"-"<<p[i].luna<<"-"<<p[i].an<<endl;
cout<<"Furnizor : "<<p[i].furnizor<<endl;
cout<<"Cantitate veche : "<<p[i].cantitate<<endl;
cout<<"Care este diferenta de produse : ";cin>>d;
cout<<"Cantitate noua : "<<(p[i].cantitate+d)<<endl;
cout<<endl;
}
break;
}
}
cout<<endl<<"Hit any key to continue...";
getch();
}

Chiar nu stiu cum sa ordonez dupa data fabricatiei si si afisez produsul cu pretul cel mai mare. Am afisat pretul cel mai mare al unui produs :))).
Ceva sugestii (pt tasta 1 si 2)

A_Cristian
guru
guru
Mesaje: 1975
Membru din: 23 Feb 2015, 17:15

Re: Baza de date magazin c++

Mesaj de A_Cristian » 19 Oct 2017, 10:17

Sper ca nu aveai de terminat programul pentru azi. In acest caz, postul meu e putin tarziu, dar totusi cred ca poti trage niste invataminte din el.
Intai trebuie sa pui un program care macar compileaza. Si nu, nu ma refer ca folosesti/esti obligat sa folosesti compilatoare vechi de 20-25 de ani (probabil un BorlandC 3.1).

Altfel, uite cateva sugestii:
1. In C/C++/Java/.. toate sirurile de elemente incep cu indexul 0.
2. Calcularea maximului elementelor unui sir are urmatoarea forma:
max = sir[0]; (asta ai scapat din vedere la programelul tau).
cicleaza pe restul elementelor sirului (i=1;i<n)
daca max < sir
atunci
max = sir
// alte operatii posibile, de exemplu salvarea indexului unde gasim maxim
3. Sortarea dupa un anumit element se face aproximativ la fel cum faci sortarea unui sir de numere. As vrea sa vad macar partea aia in program.
4. Incearca sa scapi de variabile globale. Insa atentie, ele nu vor mai fi initializate, asa ca trebuie sa le initializezi tu.
5. Da nume sugestive variabilelor. De exemplu:
n -> totalProduse
c -> optiune
max -> pretMaxim
S -> valoareProduse

Alte mentiuni:
6. Ai un for care afiseaza niste x-uri dupa ce afisezi meniul. Complet inutil.
7. Invata sa lucrezi cu sub-programe (in cele mai multe limbaje se numesc functii).

Nice to have:
8. E bine sa inveti sa faci toate declaratiile in engleza, chiar daca textul afisat este in romana. Asta pentru ca sintaxa si toate elementele de limbaj sunt in engleza. Este mult mai usor sa citest un "while (isPrime(numbers))" decat "while(estePrim(sir))".

crcosmin32
utilizator
utilizator
Mesaje: 20
Membru din: 02 Mar 2016, 20:40
Localitate: Cernavoda

Re: Baza de date magazin c++

Mesaj de crcosmin32 » 19 Oct 2017, 12:09

Mersi de sfaturi. Am reusit sa imi dau seama ce trebuie sa fac aproximativ.Mai am de facut doar un meniu pentru actualizarea de cantitate (depinde ce vreau sa fac ,sa adaug/vand). Cat despre cout <<'x'-ul ala, pot spune ca e doar pentru "design" avand in vedere ca sunt inca la inceput si lucrez in borland 5.02 :))))))

A_Cristian
guru
guru
Mesaje: 1975
Membru din: 23 Feb 2015, 17:15

Re: Baza de date magazin c++

Mesaj de A_Cristian » 19 Oct 2017, 12:46

Posteaza codul cu ce-ai facut pana acum si mai ales daca mai ai intrebari nu ezita sa lui pui. Apoi, la un moment dat, voi pune codul la aceeasi problema, putin "refactorizat".

Scrie răspuns