Задача: необходимо отсортировать массив целых чисел по возрастанию. т.к. изначально кол-во элементов массива неизвестно то я воспользовался классом vector из STL. Почти все работает, за исключением того что при сортировке пропадают отрицательные числа. Не могу понять в чем ошибка. Собственно код:
#include "stdafx.h"
#include <string>
#include <iostream>
#include <vector>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
while (true)
{
int i;
vector<int> a(2);
for (i = 1; i != 0; i++)
{
cout << "enter integer: \n";
int c;
cin >> c;
if (c == 777) //
break;
else
{
a[i] = c;
a.resize(a.size() + 1);
}
}
for (int y = 1; y < a.size()-1; y++)
{
int min = y;
for (int j = y+1; j < a.size(); j++)
if (a[j] < a[min])
min = j;
int buf = a[y];
a[y] = a[min];
a[min] = buf;
}
for (int k = 2; k < a.size(); k++)
{
cout << a[k] << " ";
}
cout << '\n' << '\n';
}
return 0;
}
#include "stdafx.h"
#include <string>
#include <iostream>
#include <vector>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
while (true)
{
int i;
vector<int> a(2);
for (i = 1; i != 0; i++)
{
cout << "enter integer: \n";
int c;
cin >> c;
if (c == 777) //
break;
else
{
a[i] = c;
a.resize(a.size() + 1);
}
}
for (int y = 1; y < a.size()-1; y++)
{
int min = y;
for (int j = y+1; j < a.size(); j++)
if (a[j] < a[min])
min = j;
int buf = a[y];
a[y] = a[min];
a[min] = buf;
}
for (int k = 2; k < a.size(); k++)
{
cout << a[k] << " ";
}
cout << '\n' << '\n';
}
return 0;
}