Antykwariat – Omówienie zadania – Własne sortowanie

Szczegółowe omówienie zadania Antykwariat:

Link do powyższego omówienia zadania Antykwariat: https://youtu.be/AMouETtFmhg?t=2215
Link do treści zadania Antykwariat i możliwości umieszczania rozwiązań:
https://szkopul.edu.pl/problemset/problem/ant/site/

Zadanie Antykwariat pokazuje jak sortować według własnych kryteriów w C++: https://youtu.be/AMouETtFmhg?t=3973


Jak się uczyć na podstawie tego zadania? https://youtu.be/QgLyXYmFQeU?t=2019
Pamiętaj by zajrzeć max 1 raz – wtedy się rozwijasz: https://youtu.be/pkLXuuOe_qA?t=3625

Lista zadań z rozwiązaniami: https://oki.org.pl/lista-zadan-materialy.php
Samouczek – przygotowanie do Olimpiad: https://oki.org.pl/tutorial/

Zajęcia: https://oki.org.pl/harmonogram-zajec/
Informacje o zajęciach: https://oki.org.pl/newsletter.php

Warto startować w Olimpiadzie Informatycznej!
https://youtu.be/K7fZfJ8nN6A?t=109


Kod C++ programu Antykwariat, który jest omówiony w powyższym filmie i który otrzymuje 100%


#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

struct typ_ksiazka {
 string tytul;
 int liczba_stron;
 int czy_dostepna; 
};

bool Czy_t1_ZLewejStrony (const typ_ksiazka &t1, const typ_ksiazka &t2) {
 if ( t1.czy_dostepna != t2.czy_dostepna )
    return t1.czy_dostepna > t2.czy_dostepna; //z lewej strony 1 (ksiazka dostepna)
//jesli tu jestemy to znaczy ze obydwie ksiazki sa tak samo dostepne
//albo obydwie niedostepne (0) albo obydwie dostepne (1) 	
 if ( t1.liczba_stron != t2.liczba_stron )
    return t1.liczba_stron < t2.liczba_stron; //z lewej strony ksiazka z mniejsza liczba stron
//jesli tu jestemy to pozycje w vectorze maja ta samo dostepnosc i ta sama liczbe stron  
 return t1.tytul < t2.tytul; //z lewej strony ksiazka ktora ma mniejszt tytul
    
}

int main() {
 ios_base::sync_with_stdio(0);
 cin.tie(0);
 cout.tie(0);

 int liczba_ksiazek, i;
 vector<typ_ksiazka> ksiazki;

 cin >> liczba_ksiazek; 
 
 ksiazki.resize(liczba_ksiazek);
 for (i=0; i<liczba_ksiazek; ++i) {
    cin >> ws;  //pomin przypadkowe biale znaki
    getline(cin, ksiazki[i].tytul); //wczytujemy cala linie
    cin >> ksiazki[i].liczba_stron;
    cin >> ksiazki[i].czy_dostepna;
 }

 sort (ksiazki.begin(), ksiazki.end(), Czy_t1_ZLewejStrony );

 for (i=0; i<(int)ksiazki.size(); ++i) {
    cout << ksiazki[i].czy_dostepna << " ";
    cout << ksiazki[i].tytul << " "; 
    cout << ksiazki[i].liczba_stron << "\n";
 }
 
 return 0;
}
Kod C++ programu Antykwariat, który jest omówiony w powyższym filmie i który otrzymuje 100%

 

 

Nie dodano jeszcze komentarza, rozpocznij dyskusję pierwszy.

Dodaj komentarz