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: void SummSell() { klient kupn; 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 ) { vektor8[ j ].kg += vektor8[ i ].kg; vektor8[ j ].koszt += vektor8[ i ].koszt; vektor9.push_back( vektor8[ j ] ); } } } 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 ); } }
|
|
Kefirek Temat założony przez niniejszego użytkownika |
» 2014-02-09 17:57:04 Dodam, że kolejność elementów nie ma znaczenia. |
|
Kefirek Temat założony przez niniejszego użytkownika |
» 2014-02-09 21:57:26 .... chyba za trudne??? |
|
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ę.. |
|
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 |
|
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. |
|
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. ....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 |
|
Kefirek Temat założony przez niniejszego użytkownika |
» 2014-02-09 22:43:06 Dzięki za info MrPoxipol Pozdrawiam |
|
« 1 » 2 3 |