Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ создать массив

Автор: jenka 15.11.2006 9:36

Есть вот такая задача:

Дана последовательность натуральных чисел A[N]. создать массив из четных чисел этой последовательности. Если таких чисел нет, то вывести сообщение об этом факте.

Помогите с решением, плиз.

Автор: lapp 15.11.2006 10:58

Цитата(jenka @ 15.11.2006 6:36) *
Дана последовательность натуральных чисел A[N].

Что означют эти слова? Как она дана?
Она может (в принципе) :
- вводиться с клавы (по одному числу, скажем),
- читаться из файла,
- сниматься с датчика (например, время),
- быть задана общей формулой (типа An = 3*n^2 ),
- быть заданной словесно (типа: все единицы, кроме целых тысяч, а те равны 2)
- ...
Думаю, можно изобрести еще способы. Так что тебе нужно определиться с этим.

Второе.
Ответить на заданный вопрос можно только либо если есть общая формула (но тогда это задача скорее не для программы, либо прога будет сильно зависеть от общего вида последовательности..), либо перебрав все члены последовательности, что невозможно в случае бесконечной последовательности. Поэтому видится наиболее разумным ограничить номер последовательности каким-то (большим) числом, типа 10000. Тебя это устраивает?


Автор: lapp 15.11.2006 12:10

jenka, вот программа в предположении, что последовательность задана формулой
An = [n/3]
- то есть целая часть от деления номера на три.
Количество тестируемых членов последовательности задается константой M

{for jenka }

const
M=100; {maximum tested number}

var
A2:array[1..M]of integer; {Array of even numbers}
i,j,An:integer;

function A(n:integer):integer;
begin
{Here goes a rule to compute An}
A:=n div 3
end;

begin
j:=0; {current number of even numbers}
for i:=0 to M do begin
An:=A(i);
if not Odd(An) then begin
j:=j+1;
A2[j]:=An
end
end;
WriteLn('Total of ',j,' even numbers found.');
for i:=1 to j do Write(A2[i]:8);
ReadLn
end.

Приходи, говори, что не совсем понятно - объясним smile.gif