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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2014, 14:11   #1
Ildarraddo
Новичок
Джуниор
 
Регистрация: 25.01.2014
Сообщений: 5
По умолчанию Задача: удалить из массива все простые числа

Помогите определить, где ошибка.
Заранее спасибо.
Изображения
Тип файла: jpg 21412.jpg (17.2 Кб, 171 просмотров)
Ildarraddo вне форума Ответить с цитированием
Старый 25.01.2014, 14:21   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Ошибка в том, что нужно на форум выкладывать полностью текст программы и в виде текста, а не картинкой!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.01.2014, 14:39   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,218
По умолчанию

Не ясно, что значит удалить элемент из массива, какого типа массив? Если статический, то операции удаления не предусмотрено.
Arigato вне форума Ответить с цитированием
Старый 25.01.2014, 14:48   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

судя по строчке:
Цитата:
Код:
for i:=j to n-k do x[i] := x[i+1]
все последующие элементы массива "сдвигаются" на место удаляемого.
Потом достаточно уменьшить переменную, в которой задано, сколько в массиве реально элементов (скорее всего, статический элемент имеет заведомо БОЛЬШИЙ размер), чтобы "проэмулировать" уменьшение количества элементов в массиве.

впрочем, я думаю, что это Вы и без меня прекрасно знаете.
Вопрос в том, понимает ли это автор темы!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.01.2014, 15:13   #5
Ildarraddo
Новичок
Джуниор
 
Регистрация: 25.01.2014
Сообщений: 5
По умолчанию

В турбо паскале все массивы статичны и задаются в начале программы. Естественно, что имеется в виду не физическое удаление ячейки массива, а переписывание элементов(и в дальнейшем, обращение к меньшему количеству элементов, игнорируя "ненужные больше ячейки").
Ildarraddo вне форума Ответить с цитированием
Старый 25.01.2014, 15:30   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Все делается проще:
Код:
k := 0;
for i := 1 to n do
  if not is_simple(x[i]) then
  begin
    inc(k);
    x[k] := x[i];
  end;
n := k;
for i := 1 to n do
  write(x[i], ' ');
Нужно только реализовать функцию проверки числа на простоту.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 25.01.2014, 16:11   #7
Ildarraddo
Новичок
Джуниор
 
Регистрация: 25.01.2014
Сообщений: 5
По умолчанию

Знаю, что функцию описать было бы и правильнее и быстрее, но...
Попытайтесь понять: хочу реализовать именно вот так. Гипотетика следующая: мы школьники, которые только начали изучать язык и ни о каких процедурах и функциях пока понятия не имеем. Мы знаем только массивы и банальные операторы управления.
Ildarraddo вне форума Ответить с цитированием
Старый 25.01.2014, 16:18   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Хорошо, можете и без функции. Вообще, основным изменением кода является даже не это, а то, что мы на каждом шаге не перемещаем все нерассмотренные элементы массива, что значительно ускорит программу на больших массивах.
Попробуйте заменить if x[j] >= 2 then pr := true; на pr := (x[j] >= 2);.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 25.01.2014 в 16:23.
BDA на форуме Ответить с цитированием
Старый 25.01.2014, 17:16   #9
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,218
По умолчанию

Цитата:
Сообщение от Ildarraddo Посмотреть сообщение
В турбо паскале все массивы статичны и задаются в начале программы.
В Турбо Паскале есть динамические массивы, а можно реализовать вектор на базе динамической памяти, тогда возможно будет и физическое удаление элементов
Arigato вне форума Ответить с цитированием
Старый 25.01.2014, 17:56   #10
Ildarraddo
Новичок
Джуниор
 
Регистрация: 25.01.2014
Сообщений: 5
По умолчанию

Я, конечно, полный профан в этом деле, но мне то казалось, что в Турбо Паскале их нет. Они есть в Delphi.
Хорошо, если они там есть, укажите собственноличный пример их использования.
Ildarraddo вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны натуральные числа a и b (a<b). Получить все простые числа из промежутка от a до b. ( с# ) NastyaShuvalova Помощь студентам 0 16.12.2013 18:08
Даны целые числа р и q. Получить все делители числа q, взаимно простые c г. Владан Паскаль, Turbo Pascal, PascalABC.NET 2 03.12.2012 23:39
печатающую все простые числа Сергей505 Паскаль, Turbo Pascal, PascalABC.NET 4 12.11.2011 18:22
Удалить из массива все чётные числа! malishka ya@ Помощь студентам 4 28.05.2010 01:55
Удалить из массива(одномерного) все повторяющиеся числа(Delphi) Махор Помощь студентам 4 29.11.2007 23:25