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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Олимпиадно-школьные квесты http://www.cyberforum.ru/cpp-beginners/thread1103780.html
Накидайте плиз олимпиадных заданий для 10-11 классов.
C++ Метод Холецкого Здравствуйте.Очень нужна ваша помощь! нашёл методу ,по которой можно написать решение СЛАУ методом Холецкого.Полностью из неё все и взял.Но почему-то код не работает. #include<iostream> #include<math.h> #include<iomanip> using namespace std; void zapolneniemasabd(double **a,double *d,double *b,int n) { cout<<"zapolnite matricy a"; cout<<endl; http://www.cyberforum.ru/cpp-beginners/thread1103775.html
std::move() C++
Есть ли разница между следующими вещами: A = std::move(B); // and std::copy(B.begin(), B.end(), A.begin()); B.clear();
C++ множественное наследование
Почему не компилируется код? #include <iostream> #include <conio.h> #include <string.h> using namespace std; class computer_screen{ public: computer_screen(char*, long, int, int);
C++ Работа с 2 конструкторами http://www.cyberforum.ru/cpp-beginners/thread1103740.html
Добрый день. Дали задачу. У меня есть 1 класс который имел 2 поля. И сотню различных математических функций. Мне сказали добавить в него 2 конструктора. 1 конструктор будет инициализировать 1 поле класса. Второй конструктор второе поле. Ну и само собой все методы должны работать как работали при этом. Подскажите как именно можно реализовать какой нибудь метод ? Я так понимаю для...
C++ скриншот определенной области на экране Можно ли сделать в dev c++ скриншот определенной области на экране и отправить его в буфер обмена? Если можно, что как? подробнее

Показать сообщение отдельно
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
23.02.2014, 22:42     Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне
Добрый день!
Подскажите пожалуйста!
Генерирую рандомное кол-во вещественных чисел, и записываю их в бинарный файл, после чего читаю оттуда.
Не могу понять в чем проблема, т.к. не работает функция.
само задание такое:
Кликните здесь для просмотра всего текста
Написать функцию, которая записывает в бинарный файл 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) Написать функцию вывода содержимого двоичного файла (по умолчанию – на экран, при указании имени выходного файла – в текстовый файл), параметрами функции служат имена входного и выходного файла. Дальнейшее выполнение программы должно продолжиться только после команды пользователя.

вот это у меня и не выходит... прошу советов и литературы.
Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru