Wyswietlanie zawartości dynamicznej listy

0

Pytanie następujące: jaki kod umieścić by na sam koniec (po usunięciu wpisanego elementu) program pokazał mi aktualnie przechowywane dane?

 # include "stdafx.h"
 # include < list >
 # include < iostream >
 # include < cstddef >

using namespace std;

int main() {
	list < int > lista;
	int wartosc;
	int ile;
	cout << "Cwiczenie 3 - Dynamiczna lista" << endl;
	cout << "Ile elementow chcesz dodać do listy? ";
	cin >> ile;
	for (int i = 0; i < ile; i++) {
		cout << "Podaj " << i + 1 << " element: ";
		cin >> wartosc;
		lista.push_back(wartosc);
	}
	int element;
	cout << "Podaj element listy do usunięcia: ";
	cin >> element;
	element--;
	list < int > ::iterator iter = lista.begin();
	for (int i = 0; i < element; i++)
		iter = lista.erase(iter);
	{
		cout << "Aktualne elementy listy to: ";
	}

	return 0;
}
1

Nie dodawaj spacji tak jak poniżej:

 # include < list >
 # include < iostream >
 # include < cstddef >

Powinno wyglądać to tak:

#include <list>
#include <iostream>
#include <cstddef>

I tu nawet nie chodzi o wygląd, ale o to że zamiast pliku list kompilator będzie szukał [SPACJA]list[SPACJA] .

Tak jak poniżej elementu nie usuniesz:

int element;
cout << "Podaj element listy do usunięcia: ";
cin >> element;
element--;

a jedynie wczytasz jakąś liczbę do zmiennej element a następnie odejmiesz od niej 1 (element--;);

Zobacz ten kawałek kodu

for (int i = 0; i < element; i++)
    iter = lista.erase(iter); // Pętla for kończy się tutaj
{ // Otwarcie nawiasu nic nie robi
    cout << "Aktualne elementy listy to: ";
}

Co do wyświetlania liczb w pętli, możesz użyć coś takiego:

for(list<int>::iterator el = lista.begin(); el != lista.end(); el++)
{
    cout << *el << endl;
}

Powyższy kod wyświetli wszystkie liczby z listy, każdą w nowej linii.
Istnieją też inne możliwości iteracji przez pętlę - tutaj przykłady.

Aby usunąć element z tablicy możesz zrobić coś takiego:

int del_number;
cout << "Podaj element do usuniecia" << endl;
cin >> del_number; // Użytkownik podaje liczbę do usunięcia
lista.remove(del_number); // Wszystkie liczby które są równe del_number zostaną usunięte.
0

Albo mam problem z kasowaniem, albo z wyświetlaniem. Na końcu program wyświetla mi wcześniej wpisane liczby, wszystkie, tak jakby ich nie usuwal, albo pobiera złą część programu do wyświetlenia:

#include "stdafx.h"
#include <list>
#include <iostream>
#include <cstddef>

using namespace std;

int main ()
{
	list<int> lista; 
	int wartosc;
	int ile; 
	cout << "Cwiczenie 3 - Dynamiczna lista" <<endl;
	cout << "Ile elementow chcesz dodać do listy? ";
	cin >> ile;

	for (int i = 0; i < ile; i++) 
    {
	cout << "Podaj " << i+1 << " element: "; 
	cin >> wartosc; 
	lista.push_back(wartosc); 
    }
	int del_number;
	cout << "Podaj element listy do usunięcia: "; 
	cin >> del_number; 
	lista.remove(del_number);

 
   for(list<int>::iterator el = lista.begin(); el != lista.end(); el++)
{
    cout << *el << endl;
}
  
return 0;
}
1

Skopiowałem ten kod który podałeś, uruchomiłem u siebie:

Cwiczenie 3 - Dynamiczna lista
Ile elementow chcesz dodaŠ do listy? 5
Podaj 1 element: 1
Podaj 2 element: 2
Podaj 3 element: 2
Podaj 4 element: 3
Podaj 5 element: 4
Podaj element listy do usuniŕcia: 2
1
3
4         

Więc nie zbyt rozumiem co nie działa.

Chyba że chodziło o usunięcie elementu pod danym indeksem. Jeżeli tak to zobacz tutaj

0

To może wina mojego kompilatora. W szkole używam Visuala, w domu mam z nim problemy i łapie się niestety innych.
Dzięki za pomoc ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1