Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- fractii
- simplificati fractiile
- stergeti toate nr intregi care se obtin
- */
- #include <iostream>
- #include <cmath>
- using namespace std;
- struct fractie
- {
- int numarator,numitor;
- };
- struct nod
- {
- fractie info;
- nod *urm;
- };
- void Initializare(nod *&prim, nod *&ultim)
- {
- prim=ultim=NULL;
- }
- void Citire(nod *&prim,nod *&ultim)
- {
- fractie x;
- cout<<"Numa=";cin>>x.numarator;
- cout<<"Numi=";cin>>x.numitor;
- cout<<endl;
- if(prim==NULL)
- {
- prim = new nod;
- prim->info=x;
- prim->urm=NULL;
- ultim=prim;
- }
- else
- {
- nod *p=new nod;
- p->info=x;
- p->urm=NULL;
- ultim->urm=p;
- ultim=p;
- }
- }
- void Afisare(nod *&prim, nod *&ultim)
- {
- for(nod *p=prim; p; p=p->urm)
- cout<<p->info.numarator<<" / "<<p->info.numitor<<endl;
- }
- void StergereDP(nod *&prim, nod *&ultim, nod *p)
- {
- if(p->urm==ultim)
- {
- p->urm=NULL;
- delete ultim;
- ultim=p;
- }
- else
- {
- nod *q=p->urm;
- p->urm=q->urm;
- delete q;
- }
- }
- void StergerePrim(nod *&prim, nod *&ultim)
- {
- if(prim==ultim)
- {
- delete prim;
- prim=ultim=NULL;
- }
- else
- {
- nod *p=prim;
- prim=prim->urm;
- delete p;
- }
- }
- void DacaIntreg(nod *&prim, nod *&ultim)
- {
- if(prim->info.numarator % prim->info.numitor==0)
- StergerePrim(prim,ultim);
- for(nod *p=prim; p->urm!=NULL; p=p->urm)
- if(p->urm->info.numarator % p->urm->info.numitor==0)
- {
- StergereDP(prim,ultim,p);
- return DacaIntreg(prim,ultim);
- }
- return;
- }
- void Simplificare(nod *&prim, nod *&ultim)
- {
- for(nod *p=prim; p; p=p->urm)
- for(int i=2; i<p->info.numitor; i++)
- while(p->info.numarator%i==0 && p->info.numitor%i==0)
- {
- p->info.numarator/=i;
- p->info.numitor/=i;
- }
- }
- int main()
- {
- int n;
- nod *prim,*ultim;
- Initializare(prim,ultim);
- cout<<"Numarul de noduri: ";
- cin>>n;
- for(int i=0; i<n; i++)
- Citire(prim,ultim);
- DacaIntreg(prim,ultim);
- Simplificare(prim,ultim);
- Afisare(prim,ultim);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement