Să se creeze o listă simplu înlănţuită cu numerele întregi preluate de la tastatura. Se cere să se adauge după fiecare număr din listă cifra de control a numărului respectiv. Să se afişeze conţinutul listei înainte şi după modificare, fiecare afişare pe câte un rând (cifra de control pentru 1468 este 1 (1+4+6+8=19; 1+9=10; 1+0=1) in C++
Răspunsuri la întrebare
Răspuns:
#include <iostream>
using namespace std;
struct nod
{
int info;
nod* urm;
};
void afisare(nod *Cap)
{
nod *p=Cap;
while (p != NULL)
{
cout << p->info << " ";
p = p->urm;
}
cout << "\n";
}
void creareLista(nod *&Cap)
{
int i,inf,n;
nod *p, *q;
Cap=NULL;
cout<<"Dati numarul de elemente al listei n = ";cin>>n;
cout<<"Dati prima informatie ";cin>>inf;
p=new nod;
p->info=inf;
p->urm=NULL;
Cap=p; q=p;
for(i=2;i<=n;i++)
{
cout<<"Dati informatia "<<i<<" = ";
cin>>inf;
p=new nod;
p->info=inf;
p->urm=NULL;
q->urm=p;
q=p;
}
}
int cifControl(int num)
{
int sCif;
while (num>9)
{
sCif=0;
while (num)
{
sCif+=num%10;
num/=10;
}
num=sCif;
}
return num;
}
void inserare(nod *p)
{
nod *q=p;
while (q->urm!=NULL)
{
nod *nou=new nod;
nou->info=cifControl(q->info);
nou->urm=q->urm;
q->urm=nou;
q=nou->urm;
}
nod *nou=new nod;
nou->info=cifControl(q->info);
nou->urm=NULL;
q->urm=nou;
}
int main()
{
nod *Cap;
creareLista(Cap);
afisare(Cap);
inserare(Cap);
afisare(Cap);
}
Explicație: