Страница 1 из 1

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

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

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

   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);


Добавлено: 04 фев 2005, 18:26
Kolinus
Фишка в том что если три одинаковые записи подряд то смотри как отработает твой алгоритм :
он удалит вторую запись , НО третья запись передет на место второй а ты будешь дальше сравнивать уже с четвертой
Вот !!!