Książka telefoniczna – wyszukiwanie po imieniu i nazwisku

0

Witam,

Dopiero zaczynam swoją przygodę z programowaniem, chcę napisać prosty program, który będzie miał następujące funkcje: Wyświetalanie wszystkich osób w ksiązce, wyszukiwanie po nazwisku i wyszukiwanie po imieniu.
Zrobiłam klase, 4 przykładowe osoby, menu wyboru oraz wypisywanie na ekranie wszystkich rekordów.

Nie mam pojęcie jak zabrać się za wyszukiwanie po nazwisku i wyszukiwanie po imieniu, proszę o pomoc :)

Z góry dziękuję

#include <iostream>

using namespace std;

class MojTelefon {
    //atrybuty
public:
 string imie;
 string nazwisko;
 long telefon;
    //metody

};

int main()
{

        MojTelefon osoba[4];
        osoba[0].imie= "Ala";
        osoba[0].nazwisko= "Nowa";
        osoba[0].telefon= 222123123;
        osoba[1].imie= "Adam";
        osoba[1].nazwisko= "Nowak";
        osoba[1].telefon= 222321321;
        osoba[2].imie= "Ala";
        osoba[2].nazwisko= "Kowalska";
        osoba[2].telefon= 222456654;
        osoba[3].imie= "Piotr";
        osoba[3].nazwisko= "Kowalski";
        osoba[3].telefon= 222789987;


    int tmp = 0;


        cout << "\n\t Moj Telefon" << endl;
        cout << "" << endl;
        cout << "Wybierz z menu" << endl;
        cout << "" << endl;

        cout << "\t 1. Wyszukaj osobe po nazwisku" << endl;
        cout << "\t 2. Wyszukaj osobe po nr. telefonu" << endl;
        cout << "\t 3. Pokaz wszystkie osoby" << endl;
        cout << "\t 0. Zakoncz program" << endl;
        cin >> tmp;
        cout << "\t << Wybrales/as opcje " << tmp << " >> " << endl;
        cout << "" << endl;


            switch( tmp )
        {
        case 0:
            cout << "\t << KONIEC PROGRAMU >>" << endl;
            break;

        case 1:
            // wyszukiwanie po nazwisku
            break;

        case 2:
            // wyszukiwanie po nr tel
            break;

        case 3:
        cout<< "1. "<<osoba[0].imie<<" "<<osoba[0].nazwisko<<" "<<osoba[0].telefon<<endl;
        cout<< "2. "<<osoba[1].imie<<" "<<osoba[1].nazwisko<<" "<<osoba[1].telefon<<endl;
        cout<< "3. "<<osoba[2].imie<<" "<<osoba[2].nazwisko<<" "<<osoba[2].telefon<<endl;
        cout<< "4. "<<osoba[3].imie<<" "<<osoba[3].nazwisko<<" "<<osoba[3].telefon<<endl;

        break;
        }



    return 0;
}

0

Dzięki, zaraz biorę się za lekture,

Jeszcze pytanie, czy case 3 można zapisać w postaci jakiejś pętli ? Przy 4 pozycjach jest ok ale jak będzie np 50 osób w książce to już trochę pracochłonne.
Czy można też zdefiniować sobie np tą funkcje gdzieś przed funkcją main i potem ją tylko wywołać ? Jeśli tak to w jaki sposób ?

pozdrawiam

0

Ad.1) Można. Najładniej by to wyglądało z range-loop, std::vector i operator<<. Ale skoro wolisz surowe tablice to:

for( int i = 0; i < 4; ++i ) {
  std::cout << osoba[ i ].imie << " " << osoba[ i ].nazwisko << " " << osoba[ i ].telefon << "\n";
}

Ad.2) Można. Jak? Dokładnie tak jak sama napisałaś. (oprócz pomylenia definicji z deklaracją)

void jakasfunkcja( int parametr1, const std::string& parametr2 );

int main( int argc, char** argv )
{
  /* ...jakis kod... */
  jakasfunkcja( 1, "tekst" );
  /* ...jakis kod... */
}

void jakasfunkcja( int parametr1, const std::string& parametr2 )
{
  /* ...ciało funkcji... */
}

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