Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Pascal]можно ли это назвать алгоритмом


Автор: Sliva 11.3.2008, 16:18
 smile
Добрый день! Помогите решить такую задачку, пожалуйста. Не знаю можно ли это назвать алгоритмом, но... вобщем я запуталась  smile  smile Для вас, наверное, это будут семечки.

Есть динамический массив типа стринг, содержащий повторяющиеся данные, причем разновидностей этих данныхне так много - в одном случае-3(для одного файла), в другом - 5 (для другого). Я их считываю из файла и перевожу в массивы. Вобщем данные в окончательном виде представлены так:
f1: 
 ['12', '01', '01', '01','01', '12', ....., '00', '12'...]
f2:
[12', '01', '01', '55', '01','01', '55', '12', .....,'55', '00', '12', '89', '89'...]

А мне надо теперь сделать так, чтобы эти массивы выглядели как 2 массива, в одном - в единичном варианте данные, а во втором - количество встреч их в массиве:
Т.е. для f1:
 ['00', '01', '12']
 [1, 20, 15]

Для f2: 
['00', '01', '12', '55', '89'] 
 [2, 15, 32, 8, 20]

Помогите, пожалуйста или подкиньте идею. Что-то я туплю.

Автор: Akina 11.3.2008, 16:35
Называется это сортировка подсчетом. Впрочем, сортировка не нужна, нужен только подсчет. 

Не вижу проблемы. Тривиальнейшая задача. Считывай, сравнивай, плюсуй.

Автор: Sliva 11.3.2008, 16:48
Код

 SetLength(masFilCount, kol);
 SetLength(masFil, kol);

 //masFil[i]:=tempFilial[0];
// masFilCount[i]:=c;

 for l:=1 to kol-1 do
//   for k:=1 to kol-1 do
   begin
   cur:=tempFilial[l-1];
   if tempFilial[l]=cur then
      begin
          masFilcount[l-1]:=c+1;
      end
      else begin
          //i:=i+1;
          masFil[l]:=tempFilial[l];
          masFil[l-1]:=cur;
          masFilcount[l]:=1;
          masFilcount[l-1]:=1;
      end;
 //    if tempFilial[k]<>helpMas[l] then

   end;

Но не получается :( 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)