С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
chief.hame
0 / 0 / 0
Регистрация: 17.08.2011
Сообщений: 21
1

Как лучше считывать матрицу размера 32х870

19.09.2011, 23:00. Просмотров 941. Ответов 15
Метки нет (Все метки)

Подскажите,пожалуйста, как лучше считывать матрицу размера 32х870 (размеры вводятся вручную) из .txt,если в дальнейшем планируется использование ее элементов для подстановки в функцию.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::Button1Click(TObject *Sender)
{
        int n;
        n=StrToInt(Edit1->Text);
        int m;
        m=StrToInt(Edit2->Text);
        Label2->Caption=FloatToStrF(n,ffGeneral,7,2);// для проверки
        for(int i = 0; i < n; i++)
            {Label3->Caption=FloatToStrF(i,ffGeneral,7,2);// для проверки
        for(int j = 0; j < m; j++);
 
 
}
}
Заранее благодарен.
0
Вложения
Тип файла: rar L.rar (32.3 Кб, 29 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2011, 23:00
Ответы с готовыми решениями:

Как лучше организовать квадратную матрицу?
Как лучше организовать в Билдере квадратную матрицу #include&lt;iostream&gt; #include&lt;conio.h&gt; int...

Задача: Сформировать матрицу указанного размера с компонентом StringGrid
Сформировать матрицу указанного размера с помощью компонента StringGrid, ввести элементы матрицы и...

как считывать «=», «+», «-»
Мне нужно написать прогу в которой пользователь пишет геометрическую формулу, а программа ее...

как считывать движение мышки
Привет,у меня проблема я в билдере програмирую недавно и у меня задача надо как то считывать...

Как считывать изменяющийся текстовый файл?
Например есть лог-файл text.txt, в который периодически, построчно выводится информация. Как...

15
LK
Заблокирован
19.09.2011, 23:26 2
может, это пока поможет
0
chief.hame
0 / 0 / 0
Регистрация: 17.08.2011
Сообщений: 21
20.09.2011, 17:32  [ТС] 3
LK,
если честно, то ввиду слабого знания мною синтаксиса и азов программирования, тяжеловато в этом разобраться...вот я думал, что может у кого найдется время объяснить и помочь.но все равно спасибо, что откликнулись.
0
LK
Заблокирован
20.09.2011, 18:39 4
у меня были по этому поводу некоторые мысли, но сегодня почему-то не прет читать лекцию... да и вам не стоит останавливаться на "слабом знании ... синтаксиса и азов программирования" .
Самый тупой способ — это формат файла, в котором через пробел и/или перевод строки идут
— размеры матрицы (высота и ширина)
— элементы, скажем, построчно

Некрасиво отформатированный, но законный вид
3
4 11
12 13 14 21
22
23 24
31 32 33 34
То же самое красиво
3 4
11 12 13 14
21 22 23 24
31 32 33 34
Код для чтения
C++
1
2
3
4
5
6
7
8
9
int rows, cols;
cin >> rows >> cols;
your_matrix_set_size(rows, cols);
for(int y=0; y!=rows; ++y)
  for(int x=0; x!=cols; ++x)
  {
    int elem; cin >> elem;
    your_matrix_set_at(x,y, elem);
  }
Более продвинутые варианты — использовать какой-нибудь язык разметки. Например, CSV (comma-separated values).
... << RSDN@Home 1.2.0 alpha rev. 655>>
Добавлено через 1 минуту
Нужно считать матрицу

Добавлено через 31 секунду
Считать матрицу из файла

и т.д. ...
1
chief.hame
0 / 0 / 0
Регистрация: 17.08.2011
Сообщений: 21
23.09.2011, 10:28  [ТС] 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        int X;
        X=StrToInt(Edit1->Text);
        int Y;
        Y=StrToInt(Edit2->Text);
        int **Matrix = new int * [X];
        for (int i = 0; i < X; i++) {
        Matrix[i] = new int [Y];
        }
        for (int i = 0; i < X; i++) {
        for (int j = 0; j < Y; j++) {
        fstream fi("L1.txt");
        int *Matrix=new int [i][j];
        for( int j=0;j<Y;j++){
        for ( int i = 0; i < X; i++ )
                {
                        fi >> x;
                                   Matrix[i][j]=x;
                }
        }
Получился следующий неработающий набросок,
прошу помочь разобраться с ошибкой.
Заранее спасибо.

Добавлено через 13 часов 24 минуты
Ошибка в 14 строке
E2313 Constant expression required
0
koldun
145 / 100 / 6
Регистрация: 11.03.2010
Сообщений: 478
23.09.2011, 11:25 6
Цитата Сообщение от chief.hame Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        int X;
        X=StrToInt(Edit1->Text);
        int Y;
        Y=StrToInt(Edit2->Text);
        int **Matrix = new int * [X];
        for (int i = 0; i < X; i++) {
        Matrix[i] = new int [Y];
        }
        for (int i = 0; i < X; i++) {  //  бесхозная скобка
        for (int j = 0; j < Y; j++) { //  бесхозная скобка
        fstream fi("L1.txt");
        int *Matrix=new int [i][j];
        for( int j=0;j<Y;j++){
        for ( int i = 0; i < X; i++ )
                {
                        fi >> x;
                                   Matrix[i][j]=x;
                }
        }
Получился следующий неработающий набросок,
прошу помочь разобраться с ошибкой.
Заранее спасибо.

Добавлено через 13 часов 24 минуты
Ошибка в 14 строке
E2313 Constant expression required

ну например у вас открывающихся скобок { на 2 штуки больше чем закрывающихся }
где пропустили смотрите сами...
0
QVO
644 / 455 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
Завершенные тесты: 3
23.09.2011, 12:48 7
chief.hame, плохой код. Перепиши обязательно
0
chief.hame
0 / 0 / 0
Регистрация: 17.08.2011
Сообщений: 21
23.09.2011, 12:55  [ТС] 8
Цитата Сообщение от QVO Посмотреть сообщение
chief.hame, плохой код. Перепиши обязательно
Можно, пожалуйста, поподробней?
0
koldun
145 / 100 / 6
Регистрация: 11.03.2010
Сообщений: 478
23.09.2011, 13:18 9
Цитата Сообщение от chief.hame Посмотреть сообщение
Можно, пожалуйста, поподробней?
со скобками разберись сначало
где еще закрыть надо ?

а уж потом можно анализировать код дальше.
0
chief.hame
0 / 0 / 0
Регистрация: 17.08.2011
Сообщений: 21
23.09.2011, 14:38  [ТС] 10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
int X;
        X=StrToInt(Edit1->Text);
        int Y;
        Y=StrToInt(Edit2->Text);
        int **Matrix = new int * [X];
        for (int i = 0; i < X; i++) {
        Matrix[i] = new int [Y];
        }
        for (int i = 0; i < X; i++) {
        for (int j = 0; j < Y; j++)
        fstream fi("L1.txt");
        int *Matrix=new int [i][j];
        for( int j=0;j<Y;j++){
        for ( int i = 0; i < X; i++ )
 
                        fi >> x;
                                   Matrix[i][j]=x;
                }
        }
}
Теперь там же ругается, что j не определен..
Undefined symbol 'j'
0
koldun
145 / 100 / 6
Регистрация: 11.03.2010
Сообщений: 478
23.09.2011, 14:47 11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        int X;
        int Y;
        int **Matrix = new int * [X];
        X=StrToInt(Edit1->Text);
        Y=StrToInt(Edit2->Text);
        for (int i = 0; i < X; i++) {
        Matrix[i] = new int [Y];
        }
 
 
        for (int i = 0; i < X; i++) {  //тут ты обьявил i   /*    начало цыкла "1"   */
                for (int j = 0; j < Y; j++)  // тут ты обьявил j
                    fstream fi("L1.txt");
                    int *Matrix=new int [i][j];
                        for( int j=0;j<Y;j++){  // а вот тут все еще продолжаетса цыкл "1" но ты зачем то еще раз обьявляешь i
                        for ( int i = 0; i < X; i++ )   //аналогично с j ????? 
 
                        fi >> x;  //почему тут х стала маленькой? вы ее гдето раньше обьявили ?
                                   Matrix[i][j]=x;  
                }
        }
0
chief.hame
0 / 0 / 0
Регистрация: 17.08.2011
Сообщений: 21
23.09.2011, 15:20  [ТС] 12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int X;
                int Y;
                int **Matrix = new int * [X];
                X=StrToInt(Edit1->Text);
                Y=StrToInt(Edit2->Text);
                for (int i = 0; i < X; i++) {
                Matrix[i] = new int [Y];
                }
 
 
                for (int i = 0; i < X; i++) {  //тут ты обьявил i   /*    начало цыкла "1"   */
                                for (int j = 0; j < Y; j++)  // тут ты обьявил j
                                        fstream fi("L1.txt");
                                        int *Matrix=new int [i][j];
 
 
               
                                                                   Matrix[i][j]<<fi;  
                                }
                }
Спасибо, что возитесь с балбесом.исправил следующим образом, но все та же ошибка((
0
QVO
644 / 455 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
Завершенные тесты: 3
23.09.2011, 16:19 13
Код программы:
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
// Переменные
int **Array;
int n = 5;
//-------- Создаем массив
Array = new int*[n];
 
for (int i = 0; i < n; i++)
{
Array[i] = new int[n];
}
//-------- 
//-------- Загружаем в поток данные
fstream stream(".\\12.txt");
//-------- 
//-------- Заполняем массив
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
// Если нужно чтобы данные шли так же как и в текстовом файле
// То просто поменяй местами индексы в массиве Array[i][j] на Array[j][i]
 stream >> Array[i][j];
}
}
//--------
//-------- Заполняем стринг грид
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
StringGrid1->Cells[i][j]=IntToStr(Array[i][j]);
}
}
Структура текстового файла:
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
Проверяй. Создание интового массива 5х5. Заполнение массива данными из файла с помощью fstream.
Вывод на экран(заполняя StringGrid данными из массива).
1
Вложения
Тип файла: rar fstream_and_int_mass.rar (829.3 Кб, 10 просмотров)
QVO
644 / 455 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
Завершенные тесты: 3
23.09.2011, 16:44 14
*Админы удалите пожалуйста это сообщение*
0
chief.hame
0 / 0 / 0
Регистрация: 17.08.2011
Сообщений: 21
23.09.2011, 17:05  [ТС] 15
QVO,
Спасибо огромное!!!
Если я правильно понял, в коде используется статистический массив?
0
QVO
644 / 455 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
Завершенные тесты: 3
23.09.2011, 17:15 16
chief.hame, пожалуйста.
Динамический интовый массив размерностью 5х5.
1
23.09.2011, 17:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2011, 17:15

Как считывать свойства файлов в C++ Builder?
Срочно нужна помощь! Как считывать свойства файлов (значения тегов для mp-3 файлов, значения...

Как считывать числа из memo или edit?
Уже неделю сижу и пытаюсь понять как это сделать. Все, что можно перепробовал, но считывается...

Как считывать значение строки на экране и записывать её в переменную?
Здравствуйте. Есть программа прикасаться к которой нельзя. То есть она работает сама по себе. В...


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

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

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