Se citește de la mediul de intrare un sir de numere întregi ce se termina cu zero. Sa se creeze o lista liniara astfel încât la parcurgerea ei, elementele sa apară in ordinea in care au fost citite. Sa se afișeze numerele pozitive, iar cele prime sa se suprime din lista. c++
Răspunsuri la întrebare
#include <iostream>
using namespace std;
struct Nod {
int numar;
Nod * urmator;
};
Nod * cap = NULL;
int prim(int x) {
if (x == 1 || x == 0)
return 0;
for (int d = 2; d <= x / 2; d++)
if (x % d == 0)
return 0;
return 1;
}
void inserareFinal(Nod * & cap, int valoare) {
Nod * elem_final = new Nod;
elem_final -> numar = valoare;
elem_final -> urmator = NULL;
if (cap == NULL)
cap = elem_final;
else {
Nod * nod_curent = cap;
while (nod_curent -> urmator != NULL)
nod_curent = nod_curent -> urmator;
nod_curent -> urmator = elem_final;
}
}
void stergereElement(Nod * predecesor) {
Nod * victima = predecesor -> urmator;
predecesor -> urmator = predecesor -> urmator -> urmator;
delete victima;
}
void afisareLista(Nod * cap) {
while (cap != NULL) {
if (cap -> numar > 0)
if (prim(cap -> numar) == 0)
cout << cap -> numar << ' ';
else
stergereElement(cap->urmator);
cap = cap -> urmator;
}
}
int main() {
int x;
cin >> x;
while (x != 0) {
inserareFinal(cap, x);
cin >> x;
}
afisareLista(cap);
return 0;
}