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

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

06.11.2010, 17:34. Показов 2398. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.11.2010, 17:34
Ответы с готовыми решениями:

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

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

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

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

11
Тутошний я
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,423
Записей в блоге: 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,423
Записей в блоге: 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
Эксперт С++
3954 / 1809 / 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
Эксперт С++
3954 / 1809 / 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,423
Записей в блоге: 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
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.11.2010, 12:02
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru