Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2011, 15:02   #1
Женька Good
Форумчанин
 
Регистрация: 15.03.2011
Сообщений: 126
По умолчанию Заменить элементы стоящие перед минимальным на 0, а после максимального на 1

Я нашел максимальное и минимальное, а как заменить не знаю.
Help please!
И ещё проблемка, при нахождении минимального(красный цвет), значение берется конечное из массива, а не останавливается на минимальном

Вот то что я сделал:
Код:
Program Xme1ez_exam;
Uses CRT;
Type mas=array[1..9] of Real;
     Const y:mas=(-1.2,-0.1,8.3,-9.5,6.3,-2.7,9.9,-3.6,-2.8);
     const n=9;
Var v,a:mas;
    min:real;
    max:Real;
    
Procedure Transform(Var v:mas);
Var j:integer;
begin
 For j:=1 to n do
  begin
  v[j]:=cos(3*y[j]);
  Write(v[j]:7:1);
  end;
end;

Procedure Min_max(min:real;max:real; Var v:mas; Var a:mas);
Var j:integer;
begin
max:=1;
min:=1;
 For j:=1 to n do
 a[j]:=v[j];
 If a[j]<min then
 min:=a[j];
 Writeln('min',min:7:1);

 For j:=1 to n do
 a[j]:=v[j];
 if a[j]>max then
 max:=v[j];
 Writeln('max',max:7:1);
 end;

Begin
CLRSCR;
transform(v);
writeln;
Min_Max(min,max,v,a);
Writeln;              
readln
end.
Женька Good вне форума Ответить с цитированием
Старый 28.12.2011, 15:17   #2
Jersey
Новичок
Джуниор
 
Регистрация: 28.12.2011
Сообщений: 5
По умолчанию

Чтобы выполнить это задание надо запоминать не значение максимального и минимального элемента, а их координаты. То есть imax jmax и imin jmin.
Далее в циклах делать обнуление или замену на единицы уже в зависимости от этих значений.
Jersey вне форума Ответить с цитированием
Старый 28.12.2011, 15:21   #3
Женька Good
Форумчанин
 
Регистрация: 15.03.2011
Сообщений: 126
По умолчанию

Цитата:
Сообщение от Jersey Посмотреть сообщение
Чтобы выполнить это задание надо запоминать не значение максимального и минимального элемента, а их координаты. То есть imax jmax и imin jmin.
Далее в циклах делать обнуление или замену на единицы уже в зависимости от этих значений.
Ну это я понял, но можно бы то, что вы сказали написать на программном уровне?
Женька Good вне форума Ответить с цитированием
Старый 28.12.2011, 15:35   #4
Jersey
Новичок
Джуниор
 
Регистрация: 28.12.2011
Сообщений: 5
По умолчанию

А. Почему-то подумал о двумерном массиве. Для одномерного вообще все просто.
При нахождении минимального
Код:
 For j:=1 to n do
 a[j]:=v[j];
 If a[j]<min then
 min:=a[j];
 minj:=j;
 Writeln('min',min:7:1);
При нахождении максимального

Код:
For j:=1 to n do
 a[j]:=v[j];
 if a[j]>max then
 max:=v[j];
 maxj:=j;
 Writeln('max',max:7:1);
Далее в цикле

Код:
for j:=1 to minj do
a[j]:=0;
for maxj to n do
a[j]:=1;
Вроде так, ну или приблизительно, могу ошибаться. Проверяйте, у меня возможности нет. Сейчас на учебу, приеду домой посмотрю.
Jersey вне форума Ответить с цитированием
Старый 28.12.2011, 15:42   #5
Женька Good
Форумчанин
 
Регистрация: 15.03.2011
Сообщений: 126
По умолчанию

Цитата:
Сообщение от Jersey Посмотреть сообщение
А. Почему-то подумал о двумерном массиве. Для одномерного вообще все просто.
При нахождении минимального
Код:
 For j:=1 to n do
 a[j]:=v[j];
 If a[j]<min then
 min:=a[j];
 minj:=j;
 Writeln('min',min:7:1);
При нахождении максимального

Код:
For j:=1 to n do
 a[j]:=v[j];
 if a[j]>max then
 max:=v[j];
 maxj:=j;
 Writeln('max',max:7:1);
Далее в цикле

Код:
for j:=1 to minj do
a[j]:=0;
for maxj to n do
a[j]:=1;
Вроде так, ну или приблизительно, могу ошибаться. Проверяйте, у меня возможности нет. Сейчас на учебу, приеду домой посмотрю.
Вот я немного переделал:
Код:
Program Xme1ez_exam;
Uses CRT;
Type mas=array[1..9] of Real;
     Const y:mas=(-1.2,-0.1,8.3,-9.5,6.3,-2.7,9.9,-3.6,-2.8);
     const n=9;
Var v,a:mas;
    minj:integer;
    maxj:integer;
Var j:integer;
    max,min:real;

begin

 For j:=1 to n do
  begin
  v[j]:=cos(3*y[j]);
  Write(v[j]:7:1);
  end;
  writeln;
  
  {naxodim Minimalny}
  min:=v[1];
  minj:=1;
  For j:=1 to n do
  begin
  If v[j]<min then
  minj:=j;
  end;
  Writeln(minj:7);
  
  {nahodim maksimalny}
  Maxj:=1;
  For j:=1 to n do
  begin
  If v[j]>max then
  maxj:=j;
  end;
  write(maxj:7);
  writeln;
  
  {Zamenyaem na 0 i 1}
  For j:=1 to minj do begin
  a[j]:=0;
  Write(a[j]:7:1);
  end;
  For j:=maxj to n do begin
  v[j]:=1;
  write(a[j]:7:1);
  end;
  
readln
end.
Там, где красным выделено, я заменяю элементы, но выводит все 0
Женька Good вне форума Ответить с цитированием
Старый 28.12.2011, 20:20   #6
Jersey
Новичок
Джуниор
 
Регистрация: 28.12.2011
Сообщений: 5
По умолчанию

А максимальный и минимальный ищет верно?
Jersey вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
заменить элементы одномерного массива, стоящие перед минимальным - на нули, а стоящие после максимального - на единицы (Паскаль) Женька Good Помощь студентам 2 01.12.2011 06:22
[Delphi] В матрице обнулить все элементы, расположенные после максимального в каждом столбце Volodyajke Помощь студентам 5 17.11.2011 23:52
Замена максимального элемента минимальным и наоборот в динамическом двумерном массиве dreik92 Microsoft Office Excel 2 13.04.2011 12:04
Из текста удалить все цифры, стоящие перед первой буквой Aleksandr15 Помощь студентам 4 30.03.2011 11:32
Задачка про массив - Из массива удалить четные элементы, стоящие после максимального Crookers Общие вопросы C/C++ 4 23.09.2008 19:35