|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.04.2012, 12:01 | #1 |
Пользователь
Регистрация: 07.04.2012
Сообщений: 21
|
Составить два массива с различными простыми числами среди элементов исходного массива и их частотами
Здравствуйте! Нужна ваша помощь. Есть такая задачка:
С клавиатуры вводятся длина одномерного массива и его элементы. Составить главную программу и подпрограмму. В главной программе ввод исходных данных, обращение к подпрограмме и вывод результатов. Все входные данные и результаты подпрограммы передаются через параметры. В подпрограмме составить два массива: с различными простыми числами среди элементов исходного массива и их частотами. Проверку на простое число оформить как функцию. Помогите найти ошибку в коде, может я что то делаю не так. В общем вот мой код: Код:
|
09.04.2012, 14:53 | #2 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
Сразу оговорюсь, что Pascal не изучал, может там и разрешено выполнять такие действия , как у тебя, но в Delphi компилятор выдал бы ошибки.
Процедуры тоже должны иметь BEGIN END. Не увидел проверки на простое число в процедуре. Как ты передаёшь результату функции(boolean) тип WORD? В начале функции нужно написать PROS:=TRUE; вместо PROS:=B>1;. K:=0; FOR J:=1 TO K DO {здесь будет ошибка, т.к. идём на понижение.} if A[I] = B[J] then {при К=0, а соответственно и J=0 здесь будет ошибка, т.к. B[1..30], а мы полезем в B[0]} Думаю, что будет так Код:
Если помог, проси поставить минус. Будь оригинален!
Последний раз редактировалось Rin; 09.04.2012 в 15:05. |
09.04.2012, 15:18 | #3 |
Пользователь
Регистрация: 07.04.2012
Сообщений: 21
|
Спасибо большое за подсказку! Сейчас попробую так сделать. Я только начал изучать паскаль, вот с процедурами и функциями у меня проблемы.
|
09.04.2012, 15:20 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Внимание! функция проверки числа на простоту НЕКОРРЕКТНА!
рекомендую использовать такую функцию: Код:
p.s. остальное в коде не смотрел... |
09.04.2012, 16:00 | #5 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
Serge_Bliznykov,
главное, что функция работает правильно. В университете, при знакомстве с языком, нас тоже учили такому алгоритму. Предложенная Вами функция несомненно отработает быстрее, и её можно сохранить для дальнейшего использования, но думаю, что для ТС это непринципиально, ибо проверять его будет преподаватель, который сам давал ему этот алгоритм.
Если помог, проси поставить минус. Будь оригинален!
|
09.04.2012, 16:25 | #6 | |||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Точно отработает правильно?! а ноль - это простое число? а единица? согласно википедии (и я с ней согласен) - статья "Простые числа" Цитата:
Код:
ну и второе. ладно. хорошо. нашли Вы, что число делится без остатка (значит оно уже точно не простое), так зачем же дальше перебирать элементы в цикле?! неужели написать EXIT - это как-то усложнит функцию или сделает её менее читаемой/понятной?!! Цитата:
Но от TC зависит, стоит ли написать код ЛУЧШЕ, чем тот, что ему дал преподаватель (а кстати, точно ли дал? Или TC сам это написал?! ), или удовлетвориться имеющимся кодом... |
|||
09.04.2012, 16:42 | #7 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
На счёт первого уговорили безоговорочно.
На счёт второго, я сразу сказал, что Pascal не изучал, и поэтому не знаю, что чтобы выйти из процедуры пишется, именно, exit, а не halt или что-либо ещё. Поэтому и не стал писать exit. А вдруг такого в Pascal нет, и я его ввожу в заблуждение. На счёт напутствий для ТС, согласно выводу из первого, тоже должен согласиться. В общем вы меня уделали =).
Если помог, проси поставить минус. Будь оригинален!
|
09.04.2012, 17:05 | #8 |
Пользователь
Регистрация: 07.04.2012
Сообщений: 21
|
Вот что у меня получилось:
Код:
По поводу простого числа, попробую и такой вариант. Всем спасибо за помощь! |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
массиве X(N) найти максимальный элемент среди положительных элементов массива и минимальный среди отрицательных элементов. | sorok | Общие вопросы C/C++ | 2 | 20.03.2012 12:18 |
Турбо ассемблер - построить массив путём сдвига исходного массива и умножить все элементы полученного массива на два | Александр16 | Помощь студентам | 5 | 12.02.2012 20:30 |
Турбо ассемблер - построить массив путём сдвига исходного массива и умножить все элементы полученного массива на два | Александр16 | Помощь студентам | 1 | 12.02.2012 19:56 |
Из исходного массива заполнить два других массива | DarkStalkerus | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 14.12.2011 14:19 |
Pascal: Составить программу генерирования массива B, состящего из отрицательных элементов массива a | mrRastom | Помощь студентам | 2 | 15.01.2011 14:33 |