Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.37 KB | None | 0 0
  1. //------------------------------------------------
  2. //  TIE-02200 Ohjelmoinnin peruskurssi -mallikoodi
  3. //  Copyright © 2016  opersk@cs.tut.fi
  4. //------------------------------------------------
  5.  
  6. #include <iostream>
  7. #include <iomanip>
  8. #include <vector>
  9. #include <string>
  10. #include <algorithm>
  11.  
  12. using namespace std;
  13.  
  14.  
  15. struct Opiskelija {
  16.     string nimi;
  17.     unsigned int opnum;
  18. };
  19.  
  20.  
  21. bool sort_opnimi(const Opiskelija* eka, const Opiskelija* toka){
  22.     if (eka->nimi < toka->nimi)
  23.         return true;
  24.     else{
  25.         return false;
  26.     }
  27.  
  28. }
  29.  
  30. // ***** TODO *****************************************************************
  31. // Toteuta tähän kohtaan vertailufunktio algorithm-kirjaston
  32. // sort-funktiota varten.  Funktion on osattava vertailla kahta
  33. // Opiskelija-tyyppistä struct:ia siten, että aakkosissa aiemmin
  34. // oleva nimi-kenttä tulkitaan pienemmäksi struct:iksi.
  35. // ****************************************************************************
  36.  
  37. bool sort_opnmr(const Opiskelija* eka, const Opiskelija* toka){
  38.     if (eka->opnum < toka->opnum)
  39.         return true;
  40.     else{
  41.         return false;
  42.     }
  43.  
  44. }
  45. // ***** TODO *****************************************************************
  46. // Toteuta tähän kohtaan vertailufunktio algorithm-kirjaston
  47. // sort-funktiota varten.  Funktion on osattava vertailla kahta
  48. // Opiskelija-tyyppiseen struct:iin osoittavaa osoitinta siten,
  49. // että pienemmäksi tulkitaan se niistä, joka osoittaa opiskelija-
  50. // numeroltaan pienempään opiskelijaan.
  51. // ****************************************************************************
  52.  
  53.  
  54.  
  55. int main() {
  56.     vector<Opiskelija> oprek = {
  57.         { "Teekkari, Tiina",           52401 },
  58.         { "Ylikuuskajaskari, Jaska",  186112 },
  59.         { "Repolainen, Reijo",        117118 },
  60.         { "Teekkari, Teemu",          196196 },
  61.         { "Santaholma, Santtu",       173421 },
  62.     };
  63.  
  64.     vector<Opiskelija*> opiskelijaosoittimet = { };
  65.  
  66.     // Laitetaan opiskelijaosoittimet-vektoriin kaikkien oprek:iin
  67.     // talletettujen opiskelijoiden muistiosoitteet.
  68.     for ( vector<Opiskelija>::size_type i = 0; i < oprek.size(); ++i ) {
  69.         opiskelijaosoittimet.push_back( &oprek.at(i) );
  70.     }
  71.  
  72.  
  73.     sort(oprek.begin(), oprek.end(), sort_opnimi);
  74.     // ***** TODO *************************************************************
  75.     // Käytä tässä kohdassa algorithm-kirjaston sort-funktiota siten,
  76.     // että saat oprek-vektorissa olevat opiskelijat järjestetty
  77.     // nimi-kentän mukaiseen kasvavaan aakkosjärjestykseen.
  78.     // ************************************************************************
  79.  
  80.     sort(opiskelijaosoittimet.begin(), opiskelijaosoittimet.end(), sort_opnimi);
  81.     // ***** TODO *************************************************************
  82.     // Käytä tässä kohdassa algorithm-kirjaston sort-funktiota siten,
  83.     // että saat opiskelijaosoittimet-vektorissa olevat osoittimet
  84.     // järjestettyä siten, että ne ovat osoittamiensa opiskelijoiden
  85.     // mukaisessa kasvavassa opiskelijanumerojärjestyksessä.
  86.     // ************************************************************************
  87.  
  88.  
  89.  
  90.     //------------------------------------------------------------------//
  91.     // Tässä kohdassa kumpikin vektori on järjestetty oman vertailu-    //
  92.     // kriteerinsä perusteella kasvavaan järjestykseen. Tätä tilannetta //
  93.     // havainnollistetaan tehtävänannon kuvassa, joka esittää           //
  94.     // lajittelun jälkeistä lopputilannetta.                            //
  95.     //------------------------------------------------------------------//
  96.  
  97.  
  98.  
  99.     // Tulostetaan opiskelijoiden tiedot näytölle kuumankin edellä
  100.     // lajitellun vektorin avulla, jotta nähdään onko lajittelu onnistunut.
  101.  
  102.     cout << "Opiskelijat nimen mukaisessa järjestyksessa:" << endl
  103.          << "--------------------------------------------" << endl;
  104.     for ( Opiskelija opisk : oprek ) {
  105.         cout << setw(24) << left << opisk.nimi
  106.              << setw(6) << right << opisk.opnum << endl;
  107.     }
  108.  
  109.     cout << endl;
  110.  
  111.     cout << "Opiskelijat numeron mukaisessa järjestyksessa:" << endl
  112.          << "----------------------------------------------" << endl;
  113.     for ( Opiskelija* opisk_ptr : opiskelijaosoittimet ) {
  114.         cout << setw(24) << left << opisk_ptr->nimi
  115.              << setw(6) << right << opisk_ptr->opnum << endl;
  116.     }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement