Помощь - Поиск - Пользователи - Календарь
Полная версия: задача на массивы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
nutty
всем дорого времени суток)
пожалуйста помогите исправить что бы норм работало,а то я что то уже запутался...
условие: дан массив А1...А40 заменить все элементы стоящие между Амах и Амин или Амин и Амах на 0
вот что у меня имеется...

program masminmax;
uses crt;
var A: array[1..10] of integer;
Amax,Amin,i,mini,maxi: integer;
begin
clrscr;
Amin:=1;
Amax:=1;
for i:=1 to 10  do
begin
  readln(A[i]);
  If i=1 then
  begin
  Amin:=A[i];
  Amax:=A[i];
  end;
  if A[i]<Amin then
    mini:=i;
  if A[i]>Amax then
    maxi:=i;
end;
if mini>maxi then
for i:=maxi to mini do
  A[i]:=0;
if mini<maxi then
for i:=mini to maxi do
  A[i]:=0;
writeln('result');
for i:=1 to 10 do
 write(A[i],' ');
readln;
end.


вот...он как то неправильно считает...буду оч признателен если кто нибудь подскажет)

Теги не забываем...
volvo
Ты не совсем правильно находишь min/max...

mini := 1; maxi := 1;
for i:=1 to 10  do
begin
  readln(A[i]);

  if A[i]<A[mini] then mini:=i;
  if A[i]>A[maxi] then maxi:=i;
end;


Вот так будет лучше... Кстати, почему 10? В условии говорится про 40 ...
nutty
да я так тоже пробывал,но многого это не изменило,а преподавателю почему та не понравилось...
а 10 чтобы быстрее проверять было :-[
там просто нужно самому вводить,а каждый раз 40 чисел лень))
volvo
Не знаю, что там НЕ понравилось твоему преподавателю... Программа (с моим исправлением) выходит рабочая... Единственное, что надо исправить - это то, что сейчас на нули заменяются все элементы между мин/макс, ВКЛЮЧАЯ мин/макс... Небольшое исправление:

program masminmax;
uses crt;
var
  A: array[1..10] of integer;
  i, mini, maxi: integer;
begin
  clrscr;
  mini := 1; maxi := 1;

  for i:=1 to 10 do begin
    readln(A[i]);

    if A[i]<A[mini] then mini:=i;
    if A[i]>A[maxi] then maxi:=i;
  end;

  if mini>maxi then
    for i:=maxi + 1 to mini - 1 do A[i]:=0
  else
    if mini<maxi then { <--- Можно и без этого... }
      for i:=mini + 1 to maxi - 1 do A[i]:=0;

  writeln('result');
  for i:=1 to 10 do write(A[i],' ');
  readln;
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.