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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2011, 22:41   #1
dimokin777
Пользователь
 
Регистрация: 08.11.2011
Сообщений: 18
По умолчанию (PAS)Одномерные массивы.Получить последовательность min(max...

Не пойму как оно вообще.. Помогите , пожалуйста.
Изображения
Тип файла: jpg 2011-11-08_203934.jpg (28.5 Кб, 82 просмотров)

Последний раз редактировалось dimokin777; 08.11.2011 в 22:43.
dimokin777 вне форума Ответить с цитированием
Старый 09.11.2011, 01:14   #2
Vladilen
 
Регистрация: 03.09.2010
Сообщений: 8
По умолчанию

Ну я понял это так.
Вводишь целое число K
Вводишь целое число N
Заполняешь массив от 1 до K*N вещественными числами.
Потом находишь максимальное число на 3х указанных отрезках массива.
У тебя получается 3 числа. Вот среди эти трех чисел тебе и нужно найти минимальное.
Vladilen вне форума Ответить с цитированием
Старый 09.11.2011, 08:41   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Потом находишь максимальное число на 3х указанных отрезках массива.
нет! поправочка!
не на 3-х, а на N участках. причём в каждом участке ровно K элементов.

на абстрактном примере это будет выглядеть так:
пусть k=3 пусть N равно 5
тогда получается, что в массиве k*n = 15 элементов.
пусть это будет:
1 7 2 5 1 3 4 5 6 9 2 1 11 8 19
разбиваем массив на 5 участков по 3 элемента в участке и находим для каждого MAX
Max(1, 7, 2 ) = 7
Max(5, 1, 3 ) = 5
Max = 6
Max = 9
Max( 11, 8, 19) = 19
из полученных значений находим MIN( 7, 5, 6, 9, 19) = 5
Это и есть ответ в задаче.

решается задача простыми вложенными циклами...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.11.2011, 08:48   #4
Vladilen
 
Регистрация: 03.09.2010
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
нет! поправочка!
не на 3-х, а на N участках. причём в каждом участке ровно K элементов.
Да вы правы. Ночью не заметил этого. На первый взгляд зависимости не увидел.
Vladilen вне форума Ответить с цитированием
Старый 09.11.2011, 19:00   #5
dimokin777
Пользователь
 
Регистрация: 08.11.2011
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
разбиваем массив на 5 участков по 3 элемента в участке и находим для каждого MAX
[/I]
а почему 5 участков ? ведь в задании :
1 уч. a[1]..a[k]
2 a[k+1]..a[2k]
3 a[k(n-1)+1]..a[kn]
dimokin777 вне форума Ответить с цитированием
Старый 09.11.2011, 19:18   #6
dimokin777
Пользователь
 
Регистрация: 08.11.2011
Сообщений: 18
По умолчанию

У меня получилось так

Код:
CONST  N=5;K=3;
TYPE MAS=ARRAY[1..N*K] OF REAL;
VAR A:MAS;I,D,M:INTEGER; MAX1,MAX2,MAX3,MIN:REAL;
BEGIN
  WRITELN(' УВЕДІТЬ ',N*K,' ЧИСЕЛ');
  FOR I:=1 TO N*K DO READ(A[I]);
  WRITELN(' ':5, 'ВИХІДНИЙ МАСИВ');
  FOR I:=1 TO N*K DO WRITE(A[I]:3);
  
  {ФОРМУВАННЯ}

  WRITELN;
  MAX1:=-MAXINT;
  FOR I:=1 TO K DO
  IF A[I]>MAX1 THEN MAX1:=A[I];
  

  MAX2:=-MAXINT;
  FOR I:=K+1 TO 2*K DO
  IF A[I]>MAX2 THEN MAX2:=A[I];

  MAX3:=-MAXINT;
  FOR I:=K*(N-1)+1 TO K*N DO
  IF A[I]>MAX3 THEN MAX3:=A[I];
  
  MIN:=MAXINT;
  FOR I:=1 TO K*N DO
  BEGIN
  IF MAX1<MIN THEN MIN:=MAX1;
  IF MAX2<MAX1 THEN MIN:=MAX2;
  IF MAX3<MAX2 THEN MIN:=MAX3;
  END;
WRITELN('MIN= ',MIN);
END.
Но ведь в задании указано "Получите последовательность"...

Последний раз редактировалось dimokin777; 09.11.2011 в 19:21.
dimokin777 вне форума Ответить с цитированием
Старый 09.11.2011, 20:28   #7
dimokin777
Пользователь
 
Регистрация: 08.11.2011
Сообщений: 18
По умолчанию

Или если с последовательностью

Код:
CONST  N=5;K=3;
TYPE MAS=ARRAY[1..N*K] OF REAL;
VAR A,B:MAS;I,D,M:INTEGER; MAX1,MAX2,MAX3,MIN:REAL;
BEGIN
  WRITELN(' УВЕДІТЬ ',N*K,' ЧИСЕЛ');
  FOR I:=1 TO N*K DO READ(A[I]);
  WRITELN('ВИХІДНИЙ МАСИВ');
  FOR I:=1 TO N*K DO WRITE(A[I]:3);
  
  {ФОРМУВАННЯ}

  WRITELN;
  MAX1:=-MAXINT;
  FOR I:=1 TO K DO
  IF A[I]>MAX1 THEN MAX1:=A[I];
  

  MAX2:=-MAXINT;
  FOR I:=K+1 TO 2*K DO
  IF A[I]>MAX2 THEN MAX2:=A[I];

  MAX3:=-MAXINT;
  FOR I:=K*(N-1)+1 TO K*N DO
  IF A[I]>MAX3 THEN MAX3:=A[I];
  
  MIN:=MAXINT;
  FOR I:=1 TO K*N DO
  BEGIN
  IF MAX1<MIN THEN MIN:=MAX1;
  IF MAX2<MAX1 THEN MIN:=MAX2;
  IF MAX3<MAX2 THEN MIN:=MAX3;
  END;
WRITELN('MIN= ',MIN);

  b[1]:=min;
  b[2]:=max1;
  b[3]:=max2;
  b[4]:=max3;
  WRITE('Последовательность : ');
  for i:=1 to 4 do
  write(b[i]:4);
  

END.
dimokin777 вне форума Ответить с цитированием
Старый 09.11.2011, 22:14   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
а почему 5 участков ? ведь в задании :
1 уч. a[1]..a[k]
2 a[k+1]..a[2k]
3 a[k(n-1)+1]..a[kn]
Вы неправы. И как только попытаетесь расписать
для ваших CONST N=5;K=3;
участки a[1]..a[k], a[k+1]..a[2k] ...????? ...a[k(n-1)+1]..a[kn]
в виде {A1 A2 A3} и т.д.
и легко в этом убедитесь.
Ну и, соответственно, решение тоже неверное...


Цитата:
Но ведь в задании указано "Получите последовательность"...
вот тут, Вы в точку подметили. Я давно уже привык больше верить математическим формулам, чем сопуствующим словам, поэтому даже не заметил этого...
Думаю, что это у автором задачи не совсем получилось сформулировать, хотели сказать: "получить минимальное значение для последовательности ... " или что-то вроде того..
но MIN(....) - это не последовательность. Это ОДНО значение...

Последний раз редактировалось Serge_Bliznykov; 09.11.2011 в 22:20.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.11.2011, 22:22   #9
dimokin777
Пользователь
 
Регистрация: 08.11.2011
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Вы неправы. И как только попытаетесь расписать
для ваших CONST N=5;K=3;
участки a[1]..a[k], a[k+1]..a[2k] ...????? ...a[k(n-1)+1]..a[kn]
легко в этом убедитесь.
Вот это мне непонятно , почему 5 участков , если в условии четко задано
max(A1..Ak)
max(A(k+1)..A2k)
max(Ak(n-1)+1..Akn)
dimokin777 вне форума Ответить с цитированием
Старый 09.11.2011, 23:34   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Вот это мне непонятно , почему 5 участков , если в условии четко задано
max(A1..Ak)
max(A(k+1)..A2k)
max(Ak(n-1)+1..Akn)
Ну поверьте мне. Именно N фрагментов!

ну пропустили в типографии такую "мелочь" как запятая и три точки..
должно было быть:
max(A1..Ak)
max(A(k+1)..A2k), ... max(Ak(n-1)+1..Akn)

А если бы вы расписали 15 элементов так, как я Вам сказали, то сами увидели, что в вашем случае часть элементов выпадает из ряда..
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на min и max KREGI Помощь студентам 14 14.01.2016 14:35
max и min Кристинка89 Общие вопросы C/C++ 2 23.02.2011 15:24
Матрица Min-Max и Max-Min boog Помощь студентам 3 23.12.2010 13:19
min max Alpha_Dog Фриланс 10 15.03.2010 19:27
m=min(max{aij}) Массивы на C++ Wia Помощь студентам 2 22.12.2008 19:23