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

Размерность матрицы в файле - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Owen04
 Аватар для Owen04
5 / 5 / 3
Регистрация: 25.12.2009
Сообщений: 144
18.11.2012, 19:07     Размерность матрицы в файле #1
Здраствуйте, вот у меня кусок кода в котором я открываю файл и записываю в матрицу q на w!

Хотел бы узнать, как сделать, что бы не задавать размеры, а считывало размер из файла!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void openobraz()
{
 int q=4,w=3;
 
 
 double **matrix;
 matrix = new double *[q];
 for (int i=0; i<q; i++)
 matrix[i]=new double[w];
 
 ifstream IN("obraz.cpp");
     for (int i=0; i<q; i++)
    {
      for (int j=0; j<w; j++)
       {
         IN>>matrix[i][j];
       }
        }
 IN.close();
 delete []matrix;
}
Думал сделать примерно так:
в строке подсчитать количество пробелов до конца строки и +1
а дальше не соображу как.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,898
Записей в блоге: 2
Завершенные тесты: 1
18.11.2012, 19:13     Размерность матрицы в файле #2
сделайте в первой строке чтобы было два числа, через пробел (если в бинарник пишите, то по другому) - размеры массива. При открытии считывайте их и выделяйте массив заданного размера.
Owen04
 Аватар для Owen04
5 / 5 / 3
Регистрация: 25.12.2009
Сообщений: 144
18.11.2012, 19:36  [ТС]     Размерность матрицы в файле #3
Хорошая идея, но у меня такое задание, что файлы будут менятся и каждый раз вводить в первой размеры не оч удобно!

Добавлено через 17 минут
Подскажите как подсчитать количество пробелов в строке)
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
18.11.2012, 19:47     Размерность матрицы в файле #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
#include <iostream>
#include <fstream>
int main()
{
    std::ifstream f;
    int a[10][10],i=0,j=0;
     f.open("1.txt");
    while (f.good())
     {
             f>>a[i][j++];
             if (f.peek()=='\n')
              {
                 i++;
                 j=0;
                      }
          if (f.eof())
             i++;
     } 
     f.close();
     for (int ii=0; ii<i; ii++)
      {
          for (int jj=0; jj<j; jj++)
                std::cout<<a[ii][jj]<<'\t';
          std::cout<<'\n';      
      }  
     std::cout<<"i = "<<i<<" j = "<<j<<std::endl;
    return 0;
}
Содержимое файла:
Код
1 2 3 4 5
6 7 8 9 7
1 2 3 4 5
Тут даже суть не в пробелах. Метод peek() позволяет заглянуть в следующий символ.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,898
Записей в блоге: 2
Завершенные тесты: 1
18.11.2012, 19:49     Размерность матрицы в файле #5
Цитата Сообщение от Owen04 Посмотреть сообщение
Хорошая идея, но у меня такое задание, что файлы будут менятся и каждый раз вводить в первой размеры не оч удобно!
что не удобного? Написать функцию, которая будет записывать в фаил матрицу, попутно сохраняя там её размеры?
Owen04
 Аватар для Owen04
5 / 5 / 3
Регистрация: 25.12.2009
Сообщений: 144
18.11.2012, 19:55  [ТС]     Размерность матрицы в файле #6
Вот пока ждал тож получилось)

C++
1
2
3
4
5
6
7
8
9
10
11
12
 int p=0;
 int n=0;
   while (!IN.eof())
   {
      char c;
      IN.get(c);
      if (c==' ') p++;
      if (c =='\n') n++;
   }
   int s=(p+1)/n;
 
 cout <<s<<" "<<n<<endl;
n- количество строк
s- количество столбцов
p-количество всех пробелов

Добавлено через 1 минуту
Цитата Сообщение от Croessmah Посмотреть сообщение
что не удобного? Написать функцию, которая будет записывать в фаил матрицу, попутно сохраняя там её размеры?
у меня задание
дан файл с выборкой (матрица 2-8 на 50 -150) и нужно его обрабатывать.
Но уже сделал)
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
18.11.2012, 19:55     Размерность матрицы в файле #7
Цитата Сообщение от Owen04 Посмотреть сообщение
Здраствуйте, вот у меня кусок кода в котором я открываю файл и записываю в матрицу q на w!
Хотел бы узнать, как сделать, что бы не задавать размеры, а считывало размер из файла!
А в чём проблема? Сочини формат файла, в котором эти размеры будут.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
18.11.2012, 19:55     Размерность матрицы в файле #8
Owen04, а если числа будут отделены, например, двумя пробелами?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2012, 20:02     Размерность матрицы в файле
Еще ссылки по теме:

Размерность матрицы C++
C++ Как из файла прочитать размерность матрицы и её содержимое?
Задать размерность матрицы с клавиатуры C++

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

Или воспользуйтесь поиском по форуму:
Owen04
 Аватар для Owen04
5 / 5 / 3
Регистрация: 25.12.2009
Сообщений: 144
18.11.2012, 20:02  [ТС]     Размерность матрицы в файле #9
Цитата Сообщение от BumerangSP Посмотреть сообщение
Owen04, а если числа будут отделены, например, двумя пробелами?
а вот это я не предвидел
Yandex
Объявления
18.11.2012, 20:02     Размерность матрицы в файле
Ответ Создать тему
Опции темы

Текущее время: 23:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru