Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.10.18;
Скачать: [xml.tar.bz2];

Вниз

Удаление элемента из массива   Найти похожие ветки 

 
Alyona   (2009-08-17 17:13) [0]

Здравствуйте!
Помогите пожалуйста с удалением элементов из массива.
Нужно удалить из массива Х, состоящего из n элементов, первые четыре нулевых элемента.
Если использую for I := n downto 1 do удаляются 4 последних нулевых элемента,
а если использую for I := 1 to n do не удаляется 0, если он следует сразу за другим нулём.
Что нужно изменить? Заранее спасибо за помощь.


procedure TForm1.Button1Click(Sender: TObject);
type massiv=array [1..50] of real;
procedure del_mass(m, kol:integer; var y:massiv);
var i: integer;
begin
 for I := m to kol-1 do
   y[i]:=y[i+1];
end;
var i, n, k: byte;
   x: massiv;
begin
 n:=strtoint(edit1.text);
 for I := 1 to n do
   x[i]:=strtofloat(stringgrid1.Cells[i,0]);
 k:=0;
 for I := n downto 1 do
   begin
     if x[i]=0 then
       begin
         if k>=4 then break
         else
           del_mass(i,n,x);
         k:=k+1;
       end;
   end;
 for I := 1 to n-k do
   stringgrid2.cells[i,0]:=floattostr(x[i]);
end;


 
DrPass ©   (2009-08-17 17:15) [1]

Процедуру сама писала, или у однокурсников позаимствовала?


 
Сергей М. ©   (2009-08-17 17:28) [2]


> Alyona   (17.08.09 17:13)  


Из статического массива, каковым у тебя является массив типа massiv, элементы удалить невозможно - ни нулевые, ни какие бы то ни было.


 
DrPass ©   (2009-08-17 18:27) [3]


> Сергей М. ©   (17.08.09 17:28) [2]


> Из статического массива, каковым у тебя является массив
> типа massiv, элементы удалить невозможно - ни нулевые, ни
> какие бы то ни было.

Сергей, в курсах программирования для самых маленьких "удалить элемент массива" означает сдвинуть все следующие за ним элементы массива влево и уменьшить переменную с количеством элементов на единицу. Это для взрослых программистов говорят суровую правду :)


 
Alyona   (2009-08-17 20:00) [4]

заменила цикл на

repeat
   if (x[i]=0)and(k<4) then
   begin
     del_mass(i,n-k,x);
     k:=k+1;
   end
   else
     i:=i+1;
 until i>=n-k;


 
Alyona   (2009-08-17 20:01) [5]

DrPass , процедуру писала сама (со своими будущими однокурссниками пока еще не знакома)


 
Сергей М. ©   (2009-08-17 20:11) [6]


> DrPass ©   (17.08.09 18:27) [3]


Вот ведь дурачат народ)


 
KilkennyCat ©   (2009-08-17 22:12) [7]


> Сергей М. © (17.08.09 17:28) [2]


Можно. Но экономически невыгодно.


 
KilkennyCat ©   (2009-08-17 22:14) [8]


> Alyona (17.08.09 20:01) [5]

Давайте познакомимся, я буду поступать вместе с Вами и буду Вашим будущим однокурсником. Пришлите фото. ;)


 
Сергей М. ©   (2009-08-17 22:17) [9]


> KilkennyCat ©   (17.08.09 22:12) [7]


Ну это и ежу понятно, что коль нельзя, но очень хочется, то можно)


 
Leonid Troyanovsky ©   (2009-08-17 22:23) [10]


> KilkennyCat ©   (17.08.09 22:14) [8]

> Давайте познакомимся, я буду поступать вместе с Вами и буду
> Вашим будущим однокурсником. Пришлите фото. ;)

Прошу отметить: дискриминация по половому признаку.
Вот, например, мое фото никто так и не запросил.

--
Regards, LVT.


 
KilkennyCat ©   (2009-08-17 22:23) [11]


> Сергей М. © (17.08.09 22:17) [9]

Зато в зачетке сразу за все года поставят высший балл :)


 
KilkennyCat ©   (2009-08-17 22:25) [12]


> Leonid Troyanovsky © (17.08.09 22:23) [10]

Гм... почему-то не хочу я твое фото, я хочу фото девушки.. Ты может, и готовить не умеешь, и стирать откажешься...


 
Сергей М. ©   (2009-08-17 22:27) [13]


> KilkennyCat ©   (17.08.09 22:23) [11]


> в зачетке сразу за все года поставят высший балл


Сомневаюсь)
За неизвестное преподу выёживание со стат.массивами можно и низачот схлопотать)


 
Leonid Troyanovsky ©   (2009-08-17 22:56) [14]


> KilkennyCat ©   (17.08.09 22:25) [12]

>  Ты может, и готовить не умеешь, и стирать откажешься..

Откажусь, но готовить умею, определенный набор блюд.
Но, это, IMHO, еще не повод для дискриминации.

--
Regards, LVT.


 
Anatoly Podgoretsky ©   (2009-08-17 23:06) [15]

> Leonid Troyanovsky  (17.08.2009 22:23:10)  [10]

Пиши в лигу сексуальных реформ.
(с) ИиП


 
Leonid Troyanovsky ©   (2009-08-17 23:13) [16]


> Anatoly Podgoretsky ©   (17.08.09 23:06) [15]

> Пиши в лигу сексуальных реформ.

А толку - они ж год не забанены были.

--
Regards, LVT.


 
Vitaliy_____   (2009-08-18 12:37) [17]

Какие злые умные дядьки! Им бы все хи-хи да ха-ха, а у человека может времени нет этим дурацким программированием заниматься, у нас вот погода хорошая, солнышко, пляж....

procedure TForm1.Button1Click(Sender: TObject);

type massiv=array [1..50] of real;

procedure del_mass(m, kol:integer; var y:massiv);
var i: integer;
begin
for I := m to kol-1 do
  y[i]:=y[i+1];
end;

var i, n, k: byte;
  x: massiv;
begin
n:=strtoint(edit1.text);
for I := 1 to n do
  x[i]:=strtofloat(stringgrid1.Cells[i,0]);
k:=0;
i:=1;
while i<=n do

  begin
    if x[i]=0 then
      begin
        if k>=4 then break
        else
          del_mass(i,n,x);
        k:=k+1;
        n:=n-1;
      end
    else i:=i+1;

  end;
for I := 1 to n do
  stringgrid2.cells[i,0]:=floattostr(x[i]);
end;


 
Franzy   (2009-08-18 12:51) [18]


> if x[i]=0 then


Ай-ай-ай! Стыдитесь!


 
Vitaliy_____   (2009-08-18 13:53) [19]

Ну и фиг с ним, ты еще eps введи начинающим! Им это на 1-м курсе объяснят, сказано же, что еще только поступают... Хотя прав ведь :)


 
KilkennyCat ©   (2009-08-18 23:09) [20]


> x[i]:=strtofloat(stringgrid1.Cells[i,0]);

интересно, че будет, если там не цифирь.

и вообще стока циклов.... а достаточно всего один с запоминанием коэффициента смещения следующего ненулевого элемента


 
Vitaliy_____   (2009-08-19 06:14) [21]


> интересно, че будет, если там не цифирь.

Не поверишь, exception со страшным сообщением что в строке не число! Кстати, у меня так и было - там цикл по i с 1 а стринггрид, как известно, с 0 нумерует ячейки... По-моему, надо минимально изменить предложенный код, чтобы он начал делать то, что хотел автор - а то начинаем тут умничать... Конечно большинство бы решало "поставленную задачу" не так - но я ж говорю, солнышко, погода хорошая... Захочешь заниматься этим всерьез, все еще будет ;)


 
Dennis I. Komarov ©   (2009-08-19 09:57) [22]


> Alyona   (17.08.09 17:13)  
> Нужно удалить из массива Х, состоящего из n элементов, первые
> четыре нулевых элемента.


X: array [0..n-1] of AnyType;
i, c: integer;

begin
i:=0;
c:=0;

пока с < 4 и i < n-1 делаем
{
пока x[i] <> 0  увеличиваем i на 1
inc(c)
с позиции i до конца переносим элементы x[i]:=x[i+1]
уменьшаем n на 1
}
end;


Вроде того...



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.10.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.006 c
15-1250525904
sanx
2009-08-17 20:18
2009.10.18
Где скачать FastMove?


15-1250519268
Superheroy
2009-08-17 18:27
2009.10.18
Верстальщики = class(Программисты)..?


1-1220342126
Vlad Oshin
2008-09-02 11:55
2009.10.18
Как получить список dll, которые использует мое приложение?


15-1249654837
девушка
2009-08-07 18:20
2009.10.18
Кого-нибудь дергали в связи с 152-ФЗ ?


1-1219825246
tytus
2008-08-27 12:20
2009.10.18
TFrxMemoView - OnBeforePrint - поставить знак "минус"





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский