Программирование на PscalABCNET. Тема: удаление нескольких элементов из массива.
Не врубилась как это сделать, пока выходит только так, но ни то что работает неправильно, он просто второй вариант массива мне не выдает:
const N = 10;
var a: array[1..N] of integer;
i, k, m, x: integer;
begin
for i:=1 to N do begin
a[i]:=random(100);
write(a[i]:4);
end;
writeln;
i:=1;
m:=N;
while i<=m do for x:=2 to a[i] do if a[i] mod x<>0 then begin
m:=m-1;
for k:=i to m do a[k]:=a[k+1];
end
else i:=i+1;
for i:=1 to m do write(a[i]:4);
end.
Другие языки программирования и технологии
Удалить все непростые элементы массива
Решение на Pascal ABC
var i, b, j, n, max, min, c: integer;
e: boolean;
a: array [1..100] of integer;
const n1=50; {значение элемента массива наугад}
begin
n:=10; {количество чисел}
for i:=1 to n do
begin
a[i]:=random (n1);
write (a[i]:4);
if i=1 then
begin
max:= a[i];
min:= a[i];
end;
if a[i] > max then max:=a[i];
if a[i] < min then min:=a[i];
end;
writeln;
writeln ('оставляем только простые элементы массива, непростые элементы удаляем');
min:=min-1;
max:=max-1;
repeat
inc(min);
c:=0;
for i:=2 to trunc(min/2)+1 do
if min mod i = 0 then inc(c);
if c=0 then
for j:=1 to n do
if a[j]=min then write (a[j]:4);
until (min > max);
end.
var i, b, j, n, max, min, c: integer;
e: boolean;
a: array [1..100] of integer;
const n1=50; {значение элемента массива наугад}
begin
n:=10; {количество чисел}
for i:=1 to n do
begin
a[i]:=random (n1);
write (a[i]:4);
if i=1 then
begin
max:= a[i];
min:= a[i];
end;
if a[i] > max then max:=a[i];
if a[i] < min then min:=a[i];
end;
writeln;
writeln ('оставляем только простые элементы массива, непростые элементы удаляем');
min:=min-1;
max:=max-1;
repeat
inc(min);
c:=0;
for i:=2 to trunc(min/2)+1 do
if min mod i = 0 then inc(c);
if c=0 then
for j:=1 to n do
if a[j]=min then write (a[j]:4);
until (min > max);
end.
Здесь задача о нахождении простых чисел, это раз, а два: поддерживает ли этот абв динамические массивы?
Дело в том, что после удаления элементов массив должен стать меньше.
Делаем так.
Для определения, является ли число простым, пишем отдельную функцию:
function simple(n:integer): boolean;
var x: integer;
begin
x:=1;
repeat x:=x+1 until n mod x = 0;
if n=x then simple:=true else simple:=false;
end;
которую вызываем для каждого элемента:
for i:=1 to n do
if simple(a[ i ]) then ./удаляем этот элемент/;
А вот как работать с динамическими массивами, разбирайтесь сами.
Второй вариант - создать второй массив, переписать в него все непростые числа (if NOT simple(a[ i ])), запомнить в отдельной переменной верхнюю границу и печатать до неё.
Третий вариант: после проверки на NOT simple просто выводить по одному на печать.
У вас же написана какая-то чушь.
Дело в том, что после удаления элементов массив должен стать меньше.
Делаем так.
Для определения, является ли число простым, пишем отдельную функцию:
function simple(n:integer): boolean;
var x: integer;
begin
x:=1;
repeat x:=x+1 until n mod x = 0;
if n=x then simple:=true else simple:=false;
end;
которую вызываем для каждого элемента:
for i:=1 to n do
if simple(a[ i ]) then ./удаляем этот элемент/;
А вот как работать с динамическими массивами, разбирайтесь сами.
Второй вариант - создать второй массив, переписать в него все непростые числа (if NOT simple(a[ i ])), запомнить в отдельной переменной верхнюю границу и печатать до неё.
Третий вариант: после проверки на NOT simple просто выводить по одному на печать.
У вас же написана какая-то чушь.
не обязательно крутить полный цикл для проверки на простоту
достаточно до половинки числа -- дальше всё равно на разделится
или вообще до первого делителя, чтоб зря проц не гонять
и лучше эту проверку вынести в отдельную функцию
достаточно до половинки числа -- дальше всё равно на разделится
или вообще до первого делителя, чтоб зря проц не гонять
и лучше эту проверку вынести в отдельную функцию
Похожие вопросы
- Не пойму как удалить элементы массива (C++).
- 1.Заполнить массив случайными числами. Вывести элементы массива на экран. Заменить все его минимальные элементы нулями.
- Объясните пожалуйста, что означает эта строка WRITE('ВВЕДИTE ЭЛЕМЕНТ МАССИВА '); READLN(MAS[1])?
- Как удалить нулевые элементы из массива C++. Помогите написать код для того чтобы из массива удалить все нулевые элементы
- В одномерном массиве, состоящем из n вещественных элементов, вычис- лить: 39 1) сумму положительных элементов массив
- Как удалить элемент массива со сдвигом остальных элементов в С++
- Помогите с массивами! Найти и вывести на экран сумму нечётных элементов массива и количество отрицательных.
- ПОМОГИТЕ, ДОБРЫЕ ЛЮДИ!!! Язык С++, записать в массив d нечетные элементы массива А которых нет в В - НЕ ПОЛУЧАЕТСЯ
- Работа с массивами. Объявление массивов. Изменение и чтение элементов массива
- Поиск наибольшего отрицательного элемента массива (c++) и его удаление, написал программу, где то косячек =/
simple := (n = x);
if not simple(a[ i ]) then ./удаляем этот элемент/;!!!