Ошибка в удалении дубликатов, структура.

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
linko
Сообщения: 2
Зарегистрирован: 04 фев 2005, 17:54
Контактная информация:

Не работает функция для удаления дубликатов, копирования их в одну с суммированием в структуре. Уже всю голову поломал, где что не так?

Код: Выделить всё

   int c_login=0;
   if(rgitems>0)                               // Если есть данные
   {
     for(i=0;i<rgitems;i++)                    // начинаем перебор в структуре
	 {
		 count=1;                              // счет позиций
		 c_login=ptr[i].login;                 // берем логин
         for (int n=i+1;n<rgitems; n++)        // начинаем искать дальше в стуктуре
		 {                                     // следующие данные после логина
			 if(ptr[n].login==c_login)         // если логины дальше совпадают
			 {
				 ptr[i].volume+=ptr[n].volume; // складываем лоты
				 ptr[i].profit+=ptr[n].profit; // складываем профит
				 count++;                      // счет позиций увеличиваем на одну
				 for (int z=n;z<rgitems; z++)  // удаляем эту запись из структуры
				 {
					 ptr[z]=ptr[z+1];          // затираем предыдущую
				 }
				 rgitems-=1;                   // уменьшаем количество в структуре
			 }
		 }
	 }
	 fclose(fso);
   }
   printf(" There are '%d'.\nSorting... ", rgitems);

Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

Фишка в том что если три одинаковые записи подряд то смотри как отработает твой алгоритм :
он удалит вторую запись , НО третья запись передет на место второй а ты будешь дальше сравнивать уже с четвертой
Вот !!!
В SAD - все в SAD.
Ответить