|
|
Возраст: 33 C нами с 25.02.2007 Репутация: 288.4
|
|
Значит есть у меня программа которая считает матрицу по методу Гауса, считывает данные из фаила и записывает результат в новый, так вот проблема в следующем: при подачи матрицы из фаила хотелось бы писать разряд этой матрицы, который в дальнейшем используется как размер массива который будет заполняться считываемой матрицей, вобщем дальше использоваться внутри программы. Побывал задать глобальную переменную которую вначале программы, то есть до задания массивов задаю из фаила. Но как то все не работает, что самое интерестное у друга моего на линухе под его компилятором все работает и собирается
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
Возраст: 36 C нами с 13.02.2009 Репутация: 72.5
|
|
не совсем понял в чем проблема... опиши прост в классе переменную размера массива... файлы для чтения и методы все для них..
потом в нужном месте напиши создание экземпляра класса..
|
_____________________________
|
|
|
|
|
|
|
Возраст: 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, спс ща попробую
|
|
|
|
|
|
|
|
Возраст: 36 C нами с 13.02.2009 Репутация: 72.5
|
|
хах.. ну так массив ты не создашь.. если фиксировать N то он соберет.. нужно выделять память динамически как писал выше nazgul
|
_____________________________
|
|
|
|
|
|
|
Возраст: 33 C нами с 25.02.2007 Репутация: 288.4
|
|
Помогите кто-нибудь, как сделать тоже самое, что сделал nazgul для двухмерного масива
|
|
|
|
|
|
|
|
Возраст: 51 C нами с 01.03.2005 Репутация: 226.6
|
|
Flakes, точно так же.
Только адресуй как arr[row*rowlen+col].
|
|
|
|
|
|
|
|
Возраст: 53 C нами с 01.01.2008 Репутация: 77.1
|
|
|
|
|
|
|
|
Возраст: 51 C нами с 01.03.2005 Репутация: 226.6
|
|
Flakes, другой вариант - возьми компилятор gcc и скомпилируй им как у твоего друга.
Возможность определять локальные массивы глобальными переменными - это нестандартное расширение gcc.
Под винду есть mingw и cygwin порты gcc.
|
|
|
|
|
|
|
|
Возраст: 34 C нами с 30.04.2006 Репутация: 77.5
|
|
Flakes, у вас есть 2 пути.
1) Выделить память для матрицы динамически оператором new и обращаться к элементам памяти через указатель.
2) Использовать для определения матрицы контейнер vector<>.
Еще Страуструп в последнем издании что-то писал про то, что matrix является теперь стандартным типом. Попробуйте прогуглить - вполне возможно, что в STL есть библиотеки для класса матриц. Впрочем, я оным не пользовался, и потому рекомендовать не решаюсь.
|
_____________________________ Дайте в руки мне баян, я порву его совсем.
|
|
|
|
|
|
|
C нами с 27.05.2006 Репутация: 69.1
|
|
Griphon писал(а): |
Flakes, другой вариант - возьми компилятор gcc и скомпилируй им как у твоего друга.
Возможность определять локальные массивы глобальными переменными - это нестандартное расширение gcc.
Под винду есть mingw и cygwin порты gcc.
|
Это жестокий совет. Наверняка автор сабжа исполняет домашнее задание или на крайний случай пишет прикладуху. Совет скомпилировать на gcc - заказчиком(преподавателем), наверняка будет воспринят крайне сугубо, даже без улыбки. Мы живем в реальном мире... Надо строить реальные планы (с)
Добавлено спустя 6 минут 53 секунды:
inkognit писал(а): |
Еще Страуструп в последнем издании что-то писал про то, что matrix является теперь стандартным типом. Попробуйте прогуглить - вполне возможно, что в STL есть библиотеки для класса матриц. Впрочем, я оным не пользовался, и потому рекомендовать не решаюсь.
|
Страуструп глубокий теоретик. Человеку, который начинает программировать в реальной жизни, что Страуструп, что Кнут - круто(!), но применительно к сегодняшним задачам в 99% случаев бесполезно. В реальной жизни STL очень-очень-очень (можно сказать, что никогда) не используется.
|
|
|
|
|
|
|
|
Возраст: 35 C нами с 04.02.2005 Репутация: 121.3
|
|
zelius писал(а): |
Страуструп глубокий теоретик. Человеку, который начинает программировать в реальной жизни, что Страуструп, что Кнут - круто(!), но применительно к сегодняшним задачам в 99% случаев бесполезно. В реальной жизни STL очень-очень-очень (можно сказать, что никогда) не используется.
|
Ох.
Даже не знаю, что Вы там под "сегодняшними задачами" подразумеваете. Может, разработка GUI на Qt? Тогда ясно, что тут ни Кнут, ни STL не нужны.
Использую STL почти всегда и везде, может я что-то делаю не так? Как можно жить без std::vector и std::map?
Страуструп - вовсе не круто, это просто книга, которую нужно хотя бы раз пролистать каждому хорошему программисту.
А по теме - проще всего выделить одномерный массив и вручную вычислять индексы, как написал выше Griphon.
|
|
|
|
|
|
|
|
Возраст: 36 C нами с 22.01.2006 Репутация: 256.8
|
|
chaser, не знаю.. Но мне STL кажется довольно бестолковой. Если задача прикладная - действительно проще воспользоваться той же Qt, даже для консольной программы. Если же больше перекос в сторону системного программирования - на чистом C как-то быстрее и прозрачнее получается(хотя если время экономить - тоже много что можно на Qt написать(учитывая moc - скорее "на" чем "с использованием" уже получается)).
Хотя? если бы не Qt со всеми его фишками - не спорю, STL была бы практически незаменима.
А здесь действительно простого одномерного массива за глаза и C++ с его STL тоже совершенно ни к чему.
|
|
|
|
|
|
|
|