Помощь - Поиск - Пользователи - Календарь
Полная версия: Проверьте программку!
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Юля
Проверьте пожалуйста программку! В ней что-то не так, но не пойму что.
Данную программу нужно было составить с помощью функций.

{В массиве все элементы, стоящие после минимального, уменьшить на 10.}

Program Lab4Var6;
Const
 maxN=10;
Type
  array1=array[1..10] of integer; 
var
  a: array1;
  n: integer;
  i: integer;
  min, min_i: integer;

{Определение процедур}

procedure ReadArray; {ReadArray - процедура ввода массива с клавиатуры}
begin
 repeat                {Ввод количества элементов}
  write('Введите n:');
  readln(n);
 until (n>=1)and(n<=maxN);
 for i:=1 to n do      {Ввод элементов поодиночке}
  begin
   write('a[',i,']=');
   readln(a[i]);
  end;
end;                  {Конец процедуры ReadArray}

function FindMin: integer;   {FindMin - процедура поиска индекса минимального элемента}
var
 min_i: integer;  {Локальная переменная, в которой хранится индекс min до возвращения из функции}
 i: integer;      {Локальная переменная, счётчик цикла}
begin
 min_i:=a[1];             {Ищем индекс min элемента}
 for i:=1 to n do
  if a[i]<min_i  then min_i:=a[i];
 FindMin:=min_i;  {Функция возвращает найденный индекс}
end;                 {Конец процедуры FindMin}

procedure Remember;
begin
for i:=1 to n do
 if a[i]=min then
   begin
    min_i:=i;
   end;
 writeln ('Минимальный элемент:', min_i);
end;

procedure Diminish;  {Diminish - процедура уменьшения элементов, стоящих после min, на 10}
begin

 for i:=min_i+1 to n do     {Уменьшаем элементы на 10}
 a[i]:=a[i]-10;
end;                 {Конец процедуры Diminish}

procedure PrintArray;  {PrintArray - процедура вывода массива на экран}
begin
 writeln;              {Выводим массив}
 for i:=1 to n do
  write(A[i]:3);
 writeln;
end;                   {Конец процедуры PrintArray}

{Основная часть программы}
begin
 ReadArray;  {Ввод массива}
 min_i:=FindMin;    {Поиск индекса минимального элемента}
 Remember;
 Diminish;   {Уменьшение элементов}
 PrintArray; {Вывод массива}
end.


М
Используй теги для программного текста!
-- Лопарь

Malice
в функции FindMin немного напутано, попробуй так:
function FindMin: integer; {FindMin - процедура поиска индекса минимального элемента}
var
min_i: integer; {Локальная переменная, в которой хранится индекс min до возвращения из функции}
i: integer; {Локальная переменная, счётчик цикла}
begin
min_i:=1; {Ищем индекс min элемента}
for i:=2 to n do
if a[i]<a[min_i] then min_i:=i;
FindMin:=min_i; {Функция возвращает найденный индекс}
end; {Конец процедуры FindMin}


и здесь тоже не понятно:
procedure Remember;
begin
min:=a[min_i];
writeln ('Минимальный элемент:', min);
end;
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.