E
Eugene
//При этом всем выполнить еще и для бинарного файла...программа почти работает,но нужно изменить функцию "read_file" в ней сам механизм нахождения самого близкого числа к целому,думаю,что нужно найти разность от целой части числа,умноженной на тысячу минус %1000 и тоже самое другого числа,у кого меньше,тот и ближе к своему целому оналогу...но я не могу записать ,чтобы цикл считался справа на лево и слева на право....помогите,плиз....
ВОТ САМА ПРОГРАММА
ВОТ САМА ПРОГРАММА
C++:
#include <stdlib.h>
#include <time.h> // for time()
#include <fstream>
#include <iostream>
#include <math.h>
using namespace std;
const int p=5;
// создание файла cлучайных целых чисел
void create(ofstream &outfile, int n);
void read_file(ifstream &infile,int n);
int main()
{
srand((unsigned)time(NULL));
int n;//kol-vo chisel v file
n=p;
// cоздадим текстовый файл cл. чисел
ofstream outfile("file.txt");
if (!outfile)
{cout<<"error1"<<endl;
return 1;
}
create(outfile, n);
outfile.close();
ifstream infile("file.txt");
read_file(infile,n);
return 0;
}
// создание текстового файла cлучайных целых чисел
void create(ofstream &outfile, int n)
{
for (int i = 1; i <= n; i++)
{
double v= sqrt(rand()%100);
outfile<<v<<endl; // запись целых чисел в файл
// каждое число в новой строке
cout<<v<<endl;
}
}
void read_file(ifstream &infile,int n)//p eto razmer massiva
{
double v,max=0.009,right=0;
int i=0;
double a[p];
infile>>v;
while (!infile.eof())
{
a[i]=v;
infile>>v;
i++;
}
for (i=1;i<n;i++)
{
if ((static_cast <int> (a[i]*1000))-(a[i]*1000)<(static_cast <int> (a[i+1]*1000))-(a[i+1]*1000))
{
right=a[i];
}
else continue;
for (i=(n-1);i>=1;i++)
{
if ((static_cast <int> (a[i]*1000))-(a[i]*1000)<(static_cast <int> (a[i-1]*1000))-(a[i-1]*1000))
{
if (a[i]<right)
{
right=a[i];
}
}
else continue;
}
cout<<"samoe blizkoe chislo k zelomu"<<right<<endl;
}
}