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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2011, 23:38   #1
Zo_0m
 
Регистрация: 22.10.2011
Сообщений: 4
По умолчанию Удаление элементов массива, встречающихся более 2х раз

у меня такое задание: Дан одномерный массив. В нем необходимо посчитать количество отрицательных элементов и затем удалить отрицательные элементы встречающиеся более 2-х раз.

я не знаю как сделать именно само удаление... я пробовал способом похожим на сортировку обменом ставить отрицательные элементы в конец и обрезать этот конец, но почему то в конец они не ставились, также способом пузырьковой сортировки, но не получается. Вот моя программа:
Код:
program laba;
uses crt;
const N=5;
var b,k,i,j,m,o:integer;
a:array [1..N] of integer;
fl:array[1..N] of integer;
 
begin
clrscr;
writeln('vvedite massiv');
for i:=1 to N do
read(a[i]);
o:=0;
     for i:=1 to N do
         if a[i]<0 then o:=o+1;
 
     for i:=1 to N do
         fl[i]:=0;
         for i:=1 to N do
         if fl[i]=0 then
            begin
            fl[i]:=1;
            for j:=i+1 to N do
            if (a[i]=a[j]) and (a[i]<0) and (a[j]<0) then
               begin
               fl[i]:=fl[i]+1;
               fl[j]:=fl[i];
               end;
            end;
b:=n;
 for i:=1 to N-1 do
 for j:=i+1 to N do
 
 begin
               m:=a[i];
               k:=i;
               for j:=i+1 to N do
                    if (a[j]>m) and (a[j]>0)  then
                              begin
                              m:=a[j];
                              k:=j;
                              b:=b+1;
                              end;
                              a[k]:=a[i];
                              a[i]:=m;
 end;
                                for i:=1 to N-b  do
                               write (a[i],' '); write('kolvo otr=',o);
end.
подскажите пожалуйста как мне сделать удаление...

Последний раз редактировалось Stilet; 22.10.2011 в 23:59.
Zo_0m вне форума Ответить с цитированием
Старый 23.10.2011, 01:50   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

завести переменную, в которой хранить РЕАЛЬНОЕ число записей в массиве. при необходимости обрезать "крайние" элементы массива уменьшать эту переменную.
Код:
const MaxN = 1000;
var
   N : integer;
   a: array[1..MaxN] of integer;
N - и есть счётчик записей в массиве a

p.s. если массивов несколько - то переменных, которые хранят число элементов в массиве должно быть тоже несколько (для каждого массива - своя переменная).

p.p.s. называть переменные лучше с привязкой к имени массива.
например, CountForA
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.10.2011, 22:26   #3
Zo_0m
 
Регистрация: 22.10.2011
Сообщений: 4
По умолчанию

а как сделать удаление с этим не поможете?(((
Zo_0m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Три массива: Образовать третий массив из элементов, встречающихся в обоих массивах (Delphi) Agent_147 Помощь студентам 1 13.04.2011 13:31
Удаление элементов массива LittleStudent Помощь студентам 0 10.04.2011 12:24
Получить массив из элементов, встречающихся в исходном массиве ровно один раз без повторений Shikarmo4000 Помощь студентам 0 25.05.2010 01:27
Удаление элементов из массива Jasper92 Общие вопросы C/C++ 3 06.03.2010 13:04