![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
мисс_граффити |
![]()
Сообщение
#1
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Понимаю, что задача простейшая, но запуталась.
Итак. Есть файл, содержащий числа. Сколько их - заранее неизвестно (порядка 100). Мне надо из файла эти числа раскидать в 2 массива (через одно, т.е. массивы одинаковой размерности). Массивы объявлены, скажем так, в головной программе. Чтение из файла хочу вынести в подпрограмму, т.е. указатели на массивы передавать как параметры. Но получается, что размер массива я узнаю только в подпрограмме (когда уже узнала у пользователя, какой он файл хочет открыть, убедилась, что файл существует и оценила его размер). Соответственно, память под массив надо выделять там же, в подпрограмме. А уже потом (заполненный) использовать в головной программе. Как это можно сделать?
double *L;
double *beta;
//------------------------вот начиная отсюда все должно быть в подпрограмме
FILE *f;
if (f=fopen("myfile.bin","rb")){
//определяем размер файла
long size;
fseek(f, 0, SEEK_END);
size = ftell(f);
fseek(f, 0, SEEK_SET);
//файл корректного размера
if ((size%(2*sizeof(double)))==0){
L=new double[size/(2*sizeof(double))];
beta=new double[size/(2*sizeof(double))];
for (int i=0;i<size/2;i++){
fread(&L[i],sizeof(double),1,f);
fread(&beta[i],sizeof(double),1,f);
}
}
//-----------------------------------------а дальше работа с L и beta
Сообщение отредактировано: мисс_граффити - 17.01.2011 15:04 -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Если это действительно С++, то есть, допустимы ссылки - то вот так:
int get_arr(int*& array)
{
// тут каким-то образом получаешь size_of_array
int size_of_array = 10;
array = new int[size_of_array];
// тут можно заполнить массив
return size_of_array;
}
int main()
{
int *arr, size = 0;
size = get_arr(arr);
return 0;
}
Если нет - то передавай указатель на указатель. Ну, там у тебя double- это не важно... |
мисс_граффити |
![]()
Сообщение
#3
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
спасибо. ссылки вполне допустимы.
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
![]() ![]() |
![]() |
Текстовая версия | 28.07.2025 0:51 |