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

Бинарные файлы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ неопределенный символ в строке http://www.cyberforum.ru/cpp-beginners/thread287598.html
Почему ругается на w как на неопределенный символ в строке angel N1(149, 34.8, w); #include <iostream.h> /////////////////////////////////////////////////////////// class angel { private: int gradys; float minutes; char napravlenie;
C++ Неявное подключение DLL (Visual C++) Здравствуйте. Нужна Ваша помощь. Как правильно выполнить неявное подключение библиотеки к программе? Я это делаю таким способом: // dll.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include "windows.h" http://www.cyberforum.ru/cpp-beginners/thread287582.html
Упорядоченная строка C++
Может кто-нибудь подсказать, как этот кусок кода реализовать? Найти в массиве первую строку, все элементы которой упорядочены по убыванию. Изменить упорядоченность элементов этой строки на обратную. (Массив двумерный)
Динамическая матрица C++
помогите плз не могу разобраться уже неделю( вот само задание Найти произведение двух симметрических относительно побочной диагонали квадратных матриц. Для каждой симметрической матрицы в памя-ти создать её верхний или нижний относительно побочной диагонали треугольник. мой код приближён к решению способен вывести симетричную марицу используя 1 треугольник а умножить никак вот мой код...
C++ Как писать под RockBox? http://www.cyberforum.ru/cpp-beginners/thread287558.html
Всем здравствуйте! :) У меня возникла такая проблема: нужно написать какую-нибудь игру ил программу для плеера, работающего на RockBox. Написать её нужно на Си. Но я с этим никогда не сталкивался и как следствие у меня такая просьба. У кого есть какая-нибудь инфа по этому поводу, а ещё лучше исходники хотя бы небольших, простеньких программ, скиньте пожалуйста ссылки. Интересна любая инфа...
C++ Эквивалентны ли char * и char po[40] В книге Прата имеется такой текст: Stack<char *> st; // создает стек для указателей на сhаг Затем в первой версии string po; // Объявление Stack<string> st заменяется на char * po; Идея состоит в том, чтобы для реализации ввода с клавиатуры использовать указатель char вместо объекта string. Но этот подход изначально можно назвать неудачным, поскольку при создании указателя не создается... подробнее

Показать сообщение отдельно
djoker001
0 / 0 / 0
Регистрация: 10.04.2015
Сообщений: 4
10.04.2015, 07:06     Бинарные файлы
Здравствуйте,
сейчас разбираюсь в бинарных файлах,приведен такой пример решения задачи, программа работает правильно, но не было комментариев и подробного листинга :

Создать файл вещественных чисел, записать в него матрицу вещественных чисел А размерности n * n . Не считывая матрицу в память, реорганизовать файл путем замены элементов побочной диагонали на элементы последнего столбца матрицы. Вывести на печать исходную и полученную матрицы. Печать матриц оформить в виде функции

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
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
 
void matrica (char*n,int x){
    FILE *f=fopen (n,"rb");
    float t;
    fseek(f,0,SEEK_SET);
    if(f!=NULL){
    for (int j=0;j<x;j++)
    {
        for(int i=0;i<x;i++)
        {
            fread(&t,1,sizeof(float),f);
            printf("%f ",t);
        }
        printf("\n");
    }}
    if(f!=NULL)fclose(f);
}
 
int main(int argc, char** argv) {
    int n; 
    float t,h;
    system("chcp 1251");
    system("cls");
    system("color F0");
    printf ("Введите размерность матрицы ");
    scanf("%d",&n);
    srand(time(NULL));
    char *name="matrix.txt";
    FILE *f;
    f=fopen(name,"wb");
    for(int j=0;j<n;j++)
    {
        for(int i=0;i<n;i++)
        {
            t=rand()%100+((float)(rand())/10000);
            fwrite(&t,1,sizeof(float),f);
        }
    }
    fclose(f);
    matrica(name,n);
    f=fopen(name,"r+");
    printf("\n");
    for(int i=1;i<n;i++)
    {
        fseek(f,i*n*(sizeof(float))+(sizeof(float))*(n-1),SEEK_SET);
        fread(&t,1,sizeof(float),f);
        fseek(f,sizeof(float)*n*i+sizeof(float)*(n-1-i),SEEK_SET);
        fread(&h,1,sizeof(float),f);
        fseek(f,sizeof(float)*n*i+sizeof(float)*(n-1-i),SEEK_SET);
        fwrite(&t,1,sizeof(float),f);
        fseek(f,sizeof(float)*n*i+sizeof(float)*(n-1),SEEK_SET);
        fwrite(&h,1,sizeof(float),f);
    }
    fclose(f);
    matrica(name,n);
    return 0;
}

не могу разобраться как работает программа, открыли файл, создали матрицу, а каким образом происходит реорганизация матрицы путем замены элементов побочной диагонали на элементы последнего столбца матрицы? как алгоритм работает?
Заранее спасибо за помощь
 
Текущее время: 18:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru