Cześć,
Chcę napisać kod, który działa następująco:
a) program działa dopóki nie podamy 0,
b) jeżeli podawane liczby(a) są większe od zera to zapisuje je,
c) jeżeli podana liczba jest mniejsza od zera to wypisuje wartość bezwzględną liczb największych z już podanych i je zapomina.
W kodzie zaznaczyłem gdzie pojawia się problem i program się wykrzacza. Ktoś na to spojrzy i mi pomoże? Z góry dzięki :)
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdlib>
using namespace std;
int main()
{
int a; int i; //a = podawana liczba, i = licznik ile juz dodano
vector <int> tab;
cin >> a;
int ile;
while(a != 0)
{
if(a < 0 && i > 0)
{
ile = abs(a);
if(ile <= i)
{
sort(tab.begin(), tab.end());
for(int a = tab.size() - 1; a >= tab.size() - ile; a--)
{
cout << tab[a] << " ";
i--;
}//w tym miejscu dziala i wypisuje poprawnie
for(a = 0; a < ile; a++)
{
tab.pop_back();//po wypisaniu elementu usuwa tyle elementow ile wypisalo
}
}
else
{
//jezeli ile > i juz nie dziala
sort(tab.begin(), tab.end());
for(int b = tab.size() - 1; b >= 0; b--)
{
cout << tab.at(b) << " ";
i--;
}
tab.clear();
}
}
else
{
tab.push_back(a);
i++;
}
cin >> a;
}
return 0;
}