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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 407
#1

Некорректный вывод в файл - C++

27.03.2014, 16:58. Просмотров 227. Ответов 4
Метки нет (Все метки)

Здравствуйте. Компилятор находит ошибку, что-то с вводом выводом

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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <conio.h>
#include <cmath>
#include <cstdlib>
 
using namespace std;
 
double determ(int** Arr, int size);    //прототип функции поиска определителя
ifstream fp ("C:\\100VIDEO\\123.txt");
ifstream in ("C:\\123.txt");
int main()
{
    setlocale(0,"");
    int size=3;     //константа размера массива
    int **Arr;      //указатель обьявляется, для использования динамического массива
  Arr=new int*[size];     //создание динамического массива
            for(int i=0;i<size;++i)     
            Arr[i]=new int[size]; 
    int H;
    while(1>0)
{
    cout<<"Нажмите 1, если вы хотите ввести другую размерность матрицы(стандартный размер=3)"<<endl;
    cout<<"Нажмите 2, если вы хотите ввести матрицу c клавиатуры"<<endl;
    cout<<"Нажмите 3, если вы хотите ввести матрицу из файла"<<endl;
    cout<<"Нажмите 4, если вы хотите сохранить матрицу в файл"<<endl;
    cout<<"Нажмите 5, если вы хотите вывести матрицу"<<endl;
    cout<<"Нажмите 6, если вы хотите вычислить и вывести на экран дискриминант"<<endl;
    cout<<"Нажмите 7, если вы хотите вычислить дискриминант и сохранить его в файл"<<endl;
    cout<<"Нажмите 8, если вы хотите очистить экран"<<endl;
    cout<<"Нажмите 9, если вы хотите получить справку по программе"<<endl;
    cout<<"нажмите 0, если вы хотите выйти"<<endl;
    cin>>H;
     switch (H)
    {
       case 0:
           cout<<"Выходим из программы!";
           goto Exit;
       break;
       case 1: cout<<"Размерность= ";
        cin>>size;
        if (size<0 || size>15) cout<<"Введёна неверная размерность матрицы! "<<endl;
        else cout<<"размерность:= "<<size<<endl;
 
       break;
       case 2: cout<<"Введите матрицу!"<<endl;
            for(int i=0;i<size;++i)
            for(int j=0;j<size;++j)
            cin>>Arr[i][j];        //эта и 2 строки выше - заполнение массива с клавиатуры
       break;
 
       case 3: 
            if ( ! fp ) {
            cout << "ошибка: не могу открыть входной файл " << endl;
            system("pause");
            exit(0);
            }
            for(int i=0;i<size;++i)
            for(int j=0;j<size;++j)
            {
            fp >>Arr[i][j];
            }
            fp.close();
            cout << "Загрузка завершена!" << endl;
       break;
       
       case 4: 
            if ( ! fp ) {
            cout << "Ошибка: не могу открыть входной файл"<<endl;
            system("pause");
            exit(0);
            }
            for(int i=0;i<size;++i)
            for(int j=0;j<size;++j)
            {
            fp>>Arr[i][j];
            }
            fp.close();
            cout << "Сохранение завершено!" << endl;
       break;
 
       case 5:
       cout<<"Вывод матрицы!"<<endl;
       for(int i=0;i<size;++i)
        {
        for(int j=0;j<size;++j)
        cout<<Arr[i][j]<<' ';               // вывод массива на экран в "правильной" форме
        cout<<endl;
        }
       break;
 
       case 6:
       cout<<"Вычисление определителя!"<<endl;
       cout<< determ(Arr, size)<<endl;        //выводит на экран результат подсчета функции поиска определителя determ(Arr- сюда передаем массив, size- сюда размер массива)
       break;
 
       case 7:
       if (!fp) {
            cout << "Ошибка: не могу открыть входной файл"<<endl;
            system("pause");
            exit(0);
            }
            fp>>determ(Arr, size);
            fp.close();
            cout << "Сохранение завершено!" << endl;
       break;
      
       case 8:
       system("cls");
       break;
 
       case 9:
       cout<<"Справка по программе"<<endl;
       cout<<"Краткая характеристика численного метода - определитель вычисляется по теореме Лапласа"<<endl;
       cout<<"результаты тестирования программы - программа вычисляет результат со 100% точностью"<<endl;
       cout<<"Требования к аппаратной части - клавиатура, дисплей, персональная ЭВМ"<<endl;
       cout<<"Автор - студент 1 курса группы АСОИР-131"<<endl;
       break;
    }
}
 Exit:
    for(int i=0;i<size;++i)     // удаляем сначала содержимое массива
    delete[] Arr[i];
    delete[] Arr;               //потом сам массив
return 0;
}
double determ(int** Arr, int size)         //функция поиска определителя
{
    int i,j;
    double det=0;       //переменная определителя
    int **matr;         //указатель
        if(size==1)     // 1-е условие , размер 1
        {
        det=Arr[0][0];
        }
            else if(size==2)    // 2-е условие , размер 2
            {
            det=Arr[0][0]*Arr[1][1]-Arr[0][1]*Arr[1][0];    
            }
    else
    {
    matr=new int*[size-1]; //создание динамического массива
    for(i=0;i<size;++i)
        {
        for(j=0;j<size-1;++j)     
        {
        if(j<i)
          {
            matr[j]=Arr[j];
                   }
        else
            matr[j]=Arr[j+1];
               }
    det+=pow(-1., (i+j))*determ(matr, size-1)*Arr[i][size-1];    //подсчеты
          }
    delete[] matr;  //удаляем массив
    }
    return det; //возвращаем значение определителя
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2014, 16:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Некорректный вывод в файл (C++):

Некорректный вывод в файл - C++
Добрый день! При выводе таблицы умножения в файл числа выводятся некорректно. Заранее спасибо! #include &lt;iostream&gt; #include...

Некорректный вывод в файл - C++
Добрый день. Реализован алгоритм Хаффмана: #include &quot;stdafx.h&quot; using namespace std; class Node { public: int a;...

Некорректный вывод матрицы в файл - C++
Добрый день! Возникла такая проблема, во время работы программы при поиске максимального или минимального значения элемента строки матрицы,...

Некорректный вывод - C++
Почему-то все выводимые y равны 1. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; #include...

Некорректный вывод - C++
Доброго времени суток Суть такова: есть прога, выполняющая действия с односвязным списком. Первоначально, инфа в список подаётся из...

Некорректный вывод - C++
Проблема очень странная, впервые с таким сталкиваюсь. Итак, вводятся сначала 3 числа через пробел (кол-во вводов, ширина открытки и высота)...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
27.03.2014, 17:11 #2
строка 104
Цитата Сообщение от avatar1870 Посмотреть сообщение
fp>>determ(Arr, size);
Похоже тут планировался выходной файл, т.е.
C++
1
fp<<determ(Arr, size);
Аналогично строка 77
0
Wlk
49 / 49 / 13
Регистрация: 07.12.2011
Сообщений: 133
27.03.2014, 17:11 #3
Просто запустив код ошибку выдало тут:

C++
1
104 fp>>determ(Arr, size);
Нельзя читать в правостороннее значение. Либо объявите новую дабл переменную и читайте в нее. Либо, возможно, вы хотели вывести данные, а не ввести их (<<).
0
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 407
27.03.2014, 17:13  [ТС] #4
изменил и вот что выскочило
0
Миниатюры
Некорректный вывод в файл  
Wlk
49 / 49 / 13
Регистрация: 07.12.2011
Сообщений: 133
27.03.2014, 17:19 #5
У вас объявлены 2 ifstream. Из них можно только читать. Если вы хотите осуществлять вывод в файл, вам нужно объявлять ofstream. Или же если этого не требуется то по крайней мере не читать из потока в правостороннее значение.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2014, 17:19
Привет! Вот еще темы с ответами:

Некорректный вывод - C++
Не получается вывести имена файлов (какая-то белиберда на выходе). И не могу понять, как обратиться к содержимому файла #include...

Некорректный вывод текста - C++
Вот учусь писать функции, и наткнулся на проблемку. После написание и компилирования вот этой функции, вместо нужный мне &quot;Введите пароль&quot; и...

Структуры, некорректный вывод - C++
Задание: 1. Описать структуру с именем STUDENT, содержащую следующие поля: • фамилия и инициалы; • номер группы; • успеваемость...

Некорректный вывод программы - C++
Почему после вызова метода get() переменная all (количество сидячих мест в поезде) всегда равна одному и тому же значению 3452816845? ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.03.2014, 17:19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru