Dodawanie do struktury

2015-12-27 18:47
0

Witam, jest sposób, aby do structury, która jest vectorem dodać elementy, bez konstruktora.

 struct ocena
{
    string przedmiot;
    int ocena;
};

struct indeks
{
    string imie;
    string nazwisko;
    vector <ocena> oceny;
};

void pobierz (vector <indeks> ind)
{
string a, b;
cin>>a;
cin>>b;
ind->imie.push_back(a);
ind->nazwisko.push_back(b);
}

Pozostało 580 znaków

2015-12-27 18:57
2

Jedno z dwóch:

  1. string a, b;
    cin>>a>>b;
    indeks x;
    x.imie=a;
    x.nazwisko=b;
    ind.push_back(x);
  2. indeks x;
    cin>>x.imie>>x.nazwisko;
    ind.push_back(x);

    Ale to i tak nie zadziała bo masz błąd tu: void pobierz (vector <indeks> ind)


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
Pokaż pozostałe 2 komentarze
@EraeRa, na kiepski wzrok polecam okulary lub większy monitor, ewentualnie szerszą czcionkę. Wsadzanie spacji gdzie tylko popadnie nie jest dobrym podejściem. - _13th_Dragon 2015-12-29 19:06
w R jest zasada, że znak przypisania otula się w spacje, za wyjątkiem tych przy wywoływaniu funkcji - EraeRa 2015-12-29 19:09
Już dyskutowałem ze zwolennikami tych zasad, okazuje się że ignorują większość z nich, ale za niektóre gotowy życie oddać, ot taki bezsensowny nazi fanatyzm. Dowiedz się czegoś o autorze, po czym przeczytaj jeszcze raz co napisałem wyżej. - _13th_Dragon 2015-12-29 19:22
mi sie tak lepiej czyta jak są spacje. - EraeRa 2015-12-29 19:24
A mnie lepiej się czyta kiedy if/for/itp razem z pojedynczą instrukcją jest w jednym wierszu bez klamer, spacje w bezsensownych miejscach utrudniają użycie tego. Zwiększ monitor to nawet bez spacji będzie się lepiej czytało. - _13th_Dragon 2015-12-29 19:26

Pozostało 580 znaków

2015-12-27 20:04
0

Mam taki error: Error type(s) preceding 'ocena' (constructor with return type, or illegal redefinition of current class-name?)
Nie rozumiem co zrobić, aby go naprawić. Proszę o jakąś pomoc

 #include <iostream>
#include <cstdlib>
#include <vector>
#include <string>

using namespace std;

struct ocena
{
    string przedmiot;
    int ocena;
};

struct indeks
{
    string imie;
    string nazwisko;
    vector <ocena> oceny;
};

void pobierz (vector <indeks>& ind)
{
    indeks x;
    cin>>x.imie>>x.nazwisko;
    ind.push_back(x);
}

int main ()
{
    vector <indeks> indeksy;
    pobierz(indeksy);

    system ("pause");
    return 0;
}
edytowany 1x, ostatnio: Garniturek, 2015-12-27 20:07

Pozostało 580 znaków

2015-12-27 20:12
2

Użyj opcję rebuild http://ideone.com/mSV0Xb

Możliwe że twój kompilator czepia się kolizji nazw:
struct ocena
{
string przedmiot;
int ocena;
};


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon, 2015-12-27 20:13
Ojeju, co za błąd Dzięki! - Garniturek 2015-12-27 23:38

Pozostało 580 znaków

2015-12-28 18:00
0

Witam, mam kolejny problem z dodaniem do struktury
Program się kompiluje, dodaje te wartości ocen i przy wyświetlaniu wyświetla się tylko imię i nazwisko.
Gdzie mam błąd? :)

#include <iostream>
#include <cstdlib>
#include <vector>
#include <string>

using namespace std;

struct ocena
{
    string przedmiot;
    int wartosc;
};

struct indeks
{
    string imie;
    string nazwisko;
    vector <ocena> oceny;
};

void pobierz (vector <indeks> &ind, int n, vector <ocena> &o)
{
    indeks x;
    ocena z;
    cin>>x.imie>>x.nazwisko;
    for (int i=0; i<n; i++)
    {

        cin>>z.wartosc;
        o.push_back(z);

    }
    ind.push_back(x);
}

void wyswietl (const vector <indeks> &ind, int n)
{
    for (auto v=ind.begin(); v!=ind.end(); ++v)
    {
        cout<<(*v).imie<<" "<<(*v).nazwisko<<endl;
        for(auto w=v->oceny.begin(); w!=v->oceny.end(); ++w)
            cout<<(*w).wartosc;
    }

}

int main ()
{
    vector <indeks> indeksy;
    vector <ocena> ocenki;
    char a;
    int n;
    cout <<"Podaj ile ocen brac pod uwage: ";
    cin>>n;
    while (1)
    {
        cin>>a;
        switch(a)
        {
        case '1':
            {
                pobierz(indeksy, n, ocenki);
            }break;
        case '2':
            {
                wyswietl(indeksy, n);
            }break;
        case 'x':
            {
                exit(0);
            }break;
        }

    }
    system ("pause");
    return 0;
}

Pozostało 580 znaków

2015-12-28 18:04
2

Dodajesz oceny do: vector <ocena> ocenki; z main()
Zaś wyświetlasz z: vector <ocena> oceny; z indeks


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
Lepszym rozwiązaniem będzie dodawanie do vectora z indeks niż wyświetlanie z vectora z main(), tak? :) - Garniturek 2015-12-28 19:12

Pozostało 580 znaków

2015-12-29 00:06
0

Mogę prosić o pomoc w pobraniu wartości ocen do vector <ocena> oceny z indeks. Nie miałem pomysłu, próbowałem też metodą prób i błędów i nic.
Pomocy.

Pozostało 580 znaków

2015-12-29 00:42
1

Zacznij od wywalenia: vector <ocena> ocenki; i jako skutek nie przekazywanie jej do pobierz() ani odbierania jej w pobierz().
Dalej sam się domyślisz bo zostanie zmienić jeden wiersz.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2015-12-29 09:50
0

Przeceniłeś moje umiejętności :(
Próbowałem taką metodą

ind[0].oceny.push_back(a); 

, ale też nic. Nie mam pojęcia jak dodać int'a i stringa do vectora, który jest w strukturze

Pozostało 580 znaków

2015-12-29 10:37
0

No to przerasta cię ten projekt. Weź się za jakiś kurs.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2015-12-29 19:00
0

Udało się, ale przy próbie napisania kolejnej funkcji, mam nie spotykany wcześniej błąd.
Dołączyłem plik nagłówkowy <algorithm> i dostałem błędy:
error C1903: unable to recover from previous error(s); stopping compilation
error C2064: term does not evaluate to a function taking 2 arguments
Co zrobić?
kod:

#ifndef Header.h
#define Header_h
#include <iostream>
#include <cstdlib>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;

struct ocena
{
    string przedmiot;
    int wartosc;
};

struct indeks
{
    string imie;
    string nazwisko;
    vector <ocena> oceny;
};
void pobierz (vector <indeks> &ind, int n);
void wyswietl (const vector <indeks> &ind, int n);
bool porownaj(vector <indeks> &ind);
void sort (vector <indeks> &ind);
#endif
#include "Header.h"
bool porownaj(vector <indeks> &ind)
{
    indeks s1, s2;
    if (s1.imie<s2.imie)
        return true;
    else return false;
}
void sort (vector <indeks> &ind)
{
    sort(ind.begin(), ind.end(), porownaj(ind));

}
void pobierz (vector <indeks> &ind, int n)
{
    indeks x;
        ocena o;
    cin>>x.imie>>x.nazwisko;

    for (int i=0; i<n; i++)
    {
    cout<<"Podaj przedmiot: ";
    cin>>o.przedmiot;
    cout<<"Podaj ocene: ";
    cin>>o.wartosc;
     x.oceny.push_back(o);
    }
        ind.push_back(x);
}

void wyswietl (const vector <indeks> &ind, int n)
{
    for (auto v=ind.begin(); v!=ind.end(); ++v)
    {
        cout<<(*v).imie<<" "<<(*v).nazwisko<<endl;
        for(auto w=v->oceny.begin(); w!=v->oceny.end(); ++w)
            cout<<(*w).przedmiot<<": "<<(*w).wartosc<<endl;
    }

}
edytowany 1x, ostatnio: Garniturek, 2015-12-29 19:00

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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