Форум программистов, компьютерный форум 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
02.03.2014, 19:56  [ТС]     Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне
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 случайных вещественных чисел в указанном диапазоне
Спасибо!
 
Текущее время: 04:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru