Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[c++] vector struktur: wyszukanie tych samych łańcuchów pól struktur

Ostatnio zmodyfikowano 2014-02-11 11:20
Autor Wiadomość
Kefirek
Temat założony przez niniejszego użytkownika
[c++] vector struktur: wyszukanie tych samych łańcuchów pól struktur
» 2014-02-09 15:17:06
Witam

Program wczytuje dane z pliku binarnego do wektora(vektor8) struktur. Następnie sprawdza czy występują takie same łańcuchy w polach struktur "nazwa" , jeśli tak sumowane są pola struktur "kg" oraz "koszt".
Dane wczytane z pliku do wektora struktur:
Jan
1
1
Dan
2
4
Jan
4
16
Sam
3
9
Dan
3
9
Cezar
2
4

Dane oczekiwane po wykonaniu funkcji zapisane do wektora(vektor9):
Cezar
2
4
Dan
5
13
Jan
5
17
Sam
3
9

Do tej pory udało mi się znaleźć takie same łańcuchy i zapisać do wektora(vektor9):
Jan
5
17
Dan
5
13

Mam problem z wyodrębnieniem z vektor8 łańcuchów występujących tylko raz i wprowadzeniu ich do vektor9.

Poniżej kod:

C/C++
void SummSell()
{
    klient kupn; //struktura
    const char * plik = "Kontrahenci.txt";
    fstream to_screan( plik, ios_base::in | ios_base::out | ios_base::binary | ios_base::beg );
    if( to_screan.is_open() )
    {
        while( to_screan.read(( char * ) & kupn, sizeof( kupn ) ) )
             vektor8.push_back( kupn );
       
        unsigned int j, k;
        unsigned int i = 1;
        unsigned int tempi = 0;
        for( j = 0; j < vektor8.size(); j++ )
        { tempi++;
           
            for( i = tempi; i < vektor8.size(); i++ )
            {
                if( strcmp( vektor8[ j ].nazwa, vektor8[ i ].nazwa ) == 0 ) // j - indeks łańcucha 0 - go, i - indeks łańcucha 1- go
                {
                    vektor8[ j ].kg += vektor8[ i ].kg; // sumowanie pól struktury kg
                    vektor8[ j ].koszt += vektor8[ i ].koszt; // sumowanie pól struktury koszt
                    vektor9.push_back( vektor8[ j ] ); // zapis do vektor9
                }
               
            }
           
        }
       
        for( k = 0; k < vektor9.size(); k++ )
        {
            cout << vektor9[ k ].nazwa << endl;
            cout << vektor9[ k ].kg << endl;
            cout << vektor9[ k ].koszt << endl;
        }
       
        vektor8.clear();
        vektor9.clear();
       
    }
    else
    {
        cout << "Brak danych w bazie!!!." << endl;
        Obsluga_menu( kupn );
    }
}
P-104314
Kefirek
Temat założony przez niniejszego użytkownika
» 2014-02-09 17:57:04
Dodam, że kolejność elementów nie ma znaczenia.
P-104325
Kefirek
Temat założony przez niniejszego użytkownika
» 2014-02-09 21:57:26
.... chyba za trudne???
P-104341
MrPoxipol
» 2014-02-09 22:09:54
Po prostu użyj ifa? I zrozum, że forum to nie miejsce, w którym możesz komuś rozkazać, żeby Ci pomógł. Jest niedziela, nie każdy musi siedzieć przed komputerem i rozwiązywać zadania innych, to że nie dostałeś odpowiedzi może wynikać po prostu z tego, że ktoś po prostu nie miał czasu się przyjrzeć, a swoją drogą Twoje zachowanie jest podobne do zachowania małego dziecka, któremu mamusia nie kupiła zabawki. Proszę..starajmy się trzymać jako taki poziom na tym forum, proszę..
P-104344
Kefirek
Temat założony przez niniejszego użytkownika
» 2014-02-09 22:17:23
To może prościej(tak przynajmniej mi się wydaje)

wektor1 wypełniony stringami.
Jak znaleźć te same stringi w wektorze 1  i wprowadzić je jednorazowo do innego wektora(wektor2) oraz wprowadzić stringi które występowały jednokrotnie w wektorze1 do wektora2
np:

wektor1 wypełniony: A, B, C, B, A
wynik działania funkcji:

wektor2 powinien zawierać: A, B, C.

POzdrawiam
P-104346
MrPoxipol
» 2014-02-09 22:26:54
Musisz przejść po wszystkich elementach wektora i za każdym razem szukać za pomocą std::find() (http://stackoverflow.com/a​/571405/2221315), czy występuje element więcej niż 1 raz, jeśli nie występuje - dodajesz go do wektora nr 2.
P-104351
Kefirek
Temat założony przez niniejszego użytkownika
» 2014-02-09 22:40:38
Do MrPoxipol:


I zrozum, że forum to nie miejsce, w którym możesz komuś rozkazać, żeby Ci pomógł.

Przykro mi MrPoxipol, że to tak odebrałeś, bo nie taka była moja intencja tego postu. Może faktycznie niektórzy są zmęczeni w niedzielę i nie mają czasu zająć się moim postem i ja to rozumiem.


.... chyba za trudne???
....należy rozumieć - myślałem, że  będzie  pestką   rozwiązanie tego  dla kogoś z tego forum. Myślę tu o bardziej zaawansowanych programistach(ekspertów). Może faktycznie źle się wstrzeliłem z tym postem???.
Ja jestem początkujący. Walczę z tym tematem parę dni i już mi ręce opadają dlatego zdecydowałem się zwrócić o pomoc.
Pozdrawiam
Kefirek
P-104353
Kefirek
Temat założony przez niniejszego użytkownika
» 2014-02-09 22:43:06
Dzięki za info MrPoxipol
Pozdrawiam
P-104355
« 1 » 2 3
  Strona 1 z 3 Następna strona