Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Struktura dynamiczna - usuwanie c++


Rekomendowane odpowiedzi

Opublikowano

Witam mam pewien problem z funkcją. Muszę napisać kod który ze struktury bedzie usuwał wybranego użytkownika.

Narazie napisałem coś takiego:

 

 

#include <iostream>
#include <cstdlib>
 
using namespace std;
 
struct czlowiek{
 char imie[50];
 char nazwisko[50];
 char plec;
 long long pesel;
 int wiek;
 float wzrost;
};
 
void wprowadz(int n,czlowiek osoba[])
{
for(int i=0;i<n;i++)
{
cout<<"podaj imie: " ;
cin>>osoba.imie;
cout<<"podaj nazwisko: ";
cin>>osoba.nazwisko;
cout<<"Wpisz m jesli jestes mezczyzna, a k jesli kobieta: ";
cin>>osoba.plec;
cout<<"podaj pesel: ";
cin>>osoba.pesel;
cout<<"podaj wiek: ";
cin>>osoba.wiek;
cout<<"podaj wzrost: ";
cin>>osoba.wzrost;
}
}
 
void wypisz(int n,czlowiek osoba[])
{
for(int i=0;i<n;i++)
{
cout<<endl;
cout<<i+1<<" ";
cout<<"imie: "<<osoba.imie<<" ";
cout<<"nazwisko:"<<osoba.nazwisko<<" ";
if(osoba.plec=='m')
cout<<"plec: mezczyzna"<<" ";
else
cout<<"plec: kobieta"<<" ";
cout<<"pesel: "<<osoba.pesel<<" ";
cout<<"wiek: "<<osoba.wiek<<" ";
cout<<"wzrost: "<<osoba.wzrost;
}
}
 
void usun(int n,czlowiek osoba[])
{
cout<<"Podaj id ktore chcesz usunac ";
int i;
cin>>i;
i=i-1;
delete osoba.imie;
delete osoba.nazwisko;
delete osoba.plec;
delete osoba.pesel;
delete osoba.wiek;
delete osoba.wzrost;
}
 
 
 
//--------------------------------------------------------------------------------------------------------------------------------------------------------------
int main()
{
int n;
cout<<"Podaj ilosc osob: ";
cin>>n;
czlowiek *osoba;
osoba = new czlowiek[n];
wprowadz(n, osoba);
wypisz(n, osoba);
usun(n, osoba);
wypisz(n, osoba);
 
return 0;
}

 

Wiem że program nie jest jeszcze zoptymalizowany ale prosze o pomoc z funkcją usun.

Opublikowano

Przyjrzyj się funkcji usun. Nie możesz usuwać każdego elementu struktury oddzielnie. Mało tego, nie możesz usunąć pojedynczej struktury z dynamicznie alokowanej tablicy - konieczna jest jej realokacja i skopiowanie wybranych danych. Najprościej będzie użyć klasę vector z STL - nie musisz martwić się o ręczną alokacją pamięci i możesz z łatwością usunąć dowolne elementy tablicy.

Opublikowano
#include <vector.h>
std::vector<czlowiek> osoba;

I edytujesz każdą funkcje by mogła przyjmować taki argument, tak chyba będzie najoptymalniej(?)

PS. Pamiętaj żeby kolejne elementy dodawać teraz metodą push back.

Bot do gry NosTale:


[bOT] NosBota 1.3v

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...