Другие языки программирования и технологии
Напишите пожалуйста программу в паскале
Знаю, это почти нагло просить решить задачу, но я никак не могу найти решение. пару часов уже сижу. Буду очень благодарна, если кто поможет. Вся суть в том чтобы удалить из массива все повторяющиеся элементы. оставить нужно только различающиеся.
А решений много. Самое простое без использования вспомогательного массива:
program P4;
var a:array[1..100]of integer; n,i,j,k:integer;
begin
n:=15; {длина исходного массива}
randomize; for i:=1 to n do a[ i]:=random(10)+1;
writeln ('Old array: '); for i:=1 to n do Write(a[ i]:4); writeln;
i:=1;
while i < n do {перебираем все элементы до n-1, чтобы искать за ними повторяющиеся;
за элементом n таких быть не может, поэтому его не берем}
begin
j:=i+1;
while j<=n do {перебираем все элементы от i+1 до конца и если находим совпадающий с a[ i], то в цикле сдвигаем все элементы за ним, если они есть, на 1 к началу массива и корректируем его длину n, без перехода к сравнению следующего элемента}
if a[ j]=a[ i] then begin for k:=j to n-1 do a[ k]:=a[k+1]; dec(n) end else inc(j);
inc(i)
end;
WriteLn('New array'); for i:=1 to n do Write(a[ i]:4); writeln;
readln
end.
Вообще задача всегда решается и записывается на русском языке с использованием, когда удобно, обозначений из языка программирования (такая смешанная запись называется псевдокодом) и затем окончательно переписывается на язык программирования :)
Также хороший способ - сначала написать комментарии к программе, а потом вставить между ними соответствующий им код.
program P4;
var a:array[1..100]of integer; n,i,j,k:integer;
begin
n:=15; {длина исходного массива}
randomize; for i:=1 to n do a[ i]:=random(10)+1;
writeln ('Old array: '); for i:=1 to n do Write(a[ i]:4); writeln;
i:=1;
while i < n do {перебираем все элементы до n-1, чтобы искать за ними повторяющиеся;
за элементом n таких быть не может, поэтому его не берем}
begin
j:=i+1;
while j<=n do {перебираем все элементы от i+1 до конца и если находим совпадающий с a[ i], то в цикле сдвигаем все элементы за ним, если они есть, на 1 к началу массива и корректируем его длину n, без перехода к сравнению следующего элемента}
if a[ j]=a[ i] then begin for k:=j to n-1 do a[ k]:=a[k+1]; dec(n) end else inc(j);
inc(i)
end;
WriteLn('New array'); for i:=1 to n do Write(a[ i]:4); writeln;
readln
end.
Вообще задача всегда решается и записывается на русском языке с использованием, когда удобно, обозначений из языка программирования (такая смешанная запись называется псевдокодом) и затем окончательно переписывается на язык программирования :)
Также хороший способ - сначала написать комментарии к программе, а потом вставить между ними соответствующий им код.
Кривой, но дубово надёжный вариант:
создать второй массив и в него писать "1" для повторившегося ( пробегом и сравнением во внутреннем цикле от начала ) и "0" для впервые встреченного по этим же индексам.
Потом переписать в ещё один новый массив те которые с нулями в массиве-двойнике
(повторяю -кривое решение, но сработает. для оптимизации долго думать надо, а это лениво) ) )
создать второй массив и в него писать "1" для повторившегося ( пробегом и сравнением во внутреннем цикле от начала ) и "0" для впервые встреченного по этим же индексам.
Потом переписать в ещё один новый массив те которые с нулями в массиве-двойнике
(повторяю -кривое решение, но сработает. для оптимизации долго думать надо, а это лениво) ) )
Похожие вопросы
- напишите пожалуйста программы по паскалю.
- Напишите пожалуйста программу в паскале
- Напишите пожалуйста программу на паскале!!
- Напишите пожалуйста программу на паскале.
- Напишите пожалуйста программу в паскале. Дана строка символов,определить количество слов,начинающихся с заданного символа
- Напишете пожалуйста программу по этой задаче. ( Паскаль)
- Сделайте пожалуйста программу на Паскале. Заранее спасибо!!!!
- Написать 2 программы на Паскаль.
- Помогите написать 2 программы на паскале.. . очень нужно
- Помогите написать 2 программы в паскале