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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.09.2009, 17:26   #1
Sempe4
 
Регистрация: 06.09.2009
Сообщений: 9
По умолчанию помогите с программой

ПРограмма должна считать из файла координаты точек(кл-во не известно).Нужно динамично выделить память

Код:
class Tochka
{
      public:
      int x;
      int y;

      int getx(){ return this->x;}
      int gety(){ return this->y;}



};
class Tochky
{
       Tochka *a;
       int size;
       public:
      

		void set()
	{       size=1;
		FILE *f;
		f=fopen("D:\\1.txt","r");
		int i=0;
		char c,d;
		while (d!=EOF)
			{
				d=fgetc(f);
				if (d=='\n')
				size++;
			}
	       
		a=new Tochka[size];
		while (c!=EOF)
		{
			c=fgetc(f);

			if (c=='=')
			{
				fscanf(f,"%d",&a[i].x);
				do
				c=fgetc(f);
				while (c!='=');
				fscanf(f,"%d",&a[i].y);
				i++;

			}


		}
	  printf("%d",a[1].x); //вот тут выводит какието левые цифры



	}

   
};

void main()
{
Tochky all;
all.set();



}

Последний раз редактировалось Sempe4; 17.09.2009 в 17:30.
Sempe4 вне форума Ответить с цитированием
Старый 17.09.2009, 17:51   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Перед while(c!=EOF) допишите fseek(f, 0, SEEK_SET); - это установит указатель на начало файла(в предыдущем цикле вы проехали весь файл до конца)
netrino вне форума Ответить с цитированием
Старый 17.09.2009, 17:57   #3
Sempe4
 
Регистрация: 06.09.2009
Сообщений: 9
По умолчанию

ууу, спасибо дружище, выручил)
Sempe4 вне форума Ответить с цитированием
Старый 17.09.2009, 20:07   #4
АНК
Пользователь
 
Регистрация: 01.09.2009
Сообщений: 30
По умолчанию

Sempe4,
Код:
	char c,d;
	while (d!=EOF)
	{
		d=fgetc(f);
		if (d=='\n')
		size++;
	}
этот кусок кода, как я понял, служит для определения размера файла.
Я для этого делаю так:
Код:
   fseek(f, 0, SEEK_END);
   long size;
   fgetpos(f, &size);
   fseek(f, 0, SEEK_SET); // опять в начало
После этого size содержит размер файла в байтах.

Последний раз редактировалось АНК; 17.09.2009 в 20:10.
АНК вне форума Ответить с цитированием
Старый 17.09.2009, 20:13   #5
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от АНК Посмотреть сообщение
Sempe4,
Код:
	char c,d;
	while (d!=EOF)
	{
		d=fgetc(f);
		if (d=='\n')
		size++;
	}
этот кусок кода, как я понял, служит для определения размера файла.
Я для этого делаю так:
Код:
   fseek(f, 0, SEEK_END);
   long size;
   fgetpos(f, &size);
   fseek(f, 0, SEEK_SET); // опять в начало
После этого size содержит размер файла в байтах.
Не совсем так, если я понял верно, то этот кусок просматривает сколько координат задано в файле. Разделяются они переносом строки, на основе полученных данных динамически создаётся массив необходимого размера
netrino вне форума Ответить с цитированием
Старый 17.09.2009, 20:26   #6
АНК
Пользователь
 
Регистрация: 01.09.2009
Сообщений: 30
По умолчанию

Да! Строчку-то
Код:
	if (d=='\n')
я и не приметил!
Спасибо netrino, что поправил.
АНК вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с программой!! Photomachine Помощь студентам 1 08.02.2009 15:26
помогите с программой Ananim-Pbl6ak Паскаль, Turbo Pascal, PascalABC.NET 8 28.10.2008 20:59
Помогите с программой(( stan1k Фриланс 4 10.05.2008 16:16
помогите с программой 1234 Общие вопросы Delphi 2 21.04.2008 10:50