Помощь - Поиск - Пользователи - Календарь
Полная версия: 2 задачи задачи на массив и индуктивность
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Black Monarh
Дорогие программисты буду с вами откровенен, я знаю что сдесь никто не будет делать за меня ничего!!
Но думаю что вы люди и поймете меня!
Я студет первого курса, думаю многие знают что 1 семестр самый сложный первая сессия и все такое!!
Меня мягко говоря выпирают, и как вы думаете почему?! ДА!! Был идиотом полнейшим!! нифига не делал думал а прокатит да не прокатила, так вот вишу я на волоске а внизу пропасть!!
У меня есть шанс остаться но сделать надо очень много... а времени почти нет..!!
Помогите мне пожалуйста спасите мою душу..
Беда вот в чем:
1. Мне нужно из данного массива (а массив мой 2 на 50, где каждая строка задает координату точки) так вот нужно убрать из этого массива одинаковые координаты т е одинаковыые строки!!


2. У меня есть последовательность чисел, нуйти длину законченного отрезка числовой последовательности, при этом свойсво отрезка с максимальным размахом значений элементов
P.S. размах - разность максимального и минимального элемента в добавок отрезок знакочередующийся
volvo
Цитата
нужно убрать из этого массива одинаковые координаты т е одинаковыые строки
Ну, так в чем проблема? Проходи в цикле по строкам, и для каждого элемента проверяй, не встречался ли он прежде... Если нет - все в порядке, если встречался - сдвигай все содержимое массива на 1 индекс ближе к началу, начиная с элемента, следующего за проверяемым, и уменьшай счетчик элементов массива...

Где именно проблема?
Black Monarh
Вот как раз на словах я то все и понимаю, да надо пойтись циклом по массиву смотря если есть одинуковые строки то сдвигать .. А как это выглядит в коде не могу воспроизвести не знаю что я не понимаю вроде так элементарно(( а вот не могу и все!! жесть!
volvo
Ну, вот тебе пример для массива целых, хотя по-моему, я уже выкладывал на форуме нечто подобное... Подкорректируй это для своего случая.
const
max_n = 10;
arr: array[1 .. max_n] of integer =
(1, 3, 7, 3, 9, 4, 2, 2, 3, 1);

var
i, j, k, n: integer;
found: boolean;

begin
n := max_n;
i := 2;
while i <= n do begin

found := false; j := 1;

while (j < i) and (not found) do
if arr[i] = arr[j] then found := true
else inc(j);

if found then begin
for k := i + 1 to n do
arr[k - 1] := arr[k];
dec(n);
end
else inc(i)
end;

for i := 1 to n do
write(arr[i]:4);
writeln;
end.
Black Monarh
Спасибо понятно, а на счет второй задачки никаких мыслей нет?! Потомучто я вообще не знабю индуктивность!!
Lapp
Цитата(Black Monarh @ 28.01.2006 18:53) *

Спасибо понятно, а на счет второй задачки никаких мыслей нет?! Потомучто я вообще не знабю индуктивность!!

Условие не совсем понятно. Уточни, насколько возможно.
И при чем тут индуктивность?..
klem4
Цитата
1. Мне нужно из данного массива (а массив мой 2 на 50, где каждая строка задает координату точки) так вот нужно убрать из этого массива одинаковые координаты т е одинаковыые строки!!


по моему это решается так :

uses crt;
const
m = 2;
type
TMx = array [1..50,1..m] of integer;

procedure Input(var mx : TMx; n : byte);
var
i,j : byte;
begin
writeln;
for i := 1 to n do
for j := 1 to m do begin
write('x[',i,',',j,']=');
readln(mx[i,j]);
end;
end;

procedure Print(mx : TMx; n : byte);
var
i,j : byte;
begin
writeln;
for i := 1 to n do begin
writeln;
for j := 1 to m do write(mx[i,j]:2,' ');
end;
end;

procedure Del(var mx : TMx; var n : byte);
var
i,j,k : byte;
flag,flag1 : boolean;
begin
i := 1;
while(i <= n-1) do begin
j := i + 1;
flag := true; flag1 := true;
while(j <= n) do begin
flag := true;
if (mx[i,1] = mx[j,1]) and (mx[i,2] = mx[j,2]) then begin
flag := false; flag1 := false;
for k := j to n do begin
mx[k,1] := mx[k+1,1];
mx[k,2] := mx[k+1,2];
end;{k}
dec(n);
end;{=}
if flag then inc(j);
end;{J}
if flag1 then inc(i) else begin
for k := i to n do begin
mx[k,1] := mx[k+1,1];
mx[k,2] := mx[k+1,2];
end;
dec(n);
end;
end;{I}

end;

var
a : TMx;
n : byte;

begin
clrscr;
n := 10;
Input(a,n);
Print(a,n);
Del(a,n);
Print(a,n);
readln;
end.


Цитата

n = 10

in :
1 1
2 2
3 3
1 1
4 4
2 2
5 5
6 6
1 1
4 4

out :
3 3
5 5
6 6


Извиняюсь если намудрил сильно ..
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.