Консультация № 174653
28.11.2009, 20:16
0.00 руб.
0 3 1
добрый вечер.
напишите пожалуйста программу для данных задач.
с помощью процедур
1) одномерный массив. даны 3 последовательных целых чисел. найти мин.элемент в каждой последовательности.
2) даны 2 после-сти разной размерности. найти в каждой послед средние значение и сравнить между собой после результата.

Обсуждение

Неизвестный
29.11.2009, 11:44
общий
Что? Что? Повторите, пожалуйста, по-русски: я лично ничего не понял, что именно сделать-то?
Неизвестный
29.11.2009, 14:01
общий
Boriss:
второе задание уже не надо решать,вместо него надо решить,условие такое
{одномерный массив}
дано 3 последовательности. Найти в каждом, количество положительныъ элементов,количество отрицательных элементов и количество элементов которые = 0.

эту и 1 первое задание,нужно решить с помощью процедур.
давно
Академик
320937
2216
01.12.2009, 17:30
общий
это ответ
Здравствуйте, awards1204. Процедуры по обоим заданиям собраны в одной программе. Для универсальности использованы: процедурный тип, что позволяет находить число элементов по любым условиям без изменения процедуры ElementsCount. Указатели использованы, чтобы передавать в процедуры массив любого размера (передается адрес первого элемента и число элементов). Программа в приложении. Turbo Pascal.

Приложение:
program p174653;
{
Одномерный массив
1) даны 3 последовательных целых чисел. найти мин.элемент в каждой последовательности.
2) дано 3 последовательности. Найти в каждом, количество положительныъ элементов,
количество отрицательных элементов и количество элементов которые = 0.
}
const
MaxSize = 100;
type
TVector = array[1..MaxSize] of integer;
TPtr = ^integer;
TFunc = function(value:integer): boolean;
var
v1, v2, v3: TVector;
i: integer;
size1, size2, size3: integer;
min1, min2, min3: integer;
Positives1, Positives2, Positives3: integer;
Negatives1, Negatives2, Negatives3: integer;
Zeros1, Zeros2, Zeros3: integer;

{$F+}
function IsPositive(value: integer):boolean;
begin
IsPositive := value > 0;
end; { IsPositive }
{$F-}

{$F+}
function IsNegative(value: integer):boolean;
begin
IsNegative := value < 0;
end; { IsNegative }
{$F-}

{$F+}
function IsZero(value: integer):boolean;
begin
IsZero := value = 0;
end; { IsZero }
{$F-}

procedure InputVector(vptr: TPtr; var size : integer);
var
i: integer;
begin
writeln;
write('Размер массива =');
readln(size);
for i:= 1 to size do
begin
write('v[',i,']=');
readln(vptr^);
inc(vptr);
end;
end; { InputVector }

procedure PrintVector(vptr: TPtr; size : integer);
var
i: integer;
begin
for i:= 1 to size do
begin
write(vptr^, ';');
inc(vptr);
end;
writeln;
end; { PrintVector }

procedure MinSearch(vptr: TPtr; size : integer; var min: integer);
var
i: integer;
begin
min := vptr^;
for i:= 2 to size do
begin
inc(vptr);
if vptr^<min then
min := vptr^;
end;
end; { MinSearch }

procedure ElementsCount(
vptr: TPtr;
size : integer;
f: Tfunc;
var count: integer);
var
i: integer;
begin
count := 0;
for i:= 1 to size do
begin
if f(vptr^) then
inc(count);
inc(vptr);
end;
end; { ElementsCount }

procedure ProcessVector(
heading: string;
vptr: TPtr;
size: integer;
var min: integer;
var Positives: integer;
var Negatives: integer;
var Zeros: integer);
begin
InputVector(vptr, size);
MinSearch(vptr, size, min);
ElementsCount(vptr, size, IsPositive, positives);
ElementsCount(vptr, size, IsNegative, negatives);
ElementsCount(vptr, size, IsZero, zeros);

writeln(heading);
PrintVector(vptr, size);
writeln('минимальный =', min);
writeln('положительных=', positives);
writeln('отрицательных=', negatives);
writeln('нулевых =', zeros);
end; { ProcessVector }

begin { Main }
ProcessVector('Первая последовательность',
@v1, size1, min1, positives1, negatives1, zeros1);

ProcessVector('Вторая последовательность',
@v2, size2, min2, positives2, negatives2, zeros2);

ProcessVector('Вторая последовательность',
@v3, size3, min3, positives3, negatives3, zeros3);

readln;
end.
Форма ответа