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

траблы с fstream - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Масив принимает в 16-ричной, а выдаёт в 10-ричной http://www.cyberforum.ru/cpp-beginners/thread825531.html
Народ подскажите в чом может быть проблема ? Задание :Дан массив чисел размерностью 10 элементов. Написать функцию, которая сортирует массив по возрастанию или по убыванию, в зависимости от третьего параметра функции. Если он равен 1, сортировка идет по убыванию, если 0, то по возрастанию. Первые 2 параметра функции - это массив и его размер, третий параметр по умолчанию равен 1. Вопрос: У...
C++ Можно ли в цикле for устанавливать переменное значение инициализатора? Ну вот мне позарез надо сделать так: int j=(23-posl); for (i=j;i>=0;i--) cout << c; так нельзя? а мне очень нужно. что можно сделать? если вместо j поставить число то все работает правильно. А так работает, но неправильно. http://www.cyberforum.ru/cpp-beginners/thread825530.html
C++ Некорректный вывод в Borland 3.1
пытаюсь разобраться с деревом.написал программу для ввода и вывода.она почему то криво выводит.вот скрин.программа Borland 3.1 http://files.mail.ru/FB8555C2A8AD4BCEA9DE2BB50E37CA0D вот код #include<iostream.h> #include<conio.h> #include<stdio.h> #include<iomanip.h> #include<string.h> #include<stdlib.h>
strlen C++
Или я дурак,или лыжи не едут??? Люди добрые, скажите чего не так. Не могу определить длину строки. Хоть вручную считай... вот код int polinom::analiz( char * stroka) { int size = 0; int i = 0; int len = strlen(stroka); // вот здесь мой код радостно падает cout << "dd - "<<len<<endl; for ( i= 0; i < len; i++) if (stroka == '+' || stroka == '-') size++;
C++ ошибка при компиляции http://www.cyberforum.ru/cpp-beginners/thread825511.html
//figure.h #ifndef FIGURE_H #define FIGURE_H class figure { public: char type; char x; int y; double factor;
C++ заголовочные фалы как правильно записывать классы и методы в h фалы? #ifndef FIGURE_H #define FIGURE_H class figure { public: char type; char x; int y; double factor; подробнее

Показать сообщение отдельно
riozz
Сообщений: n/a
02.04.2013, 01:43     траблы с fstream
Всем привет! Начинаю работать над дз по проге и никак не могу разобраться с одной фишкой с fstream. Вот мои код:
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <conio.h>
#include <iomanip>
 
using namespace std;        
 
void inversion(double **A, int N)
{
    double temp;
 
    double **E = new double *[N];
 
    for (int i = 0; i < N; i++)
        E[i] = new double [N];
 
    for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
        {
            E[i][j] = 0.0;
            E[i][i] = 1.0;
        }
 
        for (int k = 0; k < N; k++)
        {
            temp = A[k][k];
 
            for (int j = 0; j < N; j++)
            {
                A[k][j] /= temp;
                E[k][j] /= temp;
            }
 
            for (int i = k + 1; i < N; i++)
            {
                temp = A[i][k];
 
                for (int j = 0; j < N; j++)
                {
                    A[i][j] -= A[k][j] * temp;
                    E[i][j] -= E[k][j] * temp;
                }
            }
        }
 
        for (int k = N - 1; k > 0; k--)
        {
            for (int i = k - 1; i >= 0; i--)
            {
                temp = A[i][k];
 
                for (int j = 0; j < N; j++)
                {
                    A[i][j] -= A[k][j] * temp;
                    E[i][j] -= E[k][j] * temp;
                }
            }
        }
 
        for (int i = 0; i < N; i++)
            for (int j = 0; j < N; j++)
                A[i][j] = E[i][j];
}
 
int main()
{
    setlocale (0,"");
 
    fstream oF( "Matrix.dat" ,  ios::out | ios::trunc | ios::binary );//создание файла
 
    if (! oF.is_open() )
    {
        cout << "1 Ошибка Matrix.dat\n";
        _getch();
        return 0;
    }
 
 
 
    int N;
 
    cout << "Введите размерность матрицы N: ";
    cin >> N;
 
    double **matrix = new double *[N];
    
 
    for (int i = 0; i < N; i++)
    {
        matrix[i] = new double [N];
    }
 
    for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
        {
            cout << "Введите элемент матрицы[" << i + 1 << "][" << j + 1 << "] = ";
            cin >> matrix[i][j];
        }
        
        oF.write ( (char *)matrix, sizeof(matrix) );
        inversion(matrix, N);
        oF.write ( (char *)matrix, sizeof(matrix) );
        oF.close();
 
        fstream iF("Matrix.dat", ios :: in | ios :: binary | ios :: app);
 
        if (! iF.is_open() )//проверка что фаил открыт для работы
        {
            cout << "2 Ошибка Matrix.dat!\n";
            _getch();
            return 0;
        }
 
        cout << endl;
        while ( iF.read (   (char *)matrix, sizeof ( matrix )   ) )//чтение массивов из файла и вывод на экран
        {
            for ( int i = 0 ; i < N ; ++i)
            {
                for ( int j = 0 ; j < N ; ++j)
                    cout << setw (5) << matrix[i][j];
                
                cout  << endl;
            }
            cout << endl;
        }
        iF.close ();
 
 
        system ("pause");
        return 0;
}
Вот есть задачка на нахождение обратной матрицы. Хочу сделать, чтобы исходная и обратная матрицы записывались в фаил, а потом от туда вываливались на экран. Но почему-то выводит 2 обратных, или половину исходной и 1.5 обратной) Короче бред) Грешу на то, что возможно записывается только окончательный результат matrix не зависимо от расположения write, но так как недавно в с++, то не знаю толком. Подскажите пожалуйста, как грамотно сделать именно с fstream, без функции высчитывания обратной матрицы получалось 2 разных массива запихать в фаил и вывести)

Добавлено через 16 минут
Вот вопрос конкретнее и более кратко:
C++
1
2
3
oF.write ( (char *)matrix, sizeof(matrix) );
        inversion(matrix, N);
        oF.write ( (char *)matrix, sizeof(matrix) );
вместо того, чтобы записать в фаил 2 разных матрицы до преобразования и после, записываются 2 одинаковых "после". Как сделать правильно?)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru