Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 175

/ вопрос открыт /

Здравствуйте, эксперты!
Задача нужно решить через функцию и продцедуру,
Заменить отрицательные элементы линейного массива их модулями, не пользуясь стандартной функцией вычисления модуля. Подсчитать количество произведённых замен.

strannik23 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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

strannik23 (статус: Посетитель), 11 апреля 2011, 10:59 [#1]:

может я не правильно как и выразился, но эта задача нужна решённая сначала через функцию а потом через продцедуру. а тут как я понял всё в одном?
min@y™

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

strannik23 (статус: Посетитель), 11 апреля 2011, 11:25 [#3]:

сори, спасибо большое

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:25
Выполнено за 0.03 сек.