Orar semigroup #2

Orar semigroup #2

5/23

Se citesc nr intregi care se aseaza intr-o stiva. Sa se creeze o coada cu nr neprime din stiva. Fiecare nr va fi urmat de nr sau de divizori.

#include<iostream>
#include<fstream>
using namespace std;
struct stiva{int info;
stiva* urm;};

struct coada{int info,nrdiv;
coada* urm;};

void adaugare_coada(coada* &prim,coada* &ultim,int x,int y)
{coada* p=new coada;
p->info=x;
p->nrdiv=y;
p->urm=NULL;
if(prim==NULL)
    prim=p;
else ultim->urm=p;
ultim=p;}

void adaugare_stiva(stiva* &vf, int x)
{stiva* p;
p=new stiva;
p->info=x;
p->urm=vf;
vf=p;}

void afisare_coada(coada* vf)
{if(vf==NULL)
    cout<<"Stiva/Coada goala";
else
    while(vf!=NULL)
    {cout<<vf->info<<" "<<vf->nrdiv<<" | ";
    vf=vf->urm;}
    cout<<endl;
}

int primm(int n)
{int d,i,ok=1;
if(n==1 || n==0)
    return 0;
for(d=2;d<=n/2;d++)
    if(n%d==0)
        ok=0;
return ok;}

int nrdiv(int x)
{int i=0;
for(int d=1;d<=x;d++)
    if(x%d==0)
        i++;
    return i;}

void afisare_stiva(stiva* vf)
{if(vf==NULL)
    cout<<"Stiva/Coada goala";
else
    while(vf!=NULL)
    {cout<<vf->info<<" | ";
    vf=vf->urm;}
    cout<<endl;
}

int main()
{coada* prim=NULL;
stiva* vf=NULL;
coada* ultim=NULL;
int x,n,i=0;
ifstream f("date");
while(f>>x)
    adaugare_stiva(vf,x);
afisare_stiva(vf);
while(vf)
{
    if(nrdiv(vf->info)>2)
        adaugare_coada(prim,ultim,vf->info,nrdiv(vf->info));
    vf=vf->urm;   
}
afisare_coada(prim);
}

marți, 22 mai 2012 by DlMuresan
Categories: , | Leave a comment

Leave a Reply