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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Формирование двоичного кода для целой и дробной части + вывод в файл http://www.cyberforum.ru/cpp-beginners/thread1164259.html
Упростила программу, но суть ясна. Выводит число, потом его целую и дробную часть, после чего переводит обе части в двоичную систему счисления. Целую часть конвертирует правильно, а с дробной...
C++ Приложение падает при удалении синглтона Всем привет. Понадобилось мне использовать паттерн Singleton, реализовал я его так. UIManager* UIManager::GetInstance(){ if(!m_Instance){ m_Instance = new UIManager(); } ... 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 {...
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!} вычислить приближенную сумму при...
C++ В списке Р заменить первое вхождение списка Р1 (если такое есть) на список Р2 Написать программу с функциями, которая: а)в списке Р заменяет первое вхождение списка Р1( если такое есть) на список Р2; б)строит список Р1 - копию списка Р; в)добавляет в конец списка Р... подробнее

Показать сообщение отдельно
dimoncheg
10 / 10 / 2
Регистрация: 18.10.2012
Сообщений: 220

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

02.05.2014, 18:55. Просмотров 1331. Ответов 3
Метки (Все метки)

Здравствуйте. Есть задача:

В файле содержатся числа. Сформировать квадратную матрицу из 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru