Форум программистов, компьютерный форум CyberForum.ru

Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
23.02.2014, 22:42     Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне #1
Добрый день!
Подскажите пожалуйста!
Генерирую рандомное кол-во вещественных чисел, и записываю их в бинарный файл, после чего читаю оттуда.
Не могу понять в чем проблема, т.к. не работает функция.
само задание такое:
Кликните здесь для просмотра всего текста
Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне (диапазон и количество чисел задаются с клавиатуры и передаются в функцию как параметры. N – натуральное число 1<N<1000000).
Написать функцию вывода содержимого двоичного файла (по умолчанию – на экран, при указании имени выходного файла – в текстовый файл), параметрами функции служат имена входного и выходного файла. Дальнейшее выполнение программы должно продолжиться только после команды пользователя.
Написать функции, реализующие задания соответствующего варианта. Задания должны выполняться по следующему сценарию:
Задание №1. Создать бинарный файл.
Задание №2. Вывести содержимое бинарного файла на экран и в текстовый файл.
Задание №3. Записать выходной бинарный файл в соответствии с заданием своего варианта.
Задание №4. Вывести содержимое выходного бинарного файла на экран и в файл
Задание №5. Дописать к содержимому бинарного файла из задания №1 содержимое бинарного файла, полученного в результате выполнения задания №3.
Задание №6. Вывести содержимое полученного бинарного файла на экран и в файл.
Задание №7. Выполнить перезапись по месту бинарного файла, полученного в результате выполнения задания №5 в соответствии с заданием своего варианта.
Задание №8. Вывести содержимое полученного бинарного файла на экран и в файл.

- Записать выходной файл, заменив каждое второе отрицательное число половиной максимума.

Код который не работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include<iostream>
#include <ctime>  
#include <stdlib.h> 
#include <fstream>
#include <istream>
#include <ostream>
#include <string>
using namespace std;
 
double generation(double min, double max) 
{
    double x=(double)rand()/RAND_MAX;
    return min+x*(max-min);
}
 
void create (int& n, double&a,double&b)
{ 
    ofstream fs("oonumber1.bin", std::ios::binary);
    double num;
    //std::fstream fs( name, std::ios::in | std::ios::out | std::ios::trunc | std::ios::binary );
    if( !fs.is_open() )
    {
        std::cout << "файл не открыт" << "oonumber1.bin";
    }
    for( int i = 0; i < n; i++ )
    {
        num = generation(a,b);
        fs.write((char *)&num, sizeof(num));  
    }
    fs.close();
}
 
void Display (int& n)
{
// std::fstream fs(name, std::ios::in | std::ios::out | std::ios::trunc | std::ios::binary );
    ifstream fs("oonumber2.bin",std::ios::binary);
    double max=0,max1=0;
    double *val=new double[n];
    fs.read((char *)val, sizeof(val));     // чтение файла в массив
    fs.close();                        // закрываем
    for(int i = 0; i < n; i++) cout << val[i] << ' ';
    cout << '\n';  
    char ch = getchar();
        fs.close();
}
 
int main()
{
    srand((unsigned)time(NULL));  
    setlocale(LC_ALL, "Russian");
    double a,b;
    int n;
    double *m,g,max,max1=0;
    string name;
    cout<<"Введите кол-во случайных чисел: "; cin>>n; 
    cout<<"Введите диапазон от: "; cin>>a; cout<<"До: "; cin>>b;
    //cout<<"Введите название бинарного файла: "; cin>>name; cout<<endl;
    create(n,a,b);
    Display(n);
    system("pause");
    return 0;
}
но выходит такой результат:
Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне
откуда эти цифры???

А вот если делаю заполнение и вывод так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include<iostream>
#include <ctime>  
#include <stdlib.h> 
#include <fstream>
#include <istream>
#include <ostream>
#include <string>
using namespace std;
 
double generation(double min, double max) {
 
    double x=(double)rand()/RAND_MAX;
    return min+x*(max-min);
 
}
 
int main()
{
    srand((unsigned)time(NULL));  
    setlocale(LC_ALL, "Russian");
    double a,b;
    int n;
    double *m,g,max,max1=0;
    string name;
    cout<<"Введите кол-во случайных чисел: "; cin>>n; 
    cout<<"Введите диапазон от: "; cin>>a; cout<<"До: "; cin>>b;
    //cout<<"Введите название бинарного файла: "; cin>>name; cout<<endl;
 
        FILE *f;
    f=fopen("1.dat", "wb");
    fwrite(&n, sizeof(int), 1, f);
    for (int i=0; i<n; i++)
    {
        g=generation(a,b);
        fwrite(&g, sizeof(double), 1, f);
    }
    fclose(f);
    f=fopen("1.dat", "rb");
    fread(&n, sizeof(int), 1, f);
    cout<<"n="<<n<<endl;
    m=new double[n];
    fread(m, sizeof(double), n, f);
    for (int i=0; i<n; i++)
    {
    max=abs(m[i]);
    if(max>max1)
    {
    max1=max;
    }
    cout<<m[i]<<"\t";
    cout<<endl;
    }
    cout<<"****************************"<<endl;
    cout<<"Максимальное число по модулю: "<<max1<<endl;
    cout<<"****************************"<<endl;
    fclose(f);
    system("pause");
    return 0;
}
то результат таков:
Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне

Но мне нужно сделать это заполнение в функции
Кликните здесь для просмотра всего текста
1)Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне (диапазон и количество чисел задаются с клавиатуры и передаются в функцию как параметры. N – натуральное число 1<N<1000000).
2) Написать функцию вывода содержимого двоичного файла (по умолчанию – на экран, при указании имени выходного файла – в текстовый файл), параметрами функции служат имена входного и выходного файла. Дальнейшее выполнение программы должно продолжиться только после команды пользователя.

вот это у меня и не выходит... прошу советов и литературы.
Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2014, 22:42     Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне
Посмотрите здесь:

Генерация случайных вещественных чисел в диапазоне 0..1 C++
Написать функцию, которая в массиве вещественных чисел обнуляет все элементы, которые меньше среднего C++
C++ Написать функцию, которая в заданном массиве определяет количество элементов, находящихся в диапазоне двух введённых чисел.
C++ Написать программу, которая находит сумму всех целых нечетных чисел в диапазоне, указанном пользователя.
C++ Написать программу,которая генерирует последовательность из 10 случайных чисел в диапазоне от 1 до 10, выводит эти числа на экран и вычисляет их средн
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.02.2014, 00:30     Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вот это неправильно:
C++
1
fs.read((char *)val, sizeof(val));     // чтение файла в массив
Нужно:
C++
1
fs.read((char *)val, sizeof(double) * n);     // чтение файла в массив
Добавлено через 10 минут
Открытие файла для чтения всегда проверять нужно. Записываете в один файл, а читаете из другого.
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
24.02.2014, 00:33  [ТС]     Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне #3
alsav22, спасибо за ответ и совет!
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
01.03.2014, 15:17  [ТС]     Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне #4
alsav22, Вот, добрался до заданий. Но что-то не пойму, поменял, но выходит тоже самое. Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне
SatanaXIII
01.03.2014, 15:58
  #5
 Комментарий модератора 
о_О_Кто_здесь, обрезайте неиспользуемую область на картинке. Уважайте тех, кто вам помогает.
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
01.03.2014, 16:33  [ТС]     Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне #6
SatanaXIII, Хорошо, приму во внимание, спасибо! Извиняюсь.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.03.2014, 20:30     Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне #7
Цитата Сообщение от о_О_Кто_здесь Посмотреть сообщение
поменял, но выходит тоже самое.
Кто видит, что и как вы поменяли, кроме вас самого?
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
01.03.2014, 21:22  [ТС]     Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне #8
alsav22,
C++
1
2
3
4
fs.read((char *)val, sizeof(val));     // чтение файла в массив
 
//на
fs.read((char *)val, sizeof(double) * n);     // чтение файла
и результат тот же


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include<iostream>
#include <ctime>  
#include <stdlib.h> 
#include <fstream>
#include <istream>
#include <ostream>
#include <string>
using namespace std;
 
double generation(double min, double max) 
{
    double x=(double)rand()/RAND_MAX;
    return min+x*(max-min);
}
 
void create (int& n, double&a,double&b)
{ 
    ofstream fs("oonumber1.bin", std::ios::binary);
    double num;
    //std::fstream fs( name, std::ios::in | std::ios::out | std::ios::trunc | std::ios::binary );
    if( !fs.is_open() )
    {
        std::cout << "файл не открыт" << "oonumber1.bin";
    }
    for( int i = 0; i < n; i++ )
    {
        num = generation(a,b);
        fs.write((char *)&num, sizeof(num));  
    }
    fs.close();
}
 
void Display (int& n)
{
// std::fstream fs(name, std::ios::in | std::ios::out | std::ios::trunc | std::ios::binary );
    ifstream fs("oonumber2.bin",std::ios::binary);
    double max=0,max1=0;
    double *val=new double[n];
    fs.read((char *)val, sizeof(double) * n)     // чтение файла в массив
    fs.close();                        // закрываем
    for(int i = 0; i < n; i++) cout << val[i] << ' ';
    cout << '\n';  
    char ch = getchar();
        fs.close();
}
 
int main()
{
    srand((unsigned)time(NULL));  
    setlocale(LC_ALL, "Russian");
    double a,b;
    int n;
    double *m,g,max,max1=0;
    string name;
    cout<<"Введите кол-во случайных чисел: "; cin>>n; 
    cout<<"Введите диапазон от: "; cin>>a; cout<<"До: "; cin>>b;
    //cout<<"Введите название бинарного файла: "; cin>>name; cout<<endl;
    create(n,a,b);
    Display(n);
    system("pause");
    return 0;
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.03.2014, 22:02     Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне #9
Как насчёт этого?
Цитата Сообщение от alsav22 Посмотреть сообщение
Открытие файла для чтения всегда проверять нужно. Записываете в один файл, а читаете из другого.
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
01.03.2014, 22:16  [ТС]     Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне #10
Эм... Записал в 1 а читать из 2... Не совсем понимаю
Рыжий Лис
Просто Лис
 Аватар для Рыжий Лис
209 / 164 / 44
Регистрация: 17.05.2012
Сообщений: 611
Записей в блоге: 4
01.03.2014, 22:25     Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне #11
Цитата Сообщение от о_О_Кто_здесь Посмотреть сообщение
Генерирую рандомное кол-во вещественных чисел, и записываю их в бинарный файл, после чего читаю оттуда.
Запись идет в файл oonumber1.bin, а чтение из oonumber2.bin. Откуда в oonumber2.bin возьмутся данные?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.03.2014, 22:28     Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне #12
Цитата Сообщение от о_О_Кто_здесь Посмотреть сообщение
Эм... Записал в 1 а читать из 2... Не совсем понимаю
Вот и я не совсем понимаю: записываете в "oonumber1.bin", а читаете из "oonumber2.bin".

Добавлено через 1 минуту
И проверку нужно делать на открытие файла для чтения!
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
02.03.2014, 14:31  [ТС]     Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне #13
О Господи! Стыдоба) Моя невнимательность не знает границ... смешно, но поучительно. Нужно глаза лучше открывать.
Спасибо.
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
02.03.2014, 18:20  [ТС]     Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне #14
Вот..
1. Создаю файл
2. Вывожу на Экран.
3. нахожу максимум в файле 1. Открываю файл 2, и пытаюсь вставить из файла 1 в файл 2 заменив каждое второе число половиной максимума... Вот только почему-то не выходит.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
void zamena(string name, string name2)
{
    double max = 0, max1 = 0;
    std::ifstream fs(name, std::ios::binary);
    fs.seekg(0, fs.end);
    int len = fs.tellg() / sizeof(double);
    fs.seekg(0, fs.beg);
    if (!fs.is_open())
    {
        std::cout << "Файл " << name << "не был открыт для чтения";
    }
    double *val = new double[len];
    fs.read((char *)val, sizeof(double)* len);     // чтение файла в массив
    fs.close();                        // закрываем
    for (int i = 0; i < n; i++)
    {
        max1 = fabs(val[i]);
        if (max < max1)
        {
            max = max1;
        }
    }
    cout << "Максимальное число по модулю: " << max << endl;
    max = max / 2;
    cout << "Половина Максимума: " << max << endl;
    char ch = getchar();
 
    /////////////////////
    std::ofstream fs2(name2, std::ios::binary);
    if (!fs2.is_open())
    {
        std::cout << "Файл " << name2 << "не был открыт для записи";
    }
    int ii = 0;
    for (int i = 0; i < len; i++)
    {
        if (i = ii+1)
        {
            fs2.write((char *)&max, sizeof(max));
            ii++;
        }
        else
        {
            fs2.write((char *)&val[i], sizeof(val[i]));
        }
        fs2.close();
    }
}
Получается вот так:Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.03.2014, 18:36     Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне #15
Цитата Сообщение от о_О_Кто_здесь Посмотреть сообщение
if (i = ii+1)
Это не сравнение, а присваивание. И проверяйте индекс (i) на чётность или нечётность.
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
02.03.2014, 18:44  [ТС]     Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне #16
так.. и вправду...
тогда..
C++
1
2
3
4
5
6
7
8
9
10
    int ii = 0;
    if (i != ii+1) //пока i не станет равно единице, будет заполнятся в файл 2 val[i] (числа находящиеся в массиве из файла 1)
        {
            fs2.write((char *)&val[i], sizeof(val[i]));
        }
        else // и как только i стала равна ii, в файла 2 на каждое второе число должно попасть половина максимума. 
        {
            fs2.write((char *)&max, sizeof(max));
            ii++; //увеличиваем 
        }
Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне
но это мне почему то не дает результата... 1 число попадает, а дальше мусор...не пойму.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.03.2014, 18:50     Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне #17
Делаете это?
Цитата Сообщение от о_О_Кто_здесь Посмотреть сообщение
заменив каждое второе число половиной максимума...
Если это, то (в if()):
Цитата Сообщение от alsav22 Посмотреть сообщение
проверяйте индекс (i) на чётность или нечётность.
Добавлено через 2 минуты
C++
1
if (i % 2 == 0) // или != 0
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
02.03.2014, 18:54  [ТС]     Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне #18
Добрый день! Это понятно, как сравнить четное не четное тоже знаю.
НО, помойму суть та же что и в моем варианте. Что от 0 каждое второе, что так.
Вопрос остался, вывод тот же. В чем я делаю ошибку не понимаю.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.03.2014, 19:43     Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне #19
Цитата Сообщение от о_О_Кто_здесь Посмотреть сообщение
вывод тот же.
Где, собственно, вывод?

Добавлено через 6 минут
Цитата Сообщение от о_О_Кто_здесь Посмотреть сообщение
суть та же что и в моем варианте.
Не та же. Сделатйте вывыод на консоль из if и из else, чтобы видно было сколько заходов туда и туда.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.03.2014, 19:56     Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне
Еще ссылки по теме:

C++ Написать программу, которая генерирует последовательность из 10 случайных чисел в диапазоне от 1 до 10, выводит эти числа на экран и вычисляет их
Написать функцию, которая рекурсивно вычисляет сумму чисел в заданном диапазоне C++
C++ Написать функцию, которая рекурсивно вычисляет сумму чисел в заданном диапазоне

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
02.03.2014, 19:56  [ТС]     Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне #20
alsav22,
переделываю, полный код.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include<iostream>
#include <ctime>  
#include <stdlib.h> 
#include <fstream>
#include <istream>
#include <ostream>
#include <string>
using namespace std;
 
double generation(double min, double max)
{
    double x = (double)rand() / RAND_MAX;
    return min + x*(max - min);
}
 
void create(string name,int& n, double&a, double&b)
{
    double num;
    std::ofstream fs(name, std::ios::binary);
    if (!fs.is_open())
    {
        std::cout << "Файл " <<name<<"не был открыт для записи";
    }
    for (int i = 0; i < n; i++)
    {
        num = generation(a, b);
        fs.write((char *)&num, sizeof(num));
    }
    fs.close();
}
 
void Display(string name)
{
    std::ifstream fs(name, std::ios::binary);
    fs.seekg(0, fs.end);
    int len = fs.tellg()/ sizeof(double);
    fs.seekg(0, fs.beg); 
 
    if (!fs.is_open())
    {
        std::cout << "Файл " <<name<<"не был открыт для чтения";
    }
    double max = 0, max1 = 0;
    double *val = new double[len];
    fs.read((char *)val, sizeof(double)* len);     // чтение файла в массив
    fs.close();                        // закрываем
    for (int i = 0; i < len; i++) cout << val[i] << ' ';
    cout << '\n';
    char ch = getchar();
}
 
void zamena(string name, string name2)
{
    double max = 0, max1 = 0;
    std::ifstream fs(name, std::ios::binary);
    fs.seekg(0, fs.end);
    int len = fs.tellg() / sizeof(double);
    fs.seekg(0, fs.beg);
    if (!fs.is_open())
    {
        std::cout << "Файл " << name << "не был открыт для чтения";
    }
    double *val = new double[len];
    fs.read((char *)val, sizeof(double)* len);     // чтение файла в массив
    fs.close();                        // закрываем
    for (int i = 0; i < len; i++)
    {
        max1 = fabs(val[i]);
        if (max < max1)
        {
            max = max1;
        }
 
    }
    cout << "Максимальное число по модулю: " << max << endl;
    max = max / 2;
    cout << "Половина Максимума: " << max << endl;
    char ch = getchar();
 
    /////////////////////
    std::ofstream fs2(name2, std::ios::binary);
    if (!fs2.is_open())
    {
        std::cout << "Файл " << name2 << "не был открыт для записи";
    }
    
    for (int i = 0; i <=len; i++)
    {
        if (i % 2==0)
        {
            fs2.write((char *)&val[i], sizeof(val[i]));
        }
        else
        {
            fs2.write((char *)&max, sizeof(max));
        }
        fs2.close();
    }
}
 
 
int main()
{
    srand((unsigned)time(NULL));
    setlocale(LC_ALL, "Russian");
 
    double a, b;
    int n;
    double *m, g, max, max1 = 0;
    string name,name2;
    cout << "Введите кол-во случайных чисел: "; cin >> n;
    if (n < 0) n=-n;
    cout << "Введите диапазон от: "; cin >> a; cout << "До: "; cin >> b;
    cout<<"Введите название бинарного файла: "; cin>>name; cout<<endl;
    create(name,n, a, b);
    cout << "\n********************************************************************************\n" << endl;
    Display(name);
    cout << "\n********************************************************************************\n" << endl;
    cout << "Введите название бинарного файла куда будет сохранен рузультат задания пов арианту: "; cin >> name2; cout << endl;
    cout << "\n********************************************************************************\n" << endl;
    zamena(name, name2);
    cout << "\n********************************************************************************\n" << endl;
    Display(name2);
    system("pause");
    return 0;
}
результат таков, почему дальше не идет, не пойму. Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне

А вот,почему если в функции Display использовать вместо определения длины файла (функция seekg)
C++
1
2
3
fs.seekg(0, fs.end);
int len = fs.tellg() / sizeof(double);
fs.seekg(0, fs.beg);
Сразу ссылку на кол-во n.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void Display(string name, int& len)
{
    std::ifstream fs(name, std::ios::binary);
    //fs.seekg(0, fs.end);
    //int len = fs.tellg()/ sizeof(double);
    //fs.seekg(0, fs.beg); 
 
    if (!fs.is_open())
    {
        std::cout << "Файл " <<name<<"не был открыт для чтения";
    }
    double max = 0, max1 = 0;
    double *val = new double[len];
    fs.read((char *)val, sizeof(double)* len);     // чтение файла в массив
    fs.close();                        // закрываем
    for (int i = 0; i < len; i++) cout << val[i] << ' ';
    cout << '\n';
    char ch = getchar();
    fs.close();
}
выводится так: Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне
Спасибо!
Yandex
Объявления
02.03.2014, 19:56     Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне
Ответ Создать тему
Опции темы

Текущее время: 03:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru