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

wskaźniki, wektor

42 Warsaw Coding Academy
0 głosów
985 wizyt
pytanie zadane 7 lutego 2017 w C i C++ przez Piotr Goździewski Nowicjusz (150 p.)
otwarte ponownie 7 lutego 2017 przez Patrycjerz

Witam,

1.Zdefiniować typ strukturalny zesp, zawierający dwa pola cz_r oraz cz_z typu float. Napisać 1-argumentową funkcję gen_f, której wartością jest wskaźnik do wektora o n (to jedyny parametr funkcji) elementach. Elementami wektora są struktury typu zesp. W wektorze mają być pamiętane liczby zespolone 1+2i, 2+3i,…,n+(n+1)i.

2.Przyjmując, że zdefiniowana jest funkcja z zadania nr 1, napisać funkcję main, w której funkcja gen_f wywołana zostanie dla n=10. Elementy utworzonego wektora zapisać w pliku tekstowym pz.txt w taki sposób, aby każda liczba zespolona była zapisana w jednej linii w postaci podanej w zadaniu nr 1.

Niestety ale nie rozumiem do końca jak działają te wskaźniki i mam problem, może zadanie jest banalne. Proszę o wskazanie co robię źle.

struct zesp
{
    float cz_r, cz_z;
};
ostream & operator<<(ostream& str, zesp& z)
{
    str << z.cz_r;
    str << z.cz_z;
    return str;
}
vector<zesp>*& gen_f(int n)
{
    vector<zesp>*v = new vector<zesp>(n);
    zesp z;
    for (int i = 1; i <= n; i++)
    {
        z.cz_r = i;
        z.cz_z = i + 1;
        v->push_back(z);
    }
    
    return v;
}

int main()
{
    //ZADANIE 2

    gen_f(10);
    ofstream plik;
    plik.open("pz.txt");
    if (plik)
    {
        for (int i = 0; i < v.size(); i++)
        {
            plik << v[i].cz_r << "+" << v[i].cz_z << "i" << endl;
        }
    }
    plik.close();

}
komentarz 7 lutego 2017 przez Patrycjerz Mędrzec (192,320 p.)

Napisać 1-argumentową funkcję gen_f, której wartością jest wskaźnik do wektora o n (to jedyny parametr funkcji) elementach.

Skąd wziąłeś treść tych zadań? Może sam je napisałeś, gdyż nie mają one większego sensu, np. fragment zacytowany powyżej — jak funkcja może mieć wartość?

Po drugie zadania nie definiują w ogóle, co ta funkcja ma robić/zawierać, albo jest to pokazane w pokraczny sposób.

komentarz 7 lutego 2017 przez Piotr Goździewski Nowicjusz (150 p.)
Zadania dostałem od wykładowcy, funkcja gen_f ma zapisywać do wektora liczby, np. dla n=2: 1+2i, 2+3i.

Potrafię to zrobić ale bez wskaźników, a ta wartość to funkcja ma zwracać wskaźnik do wektora.

1 odpowiedź

0 głosów
odpowiedź 7 lutego 2017 przez Patrycjerz Mędrzec (192,320 p.)
wybrane 8 lutego 2017
 
Najlepsza
  1. Usuń znak & z deklaracji funkcji gen_f.
    vector<zesp>* gen_f(int n)
    
  2. Użyj konstruktora domyślnego vectora, tzn. nie pisz żadnych nawiasów przy wywołaniu new.
    vector<zesp>* v = new vector<zesp>;
    
  3. Pobierz adres zwracany przez funkcję do jakiegoś wskaźnika, bo inaczej go gubisz i nie możesz się do niego odnieść.
    vector<zesp>* v = gen_f(10);
    
  4. Zwolnij pamięć zarezerwowaną dla vectora.
    delete v; 

Oczywiście resztę odwołań do vectora w funkcji main dostosowujesz do wskaźnika. 

Podobne pytania

0 głosów
1 odpowiedź 186 wizyt
pytanie zadane 25 stycznia 2017 w Matematyka, fizyka, logika przez Ehlert Ekspert (215,010 p.)
0 głosów
2 odpowiedzi 709 wizyt
pytanie zadane 1 października 2016 w C i C++ przez niezalogowany
0 głosów
0 odpowiedzi 148 wizyt
pytanie zadane 18 kwietnia 2017 w C i C++ przez Dominik Kulis Użytkownik (720 p.)

93,377 zapytań

142,380 odpowiedzi

322,529 komentarzy

62,727 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...