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

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

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

В файле содержатся числа. Сформировать квадратную матрицу из 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" и не понимаю почему нужно после выполнения несколько раз жать любую клавишу для продолжения. Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2014, 18:55     Генератор случайных чисел для записи в бинарный файл
Посмотрите здесь:

C++ Генератор случайных чисел
C++ Генератор случайных чисел
C++ Генератор случайных чисел
C++ генератор случайных чисел
C++ Генератор случайных чисел (с UI)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Керра
Модератор
 Аватар для Керра
1270 / 438 / 45
Регистрация: 24.08.2011
Сообщений: 2,123
02.05.2014, 19:23     Генератор случайных чисел для записи в бинарный файл #2
Сначала инициализируется генератор случайных чисел (srand).
Потом файл открывается для записи.
Генерируется случайное количество чисел - n.
Потом в цикле генерируется n случайных чисел. Случайно число записывается в переменную а, а переменная а записывается в файл. Затем выводится символ новой строки и ожидается ввод. Конец цикла.

Не по теме:

Имхо, ты даже ни разу не попытался разобрать этот код.

dimoncheg
 Аватар для dimoncheg
10 / 10 / 2
Регистрация: 18.10.2012
Сообщений: 220
02.05.2014, 19:55  [ТС]     Генератор случайных чисел для записи в бинарный файл #3
Цитата Сообщение от Керра Посмотреть сообщение
Случайно число записывается в переменную а, а переменная а записывается в файл. Затем выводится символ новой строки и ожидается ввод.
Это меня и интересовало, спасибо. С кодом пытался разобраться и не раз.
Керра
03.05.2014, 11:39     Генератор случайных чисел для записи в бинарный файл
  #4

Не по теме:

Цитата Сообщение от dimoncheg Посмотреть сообщение
С кодом пытался разобраться и не раз.
Тут 10 строчек, четко видно где используется переменная а, и скобочки тоже видимые. Удивительно.
Ладненько, на эту тему лучше закончить.

Yandex
Объявления
03.05.2014, 11:39     Генератор случайных чисел для записи в бинарный файл
Ответ Создать тему
Опции темы

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