• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Tworzenie tablicy dynamicznej dla obiektu znajdującego się w strukturze

0 głosów
67 wizyt
pytanie zadane 17 maja 2021 w C i C++ przez japsoyignu Nowicjusz (120 p.)
zamknięte 17 maja 2021 przez japsoyignu

Mam taką strukturę:

struct SStudent
{
    string imie, nazwisko;
    unsigned nr_indeksu, gr_dz, gr_lab, nie_zal;
    string* wykaz_nie_zal;
};

Tworzenie tablicy struktury SStudent:

SStudent* studenci = nullptr;

 

Jak stworzyć tablicę dynamiczną dla obiektu:

string* wykaz_nie_zal;

znajdującego się w strukturze SStudent?

komentarz zamknięcia: Z pomocą komentarzy udało się rozwiązać problem
komentarz 17 maja 2021 przez tkz Nałogowiec (41,420 p.)
Dlaczego nie korzystasz z std::vector?
komentarz 17 maja 2021 przez japsoyignu Nowicjusz (120 p.)
Należy tak to wykonać. Inaczej nie może być. Szukam pomocy, może ktoś umie
komentarz 17 maja 2021 przez tkz Nałogowiec (41,420 p.)

Dokładnie tak jak masz? Wykładowca jest sadystą? 

// Example program
#include <iostream>
#include <string>
using namespace std;
struct SStudent
{
    string imie, nazwisko;
    unsigned nr_indeksu, gr_dz, gr_lab, nie_zal;
    string* wykaz_nie_zal;
};

int main()
{
    SStudent s;
    s.wykaz_nie_zal = new string[10];
    for(int i=0; i<10;++i)
    {
        s.wykaz_nie_zal[i] = string(i,'a'+i);
    }
        for(int i=0; i<10;++i)
    {
        std::cout<<s.wykaz_nie_zal[i]<<'\n';
    }
    delete[] s.wykaz_nie_zal;
}

 

komentarz 17 maja 2021 przez japsoyignu Nowicjusz (120 p.)

A jak to zrobić, gdy to zamiast

SStudent s;

mam talblicę:

SStudent* s;

Nie wiem jak to zrobić właśnie...

komentarz 17 maja 2021 przez tkz Nałogowiec (41,420 p.)
Ale po co wskaźnik?

Tworzysz obiekt studenta przez new, zamiast kropki ->, usuwasz na koniec obiekt studenta.
komentarz 17 maja 2021 przez japsoyignu Nowicjusz (120 p.)

Mam takie coś:

SStudent* studenci = new SStudent [lista.liczba_studentow];

Każdy student ma podaną ilość wpisanych przedmiotów i jakie to są. Jest liczba, wczytuję ją i muszę umieścić teraz te przedmioty w tym stringu. Może ich być 3, 4 itd. Ogólnie to tylko problem jest z tym, że mam tablicę studenci.

Próbowałem tak:

studenci[i].wykaz_nie_zal = new string [studenci[i].nie_zal];
                    for(int j=0; j<studenci[i].nie_zal; j++)
                    {
                        studenci[i].wykaz_nie_zal = string(i,'a'+i);
                    }

Nie da się stworzyć tej tablicy dynamicznej. 

1
komentarz 17 maja 2021 przez tkz Nałogowiec (41,420 p.)
Tak jak wspomniałem. Zamiast obiekt.pole musisz użyć obiekt->pole. Dodatkowo wykaz_nie_zal również jest tablicą, nie dowlujesz się do tego jak do tablicy.
komentarz 17 maja 2021 przez japsoyignu Nowicjusz (120 p.)

Wiesz co. Miałem błąd przy tworzeniu tablicy dynamicznej. Ona była już zdeklarowana także stringa z lewej strony już nie trzeba pisać. Tak jest ok:

studenci[i].wykaz_nie_zal = new string [studenci[i].nie_zal];

 

komentarz 17 maja 2021 przez japsoyignu Nowicjusz (120 p.)
Z tym obiekt->pole nie można, bo nie działa. Musi być z kropką. To pewnie dlatego, że odwołuje się do studenci[i].cos, a nie samej tablicy studenci->cos.

Dzięki za pomoc.
komentarz 17 maja 2021 przez tkz Nałogowiec (41,420 p.)
// Example program
#include <iostream>
#include <string>
using namespace std;
struct SStudent
{
    string imie, nazwisko;
    unsigned nr_indeksu, gr_dz, gr_lab, nie_zal;
    string* wykaz_nie_zal;
};
 
int main()
{
    SStudent *s = new SStudent[10];
    for(int j=0; j<10;++j)
    {
        s[j].wykaz_nie_zal = new string[10];
        for(int i=0; i<10;++i)
        {
            s[j].wykaz_nie_zal[i] = string(j,'a');
        }
    }
    for(int j=0; j<10;++j)
    {
        for(int i=0; i<10;++i)
        {
            std::cout<<s[j].wykaz_nie_zal[i]<<'\n';
        }
        delete[] s[j].wykaz_nie_zal;
    }
 
    delete[] s;
}

 

Podobne pytania

0 głosów
2 odpowiedzi 304 wizyt
0 głosów
2 odpowiedzi 167 wizyt
pytanie zadane 12 grudnia 2019 w C i C++ przez Ganci Użytkownik (670 p.)
0 głosów
1 odpowiedź 101 wizyt
pytanie zadane 1 grudnia 2018 w C i C++ przez mrKaczorrro13 Użytkownik (560 p.)

86,448 zapytań

135,207 odpowiedzi

300,348 komentarzy

57,196 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...