Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/34: Рейтинг темы: голосов - 34, средняя оценка - 4.53
10 / 10 / 4
Регистрация: 18.10.2012
Сообщений: 224
1

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

02.05.2014, 18:55. Показов 7035. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Есть задача:

В файле содержатся числа. Сформировать квадратную матрицу из 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" и не понимаю почему нужно после выполнения несколько раз жать любую клавишу для продолжения. Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.05.2014, 18:55
Ответы с готовыми решениями:

Заполнить файл f целыми числами, используя генератор случайных чисел
Заполнить файл f целыми числами, используя генератор случайных чисел. Из файла f получить файл g,...

Создать бинарный файл, заполненный двоичными кодами N случайных четырёхзначных чётных чисел
Создать бинарный файл, заполненый двоичными кодами N случайных четырехзначных парных чисел. N...

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

Генератор случайных чисел
Добрый день!У меня есть код #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;cstring&gt; #include...

3
1296 / 469 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
02.05.2014, 19:23 2
Сначала инициализируется генератор случайных чисел (srand).
Потом файл открывается для записи.
Генерируется случайное количество чисел - n.
Потом в цикле генерируется n случайных чисел. Случайно число записывается в переменную а, а переменная а записывается в файл. Затем выводится символ новой строки и ожидается ввод. Конец цикла.

Не по теме:

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

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

Не по теме:

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

0
03.05.2014, 11:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.05.2014, 11:39
Помогаю со студенческими работами здесь

Генератор случайных чисел
Реализовать генератор случайных числе в диапазоне от нуля до единицы. После генерации случайного...

Генератор случайных чисел
Здраствуййте :( int a=rand()%10000; std::cout &lt;&lt; a; getchar(); return 0; int...

Генератор случайных чисел
составить генератор случайных чисел, имеющий два члена - границы последовательности. Предоставить...

генератор случайных чисел
как реализовать генератор случайных чисел? чтобы можно было вводить два числа(например 56 и 519), и...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru