zad5 matura 2013, pkt: c
Ostatnio zmodyfikowano 2014-04-01 21:41
mgrD Temat założony przez niniejszego użytkownika |
zad5 matura 2013, pkt: c » 2014-04-01 13:13:44 Witam, rozwiązuje maturę z 2013r i mam kłopot z podpunktem C z zadania 5 z poziomu podstawowego: Zadanie 5. Znajomi i ich zainteresowania(10 pkt)Baltazar spisuje informacje o swoich znajomych i ich hobby, które przechowuje w plikach. W każdym pliku informacje zapisane w wierszach sąrozdzielone pojedynczymi znakamiodstępu. Plik Osoby.txtzawiera 200 wierszy z informacjami o znajomych:Id_osoba,Imię,Nazwisko. Przykład: o001 Jan Nadolicki o002 Anna Augustowska Plik Hobby.txtzawiera 50 wierszy z informacjami o rodzajach hobby: Id_hobby,Hobby. Przykład: h001 numizmatyka h002 historia Plik Ma_Hobby.txt przechowuje w 400 wierszach informacje o tym, czym interesująsięznajomi Baltazara: Id, Id_osoba, Id_hobby.Przykład: 1 o152 h005 2 o065 h043 Wykorzystując dane zawarte w tych plikach oraz dostępne narzędzia informatyczne, wykonajponiższe polecenia. Odpowiedzi zapisz w plikuzadanie5.txt, a odpowiedźdo każdego podpunktu poprzedź literą oznaczającą ten podpunkt. a)Podaj wszystkie rodzaje hobby rozpoczynające się od litery „k”. b)Podaj, ile osób interesuje się majsterkowaniem. c)Utwórz zestawienie imion i nazwisk tych osób, których zainteresowaniem jest programowanie. Zestawienie posortuj niemalejąco, alfabetycznie według nazwisk. d)Utwórz zestawienie imion i nazwisk tych osób, które mająwięcej niż4 rodzaje hobby. Zestawienie posortuj niemalejąco, alfabetycznie według nazwisk, a tam, gdzie nazwiska się powtarzają– według imion. e)Podaj wszystkie rodzaje hobby, którymi interesuje się największa liczba osób.
Dwa pierwsze podpunkty są banalne, z trzecim mam już kłopot i prosiłbym o porady jakieś, mój pomysł to: wczytanie wszystkich nazwisk, potem w drugiej pętli pobrać id osoby, która interesuje się programowaniem i...dalej się pogubiłem i już nie wiem ;/ #include <iostream> #include <fstream> #include <string>
#define _majsterkowanie "h042" #define _programowanie "h013"
int main() { std::fstream hobby, ma_hobby, osobytxt; std::ofstream out; int hobby_na_k = 0, majsterkowanie = 0; std::string t, t1, osoby[ 200 ]; hobby.open( "Hobby.txt" ); ma_hobby.open( "Ma_Hobby.txt" ); osobytxt.open( "Osoby.txt" ); out.open( "zadanie5.txt" ); for( int j = 0; j < 200; j++ ) { getline( osobytxt, osoby[ j ] ); } while( getline( ma_hobby, t1 ) ) { std::size_t found = t1.find( _majsterkowanie ); if( found != std::string::npos ) majsterkowanie++; std::size_t found1 = t1.find( _programowanie ); if( found1 != std::string::npos ) { t1.erase( t1.begin() + 4, t1.end() ); for( int i = 0; i < 200; i++ ) { found1 = osoby[ i ].find( t1 ); if( found1 != std::string::npos ) { } } } t1.clear(); } while( getline( hobby, t ) ) { if( t[ 5 ] == 'k' || t[ 5 ] == 'K' ) hobby_na_k++; } std::cout << "Hobby na k jest: " << hobby_na_k << "\nMajsterkowaniem interesuje sie: " << majsterkowanie; out << "A) = " << hobby_na_k << "\nB) Majsterkowaniem interesuje sie: " << majsterkowanie << " osob."; return 0; }
|
|
Adik80 |
» 2014-04-01 18:43:12 Tu chyba lepiej zaczac od znalezienia hobby o naziwe 'programowianie' potem z my_hobby wylawiasz wiersze gdzie jest to hobby_id, a na koncu czytasz nazwiska, zapamietujesz te o pasujacym id, na koncu sortujesz i wyswietlasz. |
|
michal11 |
» 2014-04-01 19:45:50 Najwygodniej będzie stworzyć sobie strukturę która będzie przechowywała odpowiednie informacje w tablicach ew. zmiennych i na czymś takim pracować. Może to ci się przyda http://pastebin.com/B3UakPBK jest to rozwiązana jakaś stara matura, ale zadanie chyba podobne. |
|
czosnek17 |
» 2014-04-01 21:07:52 To zadanie jest do zrobienia pisemnie czy na komputerze? |
|
michal11 |
» 2014-04-01 21:41:09 Raczej na komputerze bo są dołączone pliki i mgrD wstawił kod. |
|
« 1 » |