Тема: Последовательный контейнер vector. Функции члены: push_back(), insert(), erase().
Прочитать значения вектора чисел с плавающей точкой из текстового файла. Удалить из вектора все элементы, у которых дробная часть содержит больше 3-х значащих цифр. Перед каждым элементом, целая часть которого является нечетным числом, вставить значение его квадрата.
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cstdlib>
#include <vector>
using namespace std;
float sq(float x){return x*=x;}
bool f1 (double x)
{
if ((x*1000-(int)(x*1000))==0)
return true;
else
return false;
}
bool f2(float x){
if((int)x%2) return 0;
else return 1;
}
void main(){
ifstream in("n.txt");
vector<float> v;
float x;
while(in>>x,!in.eof())
v.push_back(x);
copy(v.begin(),v.end(),ostream_iterator<float>(cout," "));
cout<<endl;
vector<float>::iterator i=v.begin();
int cel=0;
for(i=v.begin(); i!=v.end()

cout<<(*i*1000)-(long)(*i*1000)<<endl;
if(f1(*i)) v.erase(i);
else ++i;
}
copy(v.begin(),v.end(),ostream_iterator<float>(cout," "));
cout<<"ok2"<<endl;
vector<float>::iterator s=v.begin();
for(s=v.begin(); s!=v.end();++s)
{
if(f2(*s)) {v.insert(s,sq(*s)); ++s;}
}
copy(v.begin(),v.end(),ostream_iterator<float>(cout," "));
}