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

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

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

Автор: Юля 15.11.2007 0:42

Проверьте пожалуйста программку! В ней что-то не так, но не пойму что.
Данную программу нужно было составить с помощью функций.

{В массиве все элементы, стоящие после минимального, уменьшить на 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 15.11.2007 1:10

в функции 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;