Не могу задать дробное значение при заполнении массива C++
Не могу понять в чем ошибка, код скорее всего очень кривой, но тем не менее с не дробными числами при заполнении массива он работает, как только ввожу в значение массива дробное число получается вот такое чудо
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
int first;
int last;
int* mas, n, sum;
sum = 0;
cout << "Введите размер массива: ";
cin >> n;
mas = new int[n];
for (int i = 0; i < n; i++)
{
cout << "mas[" << i << "]= ";
cin >> mas[i];
}
for (int i = 0; i < n; i++)
{
if (mas[i] % 2 == 0)
sum += mas[i];
}
cout << "Сумма четных элементов массива равна " << sum;
for (int i = 0; i < n; i++)
if (mas[i] < 0)
{
first = i;
break;
}
for (int i = n - 1; i >= 0; i--)
if (mas[i] < 0)
{
last = i;
break;
}
int sum1 = 0;
for (int i = first + 1; i < last; i++)
sum1 += mas[i];
cout << " \nCумма элементов, находящихся между первым и последним отрицательным элементом равна " << sum1;
for (int i = 0; i < n; i++)
{
if (mas[i] < 1 && mas[i] >= -1)
{
mas[i] = 0;
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n - 1 - i; j++)
{
if (mas[j] == 0)
{
mas[j] = mas[j + 1];
mas[j + 1] = 0;
}
}
}
cout << "\nСжатый массив: ";
for (int j = 0; j < n; j++)
{
cout << mas[j] << " ";
}
cout << endl;
return 0;
}