Informatică, întrebare adresată de aseion2004, 8 ani în urmă

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

Răspuns de lucaciucandrei
2

#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;

}


aseion2004: Nu afiseaza lista si nr. pozitive...
Alte întrebări interesante