Имя:    Пароль:      Помнить меня       
Unsorted   ~  Software  ~  Development and Design  ~  Как задать размер масива снаружи c/c++
Flakes
Сообщение  24 Сен 2009, 18:00  Ссылка : Ответить с цитатой
Возраст: 33 Пол: Мужской  Доверенный пользователь
C нами с 25.02.2007
Репутация: 288.4

Значит есть у меня программа которая считает матрицу по методу Гауса, считывает данные из фаила и записывает результат в новый, так вот проблема в следующем: при подачи матрицы из фаила хотелось бы писать разряд этой матрицы, который в дальнейшем используется как размер массива который будет заполняться считываемой матрицей, вобщем дальше использоваться внутри программы. Побывал задать глобальную переменную которую вначале программы, то есть до задания массивов задаю из фаила. Но как то все не работает, что самое интерестное у друга моего на линухе под его компилятором все работает и собирается
В начало
Профиль : Фотоальбом : Личное Сообщение : SkypeID : ICQ
nazgul
Сообщение  24 Сен 2009, 18:22  Ссылка : Ответить с цитатой
Пол: Мужской 
C нами с 04.07.2005
Репутация: 53.2

int ArraySize;
int *pArray;

//берем откуда-нибудь размер, например с консоли
cin >> ArraySize;

//выделяем память
pArray = new int[ ArraySize ];

//что-нибудь делаем
for( int i = 0; i < ArraySize; ++i )
pArray[ i ] = i;

//освобождаем память
delete [] pArray;
В начало
Профиль : Личное Сообщение
SlyStreem
Сообщение  24 Сен 2009, 18:29  Ссылка : Ответить с цитатой
Возраст: 36 Пол: Мужской  Доверенный пользователь
C нами с 13.02.2009
Репутация: 72.5

не совсем понял в чем проблема... опиши прост в классе переменную размера массива... файлы для чтения и методы все для них..

потом в нужном месте напиши создание экземпляра класса..

_____________________________
В начало
Профиль : Фотоальбом : Личное Сообщение
Flakes
Сообщение  24 Сен 2009, 18:31  Ссылка : Ответить с цитатой
Возраст: 33 Пол: Мужской  Доверенный пользователь
C нами с 25.02.2007
Репутация: 288.4

Хочу чтоб было так:

#include "stdafx.h"
int N;
FILE *in, *out;
double around(int znak, double element);
double modul(double );

int _tmain(int argc, _TCHAR* argv[])
{
in = fopen("in.txt","r");//open file read
out = fopen("out.txt","w");//open file write
fscanf_s(in,"%d", &N);
double a[N][N], y[N], x[N], K, r = 0, max;//Задание переменных вещественных
int i, j, imax, d, znak;//Задание переменных целочисленных
for(i=0;i<N>
for(j=0;j<N;j++)//Считывание из фаила матрицы
fscanf_s(in, "%lf", &a[i][j]);//<==

Добавлено спустя 34 секунды:

nazgul, спс ща попробую
В начало
Профиль : Фотоальбом : Личное Сообщение : SkypeID : ICQ
SlyStreem
Сообщение  24 Сен 2009, 18:33  Ссылка : Ответить с цитатой
Возраст: 36 Пол: Мужской  Доверенный пользователь
C нами с 13.02.2009
Репутация: 72.5

хах.. ну так массив ты не создашь.. если фиксировать N то он соберет.. нужно выделять память динамически как писал выше nazgul

_____________________________
В начало
Профиль : Фотоальбом : Личное Сообщение
Flakes
Сообщение  24 Сен 2009, 19:34  Ссылка : Ответить с цитатой
Возраст: 33 Пол: Мужской  Доверенный пользователь
C нами с 25.02.2007
Репутация: 288.4

Помогите кто-нибудь, как сделать тоже самое, что сделал nazgul для двухмерного масива
В начало
Профиль : Фотоальбом : Личное Сообщение : SkypeID : ICQ
Griphon
Сообщение  24 Сен 2009, 20:18  Ссылка : Ответить с цитатой
Возраст: 51 Пол: Мужской 
C нами с 01.03.2005
Репутация: 226.6

Flakes, точно так же.
Только адресуй как arr[row*rowlen+col].
В начало
Профиль : Личное Сообщение
biorobot
Сообщение  25 Сен 2009, 19:31  Ссылка : Ответить с цитатой
Возраст: 53 Пол: Мужской  Доверенный пользователь
C нами с 01.01.2008
Репутация: 77.1

Алгоритм:

1. Спросить у Гугла

2. Получить ответы:

http://stackoverflow.com/questions/365782/how-do-i-best-handle-dynamic-multi-dimensional-arrays-in-c-c

http://www.velocityreviews.com/forums/t286693-how-to-quotnewquot-a-twodimension-array-in-c.html
В начало
Профиль : Личное Сообщение
Griphon
Сообщение  25 Сен 2009, 20:21  Ссылка : Ответить с цитатой
Возраст: 51 Пол: Мужской 
C нами с 01.03.2005
Репутация: 226.6

Flakes, другой вариант - возьми компилятор gcc и скомпилируй им как у твоего друга.
Возможность определять локальные массивы глобальными переменными - это нестандартное расширение gcc.
Под винду есть mingw и cygwin порты gcc.
В начало
Профиль : Личное Сообщение
inkognit
Сообщение  03 Окт 2009, 1:41  Ссылка : Ответить с цитатой
Возраст: 34 Пол: Мужской 
C нами с 30.04.2006
Репутация: 77.5

Flakes, у вас есть 2 пути.
1) Выделить память для матрицы динамически оператором new и обращаться к элементам памяти через указатель.
2) Использовать для определения матрицы контейнер vector<>.

Еще Страуструп в последнем издании что-то писал про то, что matrix является теперь стандартным типом. Попробуйте прогуглить - вполне возможно, что в STL есть библиотеки для класса матриц. Впрочем, я оным не пользовался, и потому рекомендовать не решаюсь.

_____________________________
Дайте в руки мне баян, я порву его совсем.
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : E-mail
zelius
Сообщение  03 Окт 2009, 3:30  Ссылка : Ответить с цитатой
Пол: Мужской 
C нами с 27.05.2006
Репутация: 69.1

Griphon писал(а):
Flakes, другой вариант - возьми компилятор gcc и скомпилируй им как у твоего друга.
Возможность определять локальные массивы глобальными переменными - это нестандартное расширение gcc.
Под винду есть mingw и cygwin порты gcc.

Это жестокий совет. Наверняка автор сабжа исполняет домашнее задание или на крайний случай пишет прикладуху. Совет скомпилировать на gcc - заказчиком(преподавателем), наверняка будет воспринят крайне сугубо, даже без улыбки. Мы живем в реальном мире... Надо строить реальные планы (с)

Добавлено спустя 6 минут 53 секунды:

inkognit писал(а):
Еще Страуструп в последнем издании что-то писал про то, что matrix является теперь стандартным типом. Попробуйте прогуглить - вполне возможно, что в STL есть библиотеки для класса матриц. Впрочем, я оным не пользовался, и потому рекомендовать не решаюсь.

Страуструп глубокий теоретик. Человеку, который начинает программировать в реальной жизни, что Страуструп, что Кнут - круто(!), но применительно к сегодняшним задачам в 99% случаев бесполезно. В реальной жизни STL очень-очень-очень (можно сказать, что никогда) не используется.
В начало
Профиль : Личное Сообщение
chaser
Сообщение  03 Окт 2009, 23:15  Ссылка : Ответить с цитатой
Возраст: 35 Пол: Мужской 
C нами с 04.02.2005
Репутация: 121.3

zelius писал(а):

Страуструп глубокий теоретик. Человеку, который начинает программировать в реальной жизни, что Страуструп, что Кнут - круто(!), но применительно к сегодняшним задачам в 99% случаев бесполезно. В реальной жизни STL очень-очень-очень (можно сказать, что никогда) не используется.


Ох.

Даже не знаю, что Вы там под "сегодняшними задачами" подразумеваете. Может, разработка GUI на Qt? Тогда ясно, что тут ни Кнут, ни STL не нужны.

Использую STL почти всегда и везде, может я что-то делаю не так? Как можно жить без std::vector и std::map?

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

А по теме - проще всего выделить одномерный массив и вручную вычислять индексы, как написал выше Griphon.
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : JabberID
splav
Сообщение  03 Окт 2009, 23:35  Ссылка : Ответить с цитатой
Возраст: 36 Пол: Мужской  Доверенный пользователь
C нами с 22.01.2006
Репутация: 256.8

chaser, не знаю.. Но мне STL кажется довольно бестолковой. Если задача прикладная - действительно проще воспользоваться той же Qt, даже для консольной программы. Если же больше перекос в сторону системного программирования - на чистом C как-то быстрее и прозрачнее получается(хотя если время экономить - тоже много что можно на Qt написать(учитывая moc - скорее "на" чем "с использованием" уже получается)).
Хотя? если бы не Qt со всеми его фишками - не спорю, STL была бы практически незаменима.

А здесь действительно простого одномерного массива за глаза и C++ с его STL тоже совершенно ни к чему.
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : JabberID : ICQ
Показать сообщения:   

Unsorted   ~  Software  ~  Development and Design  ~  Как задать размер масива снаружи

Ответить на тему

Перейти:  





Powered by phpBB   © Unsorted Team  support@unsorted.me  promo@unsorted.me  Полезные скрипты