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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2013, 11:49   #1
Lexey_fan
 
Регистрация: 09.06.2011
Сообщений: 5
По умолчанию pascal - обработка массивов

Доброго дня многоуважаемые знатоки Pascal, не могли бы вы помочь с решением задач:
--Удалить из массива целых чисел все элементы, являющиеся простыми числами.
--Вычислить сумму элементов вещественного массива, находящихся до минимального и после максимального элементов. Создать функции для определения номеров минимального и максимального элементов, а также для вычисления суммы элементов.

По первому вопросу, благодаря учебникам и т.п. нашёл как получать простые числа и выводить их(при этом все непростые числа удаляются)
можно ли как то переработать данный код программы
Код:
const
N = 255;
type
SetOfNumber = set of 1..N;
var
n1,next,i: integer; 
BeginSet, 
PrimerSet: SetOfNumber; 
begin
BeginSet:= [2..N]; 
PrimerSet:= [1]; 
next:= 2; 
while BeginSet <> [] do 
begin
n1:= next; 
while n1 <= N do
begin
Exclude(BeginSet,n1);
n1:= n1+next 
end; 
Include(PrimerSet,next);
repeat
inc(next)
until (next in BeginSet) or (next > N)
end; 
for i:= 1 to N do
if i in PrimerSet then Write(i:8);
WriteLn
END.
По второму даже мыслей не приходит!
Заранее огромное спасибо тем кто откликнется!
Lexey_fan вне форума Ответить с цитированием
Старый 08.05.2013, 13:22   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Цитата:
Удалить из массива целых чисел все элементы, являющиеся простыми числами.
Код:
    //NN - Размерность массива
     N1 := NN;
     i := 1;
     while i <= N1 do
     Begin
       if (Arr[i] in PrimerSet) then
       Begin
         for j := i to N1-1 do
           Arr[j] := Arr[j+1];
         dec(N1);
       End
       else
         inc(i)
     End;
Массив создадите сами.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 08.05.2013, 14:07   #3
tools
Форумчанин
 
Регистрация: 07.10.2008
Сообщений: 213
По умолчанию

по второму, возможно, помогу Вам:
Код:
uses crt;

const
	N=8;
type
	my_arr = array[1..N] of Real;
var
	i,j: Integer;
	arr : my_arr;

procedure printArr(const arr : my_arr);
var
	i:Integer;
begin
	for i:=1 to N do
		writeln(arr[i]:5:2);
end;

function maxElemIndex(const arr: my_arr):Integer;
var
	max_elem: Real;
	ind : Integer;
begin
	max_elem:= arr[1];
	ind:= 1;
	for i:=2 to N do
	begin
		if arr[i] > max_elem then
		begin
			max_elem:=arr[i];
			ind:= i;
		end; 
	end;
	maxElemIndex:= ind;
end;

function minElemIndex(const arr:my_arr):Integer;
var
	min_elem:Real;
	ind : Integer;
begin
	min_elem:= arr[1];
	ind:= 1;
	for i:=2 to N do
	begin
		if arr[i] < min_elem then
		begin
			min_elem:= arr[i];
			ind:= i;
		end; 
	end;
	minElemIndex:= ind;
end;

function sumArrayElems(const arr : my_arr):Real;
var
	sum:Real;
	i,j,k:integer;
begin
	sum:= 0.0;
	i:= minElemIndex(arr); 
	j:= maxElemindex(arr);
	if (i>j) then
	begin
		for k:=1 to N do
			sum:= sum+arr[k];
		sumArrayElems:= sum;
	end
	else
	begin
		for k:=0 to i-1 do
			sum:= sum+arr[k];
		for k:=j+1 to N do
			sum:= sum+arr[k];
		sumArrayElems:= sum;
	end;
end;

begin
	clrscr;
	Randomize;
	for i:=1 to N do
		arr[i]:= (random+1.12)+random*3.14;
	printArr(arr);
	writeln;
	writeln('Sum of elems: ', sumArrayElems(arr):4:2);
	readln;
end.

Последний раз редактировалось tools; 08.05.2013 в 14:12.
tools вне форума Ответить с цитированием
Старый 08.05.2013, 15:32   #4
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

По первому:
1. В условии нет указания на то, что встречающиеся в массиве числа должны быть непременно меньше 255. Значит, даже в принципе эта программа не может удовлетворять условиям задачи.
2. Сама программа написана неправильно. Т.е. содержит ошибки.
s-andriano вне форума Ответить с цитированием
Старый 08.05.2013, 17:53   #5
Lexey_fan
 
Регистрация: 09.06.2011
Сообщений: 5
По умолчанию

спасибо, очень выручили, что касается первой задачи, к сожалению не всё понимаю, не могли бы подсказть, дано работаю и пишу на vba а по паскалю жена попросила помочь, часть заданий сделал, то что не смог попросил помощи тут((
Lexey_fan вне форума Ответить с цитированием
Старый 08.05.2013, 18:12   #6
tools
Форумчанин
 
Регистрация: 07.10.2008
Сообщений: 213
По умолчанию

Вы алгоритм решета Эратосфена (то,что Вы взяли из книги для первого задания) найдите и разберите. Алгоритм крайне прост как в понимании, так и реализации. Необязательно использовать множества в Паскале, хотя это один из вариантов, можете сделать через массивы.
tools вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка двумерных массивов (Pascal) Olga Sharik Помощь студентам 0 01.05.2012 17:52
обработка двумерных массивов (pascal) likanmaster Помощь студентам 0 03.12.2011 14:25
Pascal - обработка одномерных массивов Russtein Помощь студентам 0 10.11.2011 18:29
Формирование и обработка массивов (pascal) deceiver Помощь студентам 5 17.03.2009 17:38
Обработка массивов данных Pascal Igor571 Помощь студентам 4 01.12.2008 11:05