Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2009, 13:14   #11
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Почитай что такое динамический массив.
Код:
 pellet *Massiv=new pellet[n];
Создание динамического массива из n элементов,т.е. ты при написании ничего про то сколько там элементов не знаешь,но как только узнал-выделил память под него.Это его главное отличие от статического массив,при создании статического массива,ты либо должен знать сколько элементов будет в массиве,либо создать его заведомо больше,чем может потребоваться.
Код:
void ReadFile(int n,pellet *mas)  // чтение файла
{
	fstream file("bul.txt",ios::in|ios::out);
	pellet a;
	for (int i=0; i < n; i++)
	{
		file.read((char *)&a,sizeof(a));
		mas[i]=a;
	}
   file.close();
}
Эта функция считывает полностью весь массив,т.е. ты создал массив,передал его в функцию,она тебе его вернула уже заполненным,а ты пытаешься суть массив в элемент массива(temp[i]=ReadFile(n,Massiv)).Это как?)
Код:
for (int i=0; i < n; i++)
	{
		file.read((char *)&a,sizeof(a));
		mas[i]=a;
	}
Мы передали в функцию значение n,которое=равно кол-ву элементов в массиве и крутим цикл,считывая не заполним массив..
В общем читай книги,бывает полезно)
З.Ы.Я тоже чайник,так что сейчас меня тут за гнобят за ересь,что я здесь несу..
Не давай организму поблажки, каждый день тренируй его в шашки..

Последний раз редактировалось Скарам; 05.10.2009 в 13:20.
Скарам вне форума Ответить с цитированием
Старый 05.10.2009, 13:19   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Но ведь этот указатель локален и используется только в этой функции.
В данном случае имелось ввиду передача функции указателя на массив, с которым функция будет работать, так что локальность его связана с глобальной переменной.
Так что твои потуги связать бесполезны - он уже связан.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.10.2009, 13:22   #13
wishmaster13
Пользователь
 
Регистрация: 09.12.2008
Сообщений: 16
По умолчанию

Книжки оно конечно хорошо, но там тоже не все понятно бывает

И в данный момент я не могу въехать, как мне дальше обращаться к заполненному массиву. По mas[i], или по *mas, или по *massiv?
wishmaster13 вне форума Ответить с цитированием
Старый 05.10.2009, 13:24   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

думаю что *mas[i] даст нужный элемент раз это указатель.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.10.2009, 13:25   #15
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Если в main,то Massiv[i],если в функции,то читай в объявлении функции как называется массив..)
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 05.10.2009, 13:52   #16
wishmaster13
Пользователь
 
Регистрация: 09.12.2008
Сообщений: 16
По умолчанию

при попытке просто напечатать один из элементов массива по обращению через massiv
printf("%s",Massiv[1].name);
программа рушится с ошибкой на память

Если использовать printf("%s",*mas[1].name); то ругается на то что mas не объявлен.

UPD.

Еще один глюк. При печати другого поля структуры printf("%f",Massiv[1].mg); вылез новый глюк:

непонятно что стало на уме у функции KN();
Вместо значения числа сторок n=3, она выдает какой то бред, 30 с копейками...

функция main в данный момент выглядит так:
Код:
int main(int argc, char* argv[])
{
	int n=KN();
	pellet *Massiv=new pellet[n];

        ReadFile(n,Massiv);
	//потом работа с массивом

        printf("Chislo strok v file= %d", n,"\n press any key");

        printf("%f",Massiv[1].mg);

        //PrintFile(n,Massiv);

     getch();
     return 0;
}

Последний раз редактировалось wishmaster13; 05.10.2009 в 14:01.
wishmaster13 вне форума Ответить с цитированием
Старый 05.10.2009, 14:00   #17
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Ты проверял правильно ли считался массив?..ставил точку останова?..возможно,что функция считывания работает не совсем корректно.
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 05.10.2009, 14:13   #18
wishmaster13
Пользователь
 
Регистрация: 09.12.2008
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Скарам Посмотреть сообщение
Ты проверял правильно ли считался массив?..ставил точку останова?..возможно,что функция считывания работает не совсем корректно.

Конечно нет... Если б я знал, как правильно написать эту функцию, я бы не создавал этой темы. А для проверки правильности его заполнения, я и пытаюсь вывести на экран его элементы. Пока что безуспешно.

Но какая может быть связь между отработкой функции KN и тем, какое поле элемента я пытаюсь вывести на экран???
wishmaster13 вне форума Ответить с цитированием
Старый 05.10.2009, 14:18   #19
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Цитата:
Но какая может быть связь между отработкой функции KN и тем, какое поле элемента я пытаюсь вывести на экран???
Откуда такая мысль?..ты меня окончательно запутал..
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 05.10.2009, 14:23   #20
wishmaster13
Пользователь
 
Регистрация: 09.12.2008
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Скарам Посмотреть сообщение
Откуда такая мысль?..ты меня окончательно запутал..
Извини, сам запутался по неопытности. Функция FN работает нормально, просто я забыл сделать перевод курсора, и число продолжало печататься сразу за количеством строк

При обращении к другим полям первого элемента прога не вылетает, но выводит всякий мусор, совсем не то что находится в файле.
wishmaster13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очистка коллекции перед заполнением. pivas Microsoft Office Excel 4 27.07.2009 08:36
Проблема с заполнением asd48 Помощь студентам 1 21.04.2009 00:21
Помогите с заполнением базы из *.cvs harom SQL, базы данных 0 07.03.2009 22:50
Проблема со случайным заполнением массива nyanga's_sist Общие вопросы Delphi 7 14.02.2009 22:32
Чтение массива из текстового файла. Metil Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 12.01.2009 22:53