Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
2 / 2 / 3
Регистрация: 11.04.2009
Сообщений: 67
1

Считывание матрицы с файла

06.11.2010, 17:34. Показов 2347. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуста написать программу на C++ Builder которая для заданной матрицы находит: количество строк в матрице, максимальный ее елемент, количество неодинаковых елементов в каждой из строк, суму этих значений по всем строкам, отношение кол.строк к сумме кол-ва неод. елементов, и отношение этой величины к макс елементу матрицы. Написал проаграмму без считывания с файла (считывает с стринггрид), но при запуске выдает ошибку: Is not valid integer value.
Прошу, кто может, подскажите, что не так и помогите реализовать чтение матрицы с файла!
Заранее спасибо!

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
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
 
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int e,f,m,n;
m=StrToInt(Edit6->Text);
n=StrToInt(Edit7->Text);
Edit1->Text=IntToStr(m);
int**mat=new int*[e];
for (e=0; e<n; e++) mat[e]=new int[f];
int i,g(0),w(0);
int *count=new int[g];
for (e=0; e<m; e++)
 for (f=0; f<n; f++)
 mat[e][f]=StrToInt(StringGrid1->Cells[e+1][f+1]);
for (e=0; e<m; e++)
 for (f=0; f<n; f++)
   {if (mat[e][f]==mat[e+1][f])
    {count[g]++; g++;}}
for (i=0; i<g; i++)
 {Memo1->Lines[i].Add(count[g]);
 w=w+count[i];
 g++;}
Edit3->Text=IntToStr(w);
int max(mat[0][0]);
for (e=0; e<m; e++)
 for (f=0; f<n; f++)
  if (mat[e][f]>max) max=mat[e][f];
Edit2->Text=IntToStr(max);
float S(m/w);
Edit4->Text=FloatToStr(S);
Edit5->Text=FloatToStr(S/max);
}
//---------------------------------------------------------------------------
 
 
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{StringGrid1->Options=StringGrid1->Options<<goEditing;
int m,n;
m=StrToInt(Edit6->Text);
n=StrToInt(Edit7->Text);
StringGrid1->RowCount=m+1;
StringGrid1->ColCount=n+1;
}
//---------------------------------------------------------------------------
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.11.2010, 17:34
Ответы с готовыми решениями:

Считывание матрицы из файла
Всем доброго времени суток. Кто может подскакать простой способ считать из файла матрицу...

Считывание матрицы из файла в StringGrid
Всем привет.Столкнулся с проблемой при считывании вещественных чисел. Считываю сначала в листбокс...

Считывание матрицы из файла
Задание следующее: Дана целочисленная матрица размером nxm. Определите количество элементов...

Считывание матрицы из файла
написал программу, суть такова: открывается файл, получаем первый символ если это не пробел, то...

11
Тутошний я
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,420
Записей в блоге: 2
07.11.2010, 23:48 2
Не совсем понял код.
C++
1
int**mat=new int*[e];//чему равно е? И mat вроде не объявлен двумерным массивом.
На какую строку показывает ошибка?
И из какого файла читать матрицу?
0
2 / 2 / 3
Регистрация: 11.04.2009
Сообщений: 67
07.11.2010, 23:57  [ТС] 3
ни на какую, при выполнении выдается ошибка: Is not valid integer value
читать с обыкновенного текстового файла
0
Тутошний я
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,420
Записей в блоге: 2
08.11.2010, 00:58 4
читать с обыкновенного текстового файла
Пример данных в текстовом файле...?
0
32 / 32 / 8
Регистрация: 21.10.2009
Сообщений: 97
08.11.2010, 09:38 5
У вас ене инициализировано в начале.
0
2 / 2 / 3
Регистрация: 11.04.2009
Сообщений: 67
08.11.2010, 19:59  [ТС] 6
Пример данных в текстовом файле: первая строка - размеры матрицы (кол.рядов и кол столбцов расделены пробелами) далее собственно елементы матрицы
Вложения
Тип файла: txt in.txt (47 байт, 48 просмотров)
0
Эксперт С++
3953 / 1808 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
08.11.2010, 20:04 7
Determinant, простой пример считывания значений из файла в массив я приводил вот здесь: Посчитать матрицы

Если необходимо - замените статические массивы динамическими (соответственно, добавив считывание размера матрицы).
0
2 / 2 / 3
Регистрация: 11.04.2009
Сообщений: 67
08.11.2010, 20:30  [ТС] 8
При выполнении выскакивает ошибка:
'Acces violation at address 01194042 in module BORLNDMM.DLL' 'Read of address 00000008'
что не так?
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <fstream.h>
#include <stdio.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
 
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int e,f,m,n;
FILE *input=fopen("in.txt","r");
int**mat=new int*[e];
for (e=0; e<n; e++) mat[e]=new int[f];
int i,g(0),w(0);
int *count=new int[g];
 
if (input) { fscanf(input,"%d",&m);
 fscanf(input,"%d",&n);
 for (int e = 0; e < m; e++) {
      for (int f = 0; f < n; f++) {
        fscanf(input, "%d", &mat[e][f]);
        }}}
 
for (e=0; e<m; e++)
 for (f=0; f<n; f++)
   {if (mat[e][f]==mat[e+1][f])
    {count[g]++; g++;}}
for (i=0; i<g; i++)
 {Memo1->Lines[i].Add(count[g]);
 w=w+count[i];
 g++;}
Edit3->Text=IntToStr(w);
int max(mat[0][0]);
for (e=0; e<m; e++)
 for (f=0; f<n; f++)
  if (mat[e][f]>max) max=mat[e][f];
Edit2->Text=IntToStr(max);
float S(m/w);
Edit4->Text=FloatToStr(S);
Edit5->Text=FloatToStr(S/max);
fclose(input);
}
//---------------------------------------------------------------------------
0
Эксперт С++
3953 / 1808 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
08.11.2010, 20:31 9
Determinant, вы вообще читаете то, что вам люди пишут?
Уже два человека вас спросили, почему вы не задаёте переменной e необходимое значение...
0
2 / 2 / 3
Регистрация: 11.04.2009
Сообщений: 67
08.11.2010, 20:41  [ТС] 10
вроде инициализировал, а все равно та же история...
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <fstream.h>
#include <stdio.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
 
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{FILE *input=fopen("in.txt","r");
int m,n;
 if (input) { fscanf(input,"%d",&m);
 fscanf(input,"%d",&n);}
int e(n),f(m);
int**mat=new int*[e];
for (e=0; e<n; e++) mat[e]=new int[f];
int i,g(0),w(0);
int *count=new int[g];
 
if (input) {
 for (int e = 0; e < m; e++) {
      for (int f = 0; f < n; f++) {
        fscanf(input, "%d", &mat[e][f]);
        }}}
 
for (e=0; e<m; e++)
 for (f=0; f<n; f++)
   {if (mat[e][f]==mat[e+1][f])
    {count[g]++; g++;}}
for (i=0; i<g; i++)
 {Memo1->Lines[i].Add(count[g]);
 w=w+count[i];
 g++;}
Edit3->Text=IntToStr(w);
int max(mat[0][0]);
for (e=0; e<m; e++)
 for (f=0; f<n; f++)
  if (mat[e][f]>max) max=mat[e][f];
Edit2->Text=IntToStr(max);
float S(m/w);
Edit4->Text=FloatToStr(S);
Edit5->Text=FloatToStr(S/max);
fclose(input);
}
//---------------------------------------------------------------------------
0
32 / 32 / 8
Регистрация: 21.10.2009
Сообщений: 97
09.11.2010, 07:35 11
Теперь n не инициализирована
0
Тутошний я
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,420
Записей в блоге: 2
09.11.2010, 12:02 12
Единственное, не понял, почему при наличии двухзначных чисел в массиве, выдаёт ошибку.
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
int e,f;
TStringList *Lst = new TStringList;
Lst->LoadFromFile("in.txt");
AnsiString st="";//строка
int s=0,t;
 
for(int t=0;t<Lst->Strings[0].Length();t++)
{
e=StrToInt(Lst->Strings[0].SubString(1,Lst->Text.Pos(" ")-1));//
s=Lst->Text.Pos(" ");
f=StrToInt(Lst->Strings[0].SubString(s+1,Lst->Text.Pos(" ")-1));
}
 
int**mat=new int*[e];
for (int i=0; i<f; i++) mat[i]=new int[f];
s=0;
for (int i=0;i<e;i++)
{
 st=Lst->Strings[i+1];
 t=0;
 for (int j=0;j<st.Length();j++)
 {
  mat[i][t]=StrToInt(st.SubString(s+1,st.Pos(" ")-1));
  s=st.Pos(" ");
  t++;
 }
}
delete Lst;
//здесь необходимые вычисления по массиву
Memo1->Lines->Add(IntToStr(mat[0][0]));
for (int i = 0; i < f; i++) delete[]mat[i];
delete[]mat;
0
09.11.2010, 12:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2010, 12:02
Помогаю со студенческими работами здесь

Считывание матрицы из файла
Помогите пожалуйста: Нужно считать из файла матрицу NxM. Размерность задается в 1ой строке файла....

Считывание с файла и матрицы
вот у меня есть файл...я с него считываю информацию,в данном случае это цифры..и преобразую в...

Считывание матрицы из файла
Ммм помогите пожалуйста с частью программы. Нужен код программы visual c++ который будет...

Считывание матрицы из файла
В файл записана матрица, которая указана в программе за комментариями (REM). Числа разделены...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru