|
Вопрос # 5 175/ вопрос открыт / |
|
Здравствуйте, эксперты!
Задача нужно решить через функцию и продцедуру,
Заменить отрицательные элементы линейного массива их модулями, не пользуясь стандартной функцией вычисления модуля. Подсчитать количество произведённых замен.
 |
Вопрос задал: strannik23 (статус: Посетитель)
Вопрос отправлен: 11 апреля 2011, 10:12
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: min@y™
Ну, вот как-то так на паскале будет выглядеть, наверное:
program p5175;
const
N = 15; { кол-во элементов массива }
type
TVector = array[0..N - 1] of Integer;
{ заполнение массива случайными числами }
procedure RandomVector(var X: TVector);
var
Index: Integer;
begin
for Index:= Low(X) to High(X) do
X[Index]:= Random(50) - 25;
end;
{ вывод массива на экран }
procedure PrintVector(const X: TVector);
var
Index: Integer;
begin
for Index:= Low(X) to High(X) do
Write(X[Index]: 4);
WriteLn;
end;
{ Замена отрицательных элементов линейного массива их модулями }
function Execute(var X: TVector): Integer;
var
Index, Count: Integer;
begin
Count:= 0;
for Index:= Low(X) to High(X) do
if X[Index] < 0
then begin
X[Index]:= -X[Index];
Inc(Count);
end;
Execute:= Count;
end;
var
X: TVector;
Changes: Integer;
begin
Randomize;
RandomVector(X);
WriteLn(' Source array:');
PrintVector(X);
Changes:= Execute(X);
WriteLn(' Changed array (changes: ', Changes, '):');
PrintVector(X);
ReadLn;
end.
Вывод на консоли:
Source array:
12 -15 13 -9 5 -25 13 -4 -25 -4 7 7 -4 -15 -17
Changed array (changes: 9):
12 15 13 9 5 25 13 4 25 4 7 7 4 15 17
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 11 апреля 2011, 10:25
Оценка за ответ: 5
Комментарий к оценке: правильное решение
|
Мини-форум вопроса
Всего сообщений: 3; последнее сообщение — 11 апреля 2011, 11:25; участников в обсуждении: 2.
11 апреля 2011, 10:31: Вопрос перемещён из тематического раздела Pascal » Общие вопросы в раздел Лабораторный практикум » Pascal модератором min@y™
|
strannik23 (статус: Посетитель), 11 апреля 2011, 10:59 [#1]:
может я не правильно как и выразился, но эта задача нужна решённая сначала через функцию а потом через продцедуру. а тут как я понял всё в одном?
|
|
min@y™ (статус: Доктор наук), 11 апреля 2011, 11:16 [#2]:
Цитата (strannik23):
может я не правильно как и выразился, но эта задача нужна решённая сначала через функцию а потом через продцедуру. а тут как я понял всё в одном?
Там было через функцию, а вот через процедуру:
program p5175;
const
N = 15; { кол-во элементов массива }
type
TVector = array[0..N - 1] of Integer;
{ заполнение массива случайными числами }
procedure RandomVector(var X: TVector);
var
Index: Integer;
begin
for Index:= Low(X) to High(X) do
X[Index]:= Random(50) - 25;
end;
{ вывод массива на экран }
procedure PrintVector(const X: TVector);
var
Index: Integer;
begin
for Index:= Low(X) to High(X) do
Write(X[Index]: 4);
WriteLn;
end;
{ Замена отрицательных элементов линейного массива их модулями }
procedure Execute(var X: TVector; var Changes: Integer);
var
Index: Integer;
begin
Changes:= 0;
for Index:= Low(X) to High(X) do
if X[Index] < 0
then begin
X[Index]:= -X[Index];
Inc(Changes);
end;
end;
var
X: TVector;
Changes: Integer;
begin
Randomize;
RandomVector(X);
WriteLn(' Source array:');
PrintVector(X);
Execute(X, Changes);
WriteLn(' Changed array (changes: ', Changes, '):');
PrintVector(X);
ReadLn;
end.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
strannik23 (статус: Посетитель), 11 апреля 2011, 11:25 [#3]:
сори, спасибо большое
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|