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

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

Войти
Регистрация
Восстановить пароль
 
No0b41k
0 / 0 / 0
Регистрация: 19.09.2010
Сообщений: 68
#1

матрица, и вывод из\в фаил - C++

09.12.2010, 21:12. Просмотров 360. Ответов 5
Метки нет (Все метки)

не работает так как хотелось бы(, а в чем проблемы я не могу понять((, когда начинает считать матрицу введенную с клавиатуры, просто берет и вылетает, а ошибки как таковой я не нахожу(. пожалуйста помогите!

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
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#include <iostream>
#include <ctime> 
#include <cmath>
#include <stdio.h>
#include <cstdlib>
  
using namespace std;
int sr_geo(); //среднее геометрическое
void s_klav(); //ввод с клавиатуры
void mas_vyv(); //вывод на экран
int m_menu(); //меню программы
int iz_faila(); //ввод из фаила
int masv_file(); //вывод в фаил
int **arr;
int Rw = 0;        //Размерность матрицы
int sr_geo(int **arr, int n)
{
    int sr_geo=0;
    float pr=1;
    for(int i=0; i<n; i++)
        pr*=abs(arr[i][i]);
    
    sr_geo = (int)exp(log((float)pr)/n);
        return sr_geo;
}
 
int main()
{
    char fv;
    if(m_menu())
    {
    cout<<"Resultat: \n";
    mas_vyv();
    
    cout<<"Vyvesti v fail? y/n \n";
    cin>>fv;
    
    if (fv=='y')
        masv_file();
    else printf("Exit \n");
    }
    system("pause");
return 0;
}
void s_klav()
{
    srand((unsigned)time(NULL));
    int n,i,j;
    int sr;
    cout<<"Vvedite razmer massiva: ";
    cin>>Rw;
    arr = new int*[Rw];
    cout<<"Massiv: "<<endl;
    
    for(i=0; i<Rw; i++)
    {
        arr[i] = new int[n];
        for(j=0; j < Rw; j++)
        {
            arr[i][j]=rand()%9+1;
            cout<<arr[i][j]<<"  ";
        }
            cout<<endl;
    }
}
void mas_vyv()
{
    int sr = sr_geo(arr,Rw); 
        cout<<endl;
        cout<<"Sformirovannaya matrica:"<<endl;
        for(int i=0; i < Rw; i++)
        {
            for(int j=0; j < Rw; j++)
            {
                    if((i+j)%2==0)
                    {
                            arr[i][j]=sr;
                    }
                    cout<<arr[i][j]<<"  ";
            }
            cout<<endl;
        }
            delete arr;
}
int m_menu()
{
    int cho;
    
    cout<<"1 - vvesti s klaviaturi\n2 - iz faila\n0 - vyhod\n";
    cin>>cho;
    switch(cho)
    {
    case 0:
        exit('Exit');
        break;
    case 1:
        s_klav();
        return 1;
        break;
    case 2:
        if(iz_faila())
        return 1;
        else return 0;
        break;
    
        default: cout<<"vvedite pynkt menu \n";
    }
    return 1;
}
int iz_faila()
{
    FILE *f;
    char FileName [80];
    printf ("Insert your full address: ");
    gets (FileName);
    printf ("File name %s\n", FileName);
    f=fopen(FileName,"rt");
    int nElements = 0, m=0;
    char ch;
     if(f!=NULL)
    {
        printf("File was open! \n");
        while ( ( ch = getc ( f ) ) != EOF )
        {
            if((ch != '\n') && (ch != ' ')) nElements++;    //Определяем размерность матрицы записанной в файл
                printf(" %c ", ch);            //Выводим
        }
        
        printf("\n Number = %d \n", nElements);
        fseek(f,0,SEEK_SET);
/*      m = new float * [n];
        for (i=0;i<n;i++)
        {
            m[i]=new float [n];
        }
        for (i=0;i<n;i++)
        {
            for (j=0;j<n;j++)
                fscanf(f,"%f",&m[i][j]);
        }   */
       fclose(f);
       return 1;
    }
    else 
    {
        cout<<"Oshibka otkritiya!\n";
        return 0;
    }
}
int masv_file()
{
//    char fname [80];
    cout<<"Vvedite polnoe nazvanie fayla: \n";
//    gets(fname);
    
    FILE *pFile = fopen("File.txt", "w+");
    if(pFile!=NULL)
    {
        for (int i=0; i < Rw; i++)
            for (int j=0; j < Rw; j++)
            {
                fprintf(pFile,"%d ", arr[i][j]);
                printf(" %d ", arr[i][j]);
            }
                fprintf(pFile,"\n");
        fclose(pFile);
            return 1;
    }
    else 
    {
        cout<<"Oshibka otkritiya!\n";
        return 0;
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2010, 21:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос матрица, и вывод из\в фаил (C++):

Ввод вывод в фаил - C++
Уважаемые эксперты помогите пожалуйста. Мне необходимо написать программу, которая сортирует методом пузырька слова, записанные в отдельном...

Ввод-вывод текста в фаил - C++
Текст в фаил забивает, но когда требуется поменять местами в файле то выводит одн буквы &quot;М&quot; , хотя их нету при вводе.=( Заменяет все...

матрица и ее ввод\вывод из фаила - C++
Доброго дня ув. форумчане. Пожалуйста помогите исправить программу, делал в Visual Studio 2006, вылазит множество ошибок, я никак не могу...

Разработать класс матрица, конструктор по умолчанию, вывод на экран - C++
Разработать класс матрица, конструктор по умолчанию, вывод на экран Вроде бы разработала но не работает. подскажите, в чем проблема? ...

дана квадратичная матрица z[n][n]. составить программу, которая если матрица симметричная(транспонированная матрица равна исходной), сделает ее не сим - C++
помогите пожалуйста. условие: дана квадратичная матрица z. составить программу, которая если матрица симметричная(транспонированная...

Класс матрица (осуществить вывод матриц в виде массива 3х3) - C++
Здравствуйте. Помогите пожалуйста осуществить вывод матриц в виде массива 3х3, а также выбор метода класса по желанию пользователя. ...

5
No0b41k
0 / 0 / 0
Регистрация: 19.09.2010
Сообщений: 68
12.12.2010, 00:05  [ТС] #2
помогите, это очент срочно, пожалуйста!
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
12.12.2010, 00:31 #3
No0b41k, Эм...
C++
1
arr[i] = new int[n];
При этом n указано без инициализации. Итого выделяем память под массив муссорного кол-ва элементов. Оригинально
0
No0b41k
0 / 0 / 0
Регистрация: 19.09.2010
Сообщений: 68
12.12.2010, 21:40  [ТС] #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
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#include <iostream>
#include <ctime> 
#include <cmath>
#include <stdio.h>
#include <cstdlib>
  
using namespace std;
int sr_geo(); //ñðåäГ*ГҐГҐ ãåîìåòðè÷åñêîå
void s_klav(); //ââîä Г± ГЄГ«Г*ГўГЁГ*òóðû
void mas_vyv(); //âûâîä Г*Г* ГЅГЄГ°Г*Г*
int m_menu(); //ìåГ*Гѕ ïðîãðГ*ììû
int iz_faila(); //ââîä ГЁГ§ ГґГ*ГЁГ«Г*
int masv_file(); //âûâîä Гў ГґГ*ГЁГ«
int **arr;
int Rw = 0;        //ГђГ*çìåðГ*îñòü Г¬Г*òðèöû
int sr_geo(int **arr, int n)
{
    int sr_geo=0;
    float pr=1;
    for(int i=0; i<n; i++)
        pr*=abs(arr[i][i]);
    
    sr_geo = (int)exp(log((float)pr)/n);
        return sr_geo;
}
 
int main()
{
    char fv;
    if(m_menu())
    {
    cout<<"Resultat: \n";
    mas_vyv();
    
    cout<<"Vyvesti v fail? y/n \n";
    cin>>fv;
    
    if (fv=='y')
        masv_file();
    else printf("Exit \n");
    }
    system("pause");
return 0;
}
void s_klav()
{
    srand((unsigned)time(NULL));
    int n,i,j;
    int sr;
    cout<<"Vvedite razmer massiva: ";
    cin>>Rw;
    arr = new int*[Rw];
    cout<<"Massiv: "<<endl;
    
    for(i=0; i<Rw; i++)
    {
        arr[i] = new int[Rw];
        for(j=0; j < Rw; j++)
        {
            arr[i][j]=rand()%9+1;
            cout<<arr[i][j]<<"  ";
        }
            cout<<endl;
    }
}
void mas_vyv()
{
    int sr = sr_geo(arr,Rw); 
        cout<<endl;
        cout<<"Sformirovannaya matrica:"<<endl;
        for(int i=0; i < Rw; i++)
        {
            for(int j=0; j < Rw; j++)
            {
                    if((i+j)%2==0)
                    {
                            arr[i][j]=sr;
                    }
                    cout<<arr[i][j]<<"  ";
            }
            cout<<endl;
        }
            delete arr;
}
int m_menu()
{
    int cho;
    
    cout<<"1 - vvesti s klaviaturi\n2 - iz faila\n0 - vyhod\n";
    cin>>cho;
    switch(cho)
    {
    case 0:
        exit('Exit');
        break;
    case 1:
        s_klav();
        return 1;
        break;
    case 2:
        if(iz_faila())
        return 1;
        else return 0;
        break;
    
        default: cout<<"vvedite pynkt menu \n";
    }
    return 1;
}
int iz_faila()
{
    FILE *f;
    char FileName [80];
    printf ("Insert your full address: ");
    gets (FileName);
    printf ("File name %s\n", FileName);
    f=fopen(FileName,"rt");
    int nElements = 0, m=0;
    char ch;
     if(f!=NULL)
    {
        printf("File was open! \n");
        while ( ( ch = getc ( f ) ) != EOF )
        {
            if((ch != '\n') && (ch != ' ')) nElements++;    //Îïðåäåëÿåì Г°Г*çìåðГ*îñòü Г¬Г*òðèöû Г§Г*ГЇГЁГ±Г*Г*Г*îé Гў ГґГ*éë
                printf(" %c ", ch);            //Âûâîäèì
        }
        
        printf("\n Number = %d \n", nElements);
        fseek(f,0,SEEK_SET);
/*      m = new float * [n];
        for (i=0;i<n;i++)
        {
            m[i]=new float [n];
        }
        for (i=0;i<n;i++)
        {
            for (j=0;j<n;j++)
                fscanf(f,"%f",&m[i][j]);
        }   */
       fclose(f);
       return 1;
    }
    else 
    {
        cout<<"Oshibka otkritiya!\n";
        return 0;
    }
}
int masv_file()
{
//    char fname [80];
    cout<<"Vvedite polnoe nazvanie fayla: \n";
//    gets(fname);
    
    FILE *pFile = fopen("File.txt", "w+");
    if(pFile!=NULL)
    {
        for (int i=0; i < Rw; i++)
            for (int j=0; j < Rw; j++)
            {
                fprintf(pFile,"%d ", arr[i][j]);
                printf(" %d ", arr[i][j]);
            }
                fprintf(pFile,"\n");
        fclose(pFile);
            return 1;
    }
    else 
    {
        cout<<"Oshibka otkritiya!\n";
        return 0;
    }
}
спасибо огромное!, вот поправил, а как теперь сделать что бы выводило далее в фаил?, просто теперь когда выскакивает "vyvesti v fayl?" и нужно ввести y или n, что бы подтвердить или отказаться, а оно просто пишет "нажмите любую клавишу для продолжения, и на этом программа завершается.
0
No0b41k
0 / 0 / 0
Регистрация: 19.09.2010
Сообщений: 68
14.12.2010, 15:10  [ТС] #5
немного подправил, теперь первая ошибка исчезла, но появилась другая, когда нажимаешь "y" то есть как бы соглашаешься вывести матрицу в фаил, то пишет "обнаружена ошибка, приложение будет остановлено, отправлить ли отчет на microsoft ....". а в проге пишет "press any key to continue".

а вторая ошибка осталась:



а вот это выскакивает, когда выбираю пункт меню "2 - iz faila". Как исправить?((

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
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
#include <iostream>
#include <ctime> 
#include <cmath>
#include <stdio.h>
#include <cstdlib>
  
using namespace std;
int sr_geo(); //ñðåäГ*ГҐГҐ ãåîìåòðè÷åñêîå
void s_klav(); //ââîä Г± ГЄГ«Г*ГўГЁГ*òóðû
void mas_vyv(); //âûâîä Г*Г* ГЅГЄГ°Г*Г*
int m_menu(); //ìåГ*Гѕ ïðîãðГ*ììû
int iz_faila(); //ââîä ГЁГ§ ГґГ*ГЁГ«Г*
int masv_file(); //âûâîä Гў ГґГ*ГЁГ«
int **arr;
int Rw = 0;        //ГђГ*çìåðГ*îñòü Г¬Г*òðèöû
int sr_geo(int **arr, int n)
{
    int sr_geo=0;
    float pr=1;
    for(int i=0; i<n; i++)
        pr*=abs(arr[i][i]);
    
    sr_geo = (int)exp(log((float)pr)/n);
        return sr_geo;
}
 
int main()
{
    char fv;
    if(m_menu())
    {
    cout<<"Resultat: \n";
    mas_vyv();
    
cout<<"Vyvesti v fail? y/n \n";
   do 
   {
       cin>>fv;
    }while(fv!='y' && fv!='n');
    if (fv=='y')
        masv_file();
    else printf("Exit \n");
    }
    system("pause");
return 0;
}
void s_klav()
{
    srand((unsigned)time(NULL));
    int n,i,j;
    int sr;
    cout<<"Vvedite razmer massiva: ";
    cin>>Rw;
    arr = new int*[Rw];
    cout<<"Massiv: "<<endl;
    
    for(i=0; i<Rw; i++)
    {
        arr[i] = new int[Rw];
        for(j=0; j < Rw; j++)
        {
            arr[i][j]=rand()%9+1;
            cout<<arr[i][j]<<"  ";
        }
            cout<<endl;
    }
}
void mas_vyv()
{
    int sr = sr_geo(arr,Rw); 
        cout<<endl;
        cout<<"Sformirovannaya matrica:"<<endl;
        for(int i=0; i < Rw; i++)
        {
            for(int j=0; j < Rw; j++)
            {
                    if((i+j)%2==0)
                    {
                            arr[i][j]=sr;
                    }
                    cout<<arr[i][j]<<"  ";
            }
            cout<<endl;
        }
            delete arr;
}
int m_menu()
{
    int cho;
    
    cout<<"1 - vvesti s klaviaturi\n2 - iz faila\n0 - vyhod\n";
    cin>>cho;
    switch(cho)
    {
    case 0:
        exit('Exit');
        break;
    case 1:
        s_klav();
        return 1;
        break;
    case 2:
        return iz_faila();
        break;
 
        default: cout<<"vvedite pynkt menu \n";
    }
    return 1;
}
int iz_faila()
{
    FILE *f;
    char FileName [80];
    printf ("Insert your full address: ");
    gets (FileName);
    printf ("File name %s\n", FileName);
    f=fopen(FileName,"rt");
    int nElements = 0, m=0;
    char ch;
     if(f!=NULL)
    {
        printf("File was open! \n");
        while ( ( ch = getc ( f ) ) != EOF )
        {
            if((ch != '\n') && (ch != ' ')) nElements++;    //Îïðåäåëÿåì Г°Г*çìåðГ*îñòü Г¬Г*òðèöû Г§Г*ГЇГЁГ±Г*Г*Г*îé Гў ГґГ*éë
                printf(" %c ", ch);            //Âûâîäèì
        }
        
        printf("\n Number = %d \n", nElements);
        fseek(f,0,SEEK_SET);
/*      m = new float * [n];
        for (i=0;i<n;i++)
        {
            m[i]=new float [n];
        }
        for (i=0;i<n;i++)
        {
            for (j=0;j<n;j++)
                fscanf(f,"%f",&m[i][j]);
        }   */
       fclose(f);
       return 1;
    }
    else 
    {
        cout<<"Oshibka otkritiya!\n";
        return 0;
    }
}
 
int masv_file()
{
//    char fname [80];
//    cout<<"Vvedite polnoe nazvanie fayla: \n";
//    gets(fname);
    
    FILE *pFile = fopen("File.txt", "w+");
    if(pFile != NULL)
    {
        for (int i=0; i < Rw; i++)
        {
            for (int j=0; j < Rw; j++)
            {
                fprintf(pFile,"%d ", arr[i][j]);
                printf(" %d ", arr[i][j]);
            }
        
            fprintf(pFile,"\n");
            puts("");
        }
        fclose(pFile);
            return 1;
    }
    else 
    {
        cout<<"Oshibka otkritiya!\n";
        exit(1);
    }
    return 1;
}
0
deadlock
376 / 355 / 8
Регистрация: 14.12.2010
Сообщений: 1,265
14.12.2010, 15:39 #6
в функции void mas_vyv() в конце зачем-то стоит delete arr, естественно, что после этого обращение к элементам массива вызывает ошибку.
а в функции int iz_faila() нужно заменить gets (FileName) на scanf("%s",FileName)
0
14.12.2010, 15:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2010, 15:39
Привет! Вот еще темы с ответами:

Матрица: ввод, вывод, выполнение задания. Оформление с функциями и меню - C++
Сделать с тремя функциями:ввод массива, вывод массива, выполнение задания. Для выбора одной из трех оформить меню. ...

Класс Квадратная матрица. Методы: сложение с матрицей, транспонирование, вывод элементов - C++
Класс «Квадратная матрица». Методы: сложение с матрицей, транспониро-вание, вывод элементов матрицы на дисплей. А следующая программа,...

Сохранение в фаил - C++
Ребят помогите. В общем есть таблица сделанная структурой, и вот ее надо записать в фаил и прочитать оттуда. Сколько лазил по интернету не...

не открывается фаил - C++
#include&lt;stdio.h&gt; #include&lt;conio.h&gt; #include&lt;malloc.h&gt; #include&lt;string.h&gt; #include&lt;iostream&gt; using namespace std; struct...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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