Am tot incercat sa o rezolv si ma blochez , atunci cand trebuie sa fac media aritmetica a vecinilor.
Daca puteti sa ma ajutati cu aceasta problema v-as ramane recunoscator.
Code: Select all
#include <iostream>
#include <fstream>
using namespace std;
struct nod{ int info;
nod *urm;};
nod *prim, *ultim;
void adauga(nod *&prim, nod *&ultim, int x)
{
if(prim==0)
{
prim= new nod;
prim->info=x;
prim->urm=NULL;
ultim=prim;
}
else
{
nod *p;
p=new nod;
p->info=x;
p->urm=NULL;
ultim->urm=p;
ultim=p;
}
}
int perfect ( int n)
{
int i,s=0;
for(i=1;i<=n/2;i++)
if(n%i==0)
s=s+i;
if(s==n)
return 1;
else
return 0;
}
void listare (nod *prim)
{
nod *p;
p=prim;
while(p)
{
cout<<p->info<<" ";
p=p->urm;
}
}
void inserare_dupa(nod *&q, int x)
{
nod *p;
p=new nod;
p->info=x;
p->urm=q->urm;
q->urm=p;
q=p;
}
void vecini (nod *prim)
{
nod *p;
p=prim;
while(p)
{
if(perfect(p->urm->info)==1)
inserare_dupa(p,p->info+p->urm->urm->info); // nu inteleg de ce nu merge , cand pun conditia astfel .
else
p=p->urm;
}
}
int main()
{
fstream f("date.in",ios::in);
int nr;
while(f>>nr)
adauga(prim,ultim,nr);
listare(prim);
cout<<endl;
vecini(prim);
listare(prim);
return 0;
}