Другие языки программирования и технологии

Сформировать файл из действительных чисел. Найти: наибольшее из значений модулей компонентов с четными номерами. С++

Сформировать файл из действительных чисел. Найти: наибольшее из значений модулей компонентов с четными номерами. С++
VJ
Vadim Jarina
531
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cmath>

using namespace std;

int main(int argc, char *argv[])
{
srand(static_cast <unsigned> (time(NULL)));
fstream ioFile("float.dat", ios_base::binary | ios_base::out);
int n = rand() % 191 + 10;
cout.precision(3);
for (int i = 0; i < n; i++)
{
double x = static_cast <double> (rand()) / (RAND_MAX + 1) * 200 - 100;
ioFile.write(reinterpret_cast <char*> (&x), sizeof(double));
}
ioFile.close();
setlocale(LC_ALL, "Russian");
cout << "Создан файл float.dat. Его содержимое: " << endl;
ioFile.open("float.dat", ios_base::binary | ios_base::in);
n = 0;
int iMax;
double Max = -1;
while (!ioFile.eof())
{
double x;
ioFile.read(reinterpret_cast <char*> (&x), sizeof(double));
if (!ioFile.eof())
{
cout << fixed << setw(8) << x;
if (!(++n & 1) && fabs(x) > Max)
{
Max = fabs(x);
iMax = n;
}
}
}
cout << endl << "Всего чисел: " << n << endl
    << "Наибольший модуль среди компонентов с чётными номерами = " << fixed << Max
    << endl << "у компонента с номером " << iMax;
ioFile.close();
cin.get();
return EXIT_SUCCESS;
}



<оfftор>
Впервые работаю с файлами в C++ и возможно чего-то не знаю, но вызывает недоумение, что в стандартной реализации языка, претендующего на звание системного, отсутствуют средства для работы с бинарными файлами (наиболее распространённый тип файлов в подавляющем большинстве операционных систем) без танцев с бубном. O_o
Также представилась возможность взглянуть на действительные числа, генерируемые не менее стандартной функцией rand(). Для типа double неиспользуемыми оказались 34 младших разряда в двоичном представлении. В то время как генератор, реализованный Borland, не использует 17 младших разрядов. Т. е. генератор C выдаёт действительные числа, расположенные на числовой прямой примерно в 100000 раз реже, чем генерируемые алгоритмом Borland.
Я пребываю в некотором шоке.
</оfftор>
Алексей Гостевский
Алексей Гостевский
51 590
Лучший ответ

Похожие вопросы