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

Генератор случайных чисел для записи в бинарный файл - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Формирование двоичного кода для целой и дробной части + вывод в файл http://www.cyberforum.ru/cpp-beginners/thread1164259.html
Упростила программу, но суть ясна. Выводит число, потом его целую и дробную часть, после чего переводит обе части в двоичную систему счисления. Целую часть конвертирует правильно, а с дробной проблемы. :( Кто-нибудь может помочь разобраться, почему двоичный код для дробной части неверный? #include <iostream> #include <fstream.h> #include <string> #include <stdio.h> #include <stdlib.h>
C++ Приложение падает при удалении синглтона Всем привет. Понадобилось мне использовать паттерн Singleton, реализовал я его так. UIManager* UIManager::GetInstance(){ if(!m_Instance){ m_Instance = new UIManager(); } return m_Instance; } Также добавил в деструкторе удаление указателя http://www.cyberforum.ru/cpp-beginners/thread1164257.html
C++ Оптимальная IDE для отладки native C++ приложений
Посоветуйте, пожалуйста, оптимальную IDE для отладки native C++ приложений. Желательно кроссплатформенную.
Преобразование в матрице для игры C++
void GameField::PerformMove(int direction) { glutSetWindowTitle("perforn move inited"); switch(direction) { glutSetWindowTitle("switch inited"); case 1://if direction is up { glutSetWindowTitle("case1 inited"); for(int i=0;i<4;i++)//for each row
C++ Вычислить приближенную сумму ряда при фиксированном значении x двумя способами http://www.cyberforum.ru/cpp-beginners/thread1164207.html
Для функционального ряда {a}_{1}{x}^{}+{a}_{2}{x}^{2}+...+{a}_{n}{x}^{n}+...=\sum_{n=1}^{\propto }{a}_{n}{x}^{n} где {a}_{n}={(-1)}^{n}\frac{n-1}{{3}^{n}*n!} вычислить приближенную сумму при фиксированном значении x двумя способами: сумму первых n членов ряда и сумму с точностью до eps(эпсилон) в двух разных функциях: double Sum1(double x, int n); double Sum2(double x, double eps); ...
C++ В списке Р заменить первое вхождение списка Р1 (если такое есть) на список Р2 Написать программу с функциями, которая: а)в списке Р заменяет первое вхождение списка Р1( если такое есть) на список Р2; б)строит список Р1 - копию списка Р; в)добавляет в конец списка Р инвертированный список Р. подробнее

Показать сообщение отдельно
dimoncheg
 Аватар для dimoncheg
10 / 10 / 2
Регистрация: 18.10.2012
Сообщений: 220
02.05.2014, 18:55     Генератор случайных чисел для записи в бинарный файл
Здравствуйте. Есть задача:

В файле содержатся числа. Сформировать квадратную матрицу из 25 последних чисел файла. Посчитать сумму элементов над главной диагональю полученной матрицы.

Исходный файл формировать программно. Количество элементов исходного файла неизвестно.

Так вот. Файлик бинарный. В него рандомим числа. Вот код нашего рандома:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
 
int main() {
    srand((unsigned)time(NULL));
    FILE* f = fopen("in.bin", "w");
    int n = 25 + rand()%25;
    for (int i = 0; i < n; i++) {
        int a = 0 + rand()%10;
        fwrite(&a, sizeof(int), 1, f);
    printf("\n");
        system("pause");
}
 
}
Вот сама программа:

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
#include <stdio.h>
#include <stdlib.h>
 
int main() {
    FILE* f = fopen("in.bin", "r");
    int n = 5;
    int a[n][n];
    if (f == NULL) {
        printf("Can't open file\n");
        return 0;
    }
    int i = 0;// счетчик считанных чисел
    while (!feof(f) && i < 25) {// пока не конец файла и не дошли до 25го элемента
        int x;// переменная, в которую будем считывать число из файла
        fread(&x, sizeof(int), 1, f);// считываем 1 элемент размером sizeof(int) из файла, связанного с указателем f в память по адресу переменной x
        a[i/5][i%5] = x;// задаем нужный элемент массива данным значением
        i++;// увеличиваем счетчик символов
    }
    printf("\n");
    int sum = 0;// сумма элементов над главной диагональю
    for (int i = 0; i < n; i++) {// проход по массиву
        for (int j = 0; j < n; j++) {
            printf("%d ", a[i][j]);// вывод элемента
            if (i < j) {// если элемент выше главной диагонали
                sum +=a[i][j];// прибавляем его к сумме
            }
        }
        printf("\n");
    }
    printf("\nsum = %d\n", sum);// выводим сумму
    system("pause");
}
Можете объяснить принцип работы этого генератора (первый код), а то я его немного не понимаю? Не понимаю смысл переменной "a" и не понимаю почему нужно после выполнения несколько раз жать любую клавишу для продолжения. Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru