• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Biblioteka <vector>. Jak wypisać wyniki malejąco?

Object Storage Arubacloud
0 głosów
220 wizyt
pytanie zadane 28 lipca 2016 w C i C++ przez SebekMakaron Obywatel (1,290 p.)

Witam potrzebuje pomocy z rozwiązaniem tego zadania ogólnie wyświetla wyniki dodaje kolejne elementy. Potrzebuje wypisać wyniki od największego do najmniejszego a nie w kolejności dodawanej. Mam dwa przypuszczenia jedno to sortowanie a drugie to dodanie w odpowiednie miejsce elementu (wciśniecie go pomiędzy już istniejące elementy). Problem polega na tym że nie wiem jak napisać coś w tym stylu.

#include <iostream>
#include <vector>

using namespace std;

void Wypisz(vector<int> lista)
{
     cout<<endl<<"Lista wynikow:"<<endl;
     for(vector<int>::iterator itr = lista.begin(), koniec = lista.end();
           itr != koniec; itr++)
           {
                cout<<*itr<<endl;
           }
     cout<<endl;
}

int main()
{
     vector<int> wynik;
     bool prawda = true;
     int i = 0;
     int score, wybor;

     while(prawda)
     {
          cout<<"1.Dodaj nowy wynik"<<endl<<"0.Wyjscie"<<endl<<"Wybor: ";
          cin>>wybor;

          if(wybor == 1)
          {
               cout<<"Podaj wynik: ";
               cin>>score;
               wynik.push_back(i);
               wynik[i] = score;
               i++;
               Wypisz(wynik);
          }else
               prawda = false;
     }

     wynik.clear();
     return 0;
}

 

2 odpowiedzi

+3 głosów
odpowiedź 28 lipca 2016 przez Patrycjerz Mędrzec (192,320 p.)
wybrane 28 lipca 2016 przez SebekMakaron
 
Najlepsza
  1. Użyj funkcji sort.
  2. Użyj iteratora odwróconego (reverse_iterator), aby wypisać dane od końca.
komentarz 28 lipca 2016 przez SebekMakaron Obywatel (1,290 p.)

Oto pełna lista kroków:

1. #include <algorithm>

2. std::sort(lista.begin(), lista.end()); Tak, tylko tyle

3. std::reverse(lista.begin(),lista.end()); 

Zaznacze w tym miejscu że pomoc udzielana w takim stylu jak zrobił to 'Patrycjerz' jest naprawdę przydatna pozwala pomyśleć i samemu odnaleźć potrzebne funkcjie, wstawić odpowiednie argumenty i dzięki temu rozwijać się. Dzięki za pomoc.

+3 głosów
odpowiedź 28 lipca 2016 przez MetGang Nałogowiec (34,360 p.)

Po pierwsze, zawsze przesyłaj std::vector jak i inną klasę złożoną (de facto wszystko poza prymitywami) za pomocą const referencji (const std::vector<int>& vec). Nie ma sensu go kopiować tylko do wypisania.

Co do sortowania na vektorze:

std::vector<int> v = {1,8,4,5,6};
std::sort(v.begin(),v.end(),[](int x, int y){ return x>y; });

Lub możesz też użyć setu:

std::set<int,std::greater<int>> s = {1,8,4,5,6};

Oba po wypisaniu dadzą wynik 8 6 5 4 1.

komentarz 28 lipca 2016 przez adrian17 Ekspert (344,860 p.)

Odrobinę krócej:

std::sort(v.begin(), v.end(), std::greater<>());

 

Podobne pytania

0 głosów
1 odpowiedź 225 wizyt
pytanie zadane 21 lutego 2016 w C i C++ przez Ziuziek Mądrala (5,140 p.)
0 głosów
1 odpowiedź 127 wizyt
pytanie zadane 24 lutego 2016 w C i C++ przez Ziuziek Mądrala (5,140 p.)
0 głosów
2 odpowiedzi 305 wizyt
pytanie zadane 31 marca 2017 w C i C++ przez Milesq Nałogowiec (32,020 p.)

92,579 zapytań

141,432 odpowiedzi

319,663 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...