Форум: "Начинающим";
Текущий архив: 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