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

zad5 matura 2013, pkt: c

Ostatnio zmodyfikowano 2014-04-01 21:41
Autor Wiadomość
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 ;/

C/C++
#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 )
                {
                    //TUTAJ JUŻ SIE ZAGUBILEM ;<
                }
               
            }
           
        }
        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;
}
P-107560
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.
P-107578
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.
P-107584
czosnek17
» 2014-04-01 21:07:52
To zadanie jest do zrobienia pisemnie czy na komputerze?
P-107589
michal11
» 2014-04-01 21:41:09
Raczej na komputerze bo są dołączone pliki i mgrD wstawił kod.
P-107592
« 1 »
  Strona 1 z 1