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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2009, 15:20   #1
-ushёl-
Форумчанин
 
Аватар для -ushёl-
 
Регистрация: 04.02.2009
Сообщений: 141
Вопрос как удалить одиннаковые элементы в массиве?

подскажите как удаляются повторяющиеся элементы массива?любой ваш пример...
-ushёl- вне форума Ответить с цитированием
Старый 11.05.2009, 15:27   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
uses crt;
var
a : array[1..10] of integer = (1,2,3,4,4,2,1,5,7,2);
i,j,k,n : integer;

begin
clrscr;
n := 10; { размер массива }

for i:=1 to n do
 write(a[i]:4);
writeln;

i := 2;
while i<=n do
 begin
 for j:=1 to i-1 do
  if a[i]=a[j] then
   begin
   dec(n);
   for k:=i to n do
    a[k] := a[k+1];
   dec(i);
   break;
   end;
inc(i);
end;

for i:=1 to n do
 write(a[i]:4);

readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 11.05.2009, 15:41   #3
-ushёl-
Форумчанин
 
Аватар для -ushёl-
 
Регистрация: 04.02.2009
Сообщений: 141
По умолчанию

а если массив заполнен произвольными числами?допустим random(100)... как тогда удалить повторяющиеся элементы?
-ushёl- вне форума Ответить с цитированием
Старый 11.05.2009, 15:45   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
а если массив заполнен произвольными числами?допустим random(100)... как тогда удалить повторяющиеся элементы?
Также. Какая разница чем он заполнен?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 11.05.2009, 15:54   #5
-ushёl-
Форумчанин
 
Аватар для -ushёl-
 
Регистрация: 04.02.2009
Сообщений: 141
По умолчанию

на выходе одни нули.

var
a:array[1..10]of integer;
i,j,k,n:integer;

begin
n := 10; { размер массива }

for i:=1 to n do
write(a[i]:4);
writeln;

i := 2;
while i<=n do
begin
for j:=1 to i-1 do
if a[i]=a[j] then
begin
dec(n);
for k:=i to n do
a[k] := a[k+1];
dec(i);
break;
end;
inc(i);
end;

for i:=1 to n do
write(a[i]:4);

readln;
end.
-ushёl- вне форума Ответить с цитированием
Старый 11.05.2009, 15:57   #6
-ushёl-
Форумчанин
 
Аватар для -ushёl-
 
Регистрация: 04.02.2009
Сообщений: 141
По умолчанию

Целочисленную таблицу из n элементов переписать так,чтобы вместо одинаковых идущих подряд элементов оставался только один.Остаток таблицы заполняется нулями.
-ushёl- вне форума Ответить с цитированием
Старый 11.05.2009, 15:58   #7
-ushёl-
Форумчанин
 
Аватар для -ushёl-
 
Регистрация: 04.02.2009
Сообщений: 141
По умолчанию

Это так звучит задача)
-ushёl- вне форума Ответить с цитированием
Старый 11.05.2009, 16:01   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

А массив кто вводить будет?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 11.05.2009, 16:04   #9
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

вот мой извращенный вариант =) :
Код:
const 
	n = 10;
	m = 5;
	
type
	arr = array[1..n] of integer;

procedure fill_arr(var X:arr);
var
	i:integer;
begin
	randomize;
	for i:=1 to n do
		X[i] := random(m);
end;

procedure unique(var X:arr);
var 
	i,j:integer;
	y:set of byte;
begin
	y := [];
	for i:=1 to n do begin
		y := y + [X[i]];
		X[i] := 0;
	end;
	j := 1;
	for i:=1 to m do 
		if (i in y) then begin
			X[j] := i;
			inc(j);
		end;
end;

procedure out_arr(X:arr);
var
	i:integer;
begin
	for i:=1 to n do
		write(X[i]:3);
end;

var 
	X:arr;
begin
	fill_arr(X);
	out_arr(X);
	unique(X);
	writeln;
	out_arr(X);
	readln;
end.
***
во втором for в процедуре unique под if можно еще запихнуть if (j = n) then exit; и все будет хорошо)
Uguu~

Последний раз редактировалось __STDC__; 11.05.2009 в 16:13.
__STDC__ вне форума Ответить с цитированием
Старый 11.05.2009, 16:12   #10
-ushёl-
Форумчанин
 
Аватар для -ushёl-
 
Регистрация: 04.02.2009
Сообщений: 141
По умолчанию

const
n=10;
var
a:array[1..10]of integer;
i,j,k,u:integer;
begin
for i:=1 to n do
a[i]:=random(100);
writeln;
i := 2;
while i<=n do
begin
for j:=1 to i-1 do
if a[i]=a[j] then
begin
u:=n;
dec(u);
for k:=i to n do
a[k] := a[k+1];{сдесь коппл выдаёт ошибку"индекс находиться вне границ массива"}
dec(i);
break;
end;
inc(i);
end;

for i:=1 to n do
write(a[i]:4);
readln;
end.
-ushёl- вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В заданном массиве чисел упорядочить элементы dolya2007 Общие вопросы C/C++ 0 01.05.2009 02:44
Как удалить строки и столбцы в массиве ЛесенОК Свободное общение 1 31.01.2009 18:35
В массиве Р(10) введенном с клавиатуры поменять местами наибольший и наименьший элементы. Делфи. Lerika Помощь студентам 6 23.01.2009 11:52
Удалить элементы массива Маськ@ Паскаль, Turbo Pascal, PascalABC.NET 1 21.12.2008 17:46
Составить процедуру, которая в задоном массиве С заменяет элементы Absent Помощь студентам 1 25.03.2008 23:11