Waňov web

PB161 Jazyk C++ - 4. cvicení

Výber lidí narozených v daném roce

Zadání:

Vytvorte program, který bude z príkazové rádky volán vzdy s jedním parametrem. Tímto parametrem bude císlo predstavující letopocet, pro který se má ze seznamu lidí predaného na standardním vstupu vytvorit setrídený seznam tech, kterí se v tomto roce narodili. Jednotlivé záznamy vstupního seznamu mají následující tri atributy práve v tomto poradí: jméno, príjmení a rok narození.

Pozadavky:

Poznámky:


Riešenie:


narozeni.h
#include<iostream>
#include<cstdlib>
#include<map>
#include<vector>
using namespace std;

vector<string> select_people(multimap<string, int> &people, int rok);




narozeni.C
#include "narozeni.h"

vector<string> select_people(multimap<string, int> &people, int rok)
 {
    vector<string> vystup;
    vector<string>::iterator t;
    multimap<string, int> zoznam;
    multimap<string, int>::iterator p;

  t=vystup.begin();
  for (p=people.begin(); p!=people.end(); ++p)
     if (p->second == rok) vystup.insert(vystup.end(), p->first);

  return vystup;
 }




narozenimain.C
#include "narozeni.h"

//==========================MAIN================================================
int main(int argc,char *argv[])
{
 int rok_nar;
 string meno,priezvisko;
 long rok;
 multimap<string, int> zoznam;
 multimap<string, int>::iterator p;
 vector<string> vystup; 
 vector<string>::iterator t;  

 if(argc==2) // bol zadany 1 parameter   // ========testovanie argumentu========
    {
    for(int i=0; argv[1][i]!='\0'; i++)
     if (!isdigit(argv[1][i]))
     {
       cout << '\'' << argv[1] << '\'' << " nie je platny datum narodenia!!!\n";
       return 1;
     }
    }
  else
    {
    cout<<"Zadaj spravne parameter: <nazov programu> <rok>!"<<endl;
    return 2;
    };
rok=strtol(argv[1],NULL,10);

//========================nacitanie vstupu======================================
 while(cin >>meno >> priezvisko >> rok_nar) 
   {zoznam.insert(make_pair(priezvisko+" "+meno,rok_nar));}
//==========================VYSTUP==============================================
 vystup=select_people(zoznam,rok);  
              //vystup netreba triedit pretoze ho multimap+iterator uz utriedil 

 cout<<endl;
 if (vystup.size()==0)
    cout << "V roku "<<rok<<" sa nenarodil nikto"<<endl;
 else
    {cout<<"V roku "<<rok <<" boli narodeny:"<<endl;
     for (t=vystup.begin(); t!=vystup.end(); ++t)
       cout << *t <<endl;
    }

 return 0;
}


Nahor