21.10.2012, 10:49 | #1 (permalink) |
Новичок
Регистрация: 21.10.2012
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Дан массив размера N
кто-нибудь может помочь? |
21.10.2012, 10:49 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Вы не один, кто обращался за помощью с такой проблемой У кого какого размера HDD Изменения размера фотографий |
21.10.2012, 11:12 | #3 (permalink) | |
Новичок
Регистрация: 21.10.2012
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
вот var a: array [1..100] of integer; i, j, k: integer; n: integer; begin randomize; writeln('Введите N: '); readln(n); for i := 1 to n do a[i] := random(101) - 25; writeln('Исходный массив: '); for i := 1 to n do write(a[i], ' '); writeln; for i := 2 to n - 1 do if ((a[i] > a[i + 1]) and ((a[i] > a[i - 1]))) or ((a[i] < a[i + 1]) and ((a[i] < a[i - 1]))) then inc(k) else inc(j); writeln('Полученное количество: '); if j > 0 then writeln(j) else writeln(0); end. |
|
21.10.2012, 15:00 | #4 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
По выложенной программе. Написана в целом правильно и грамотно, но, увы, решает она совсем другую задачу, а именно, определяет количество локальных максимумов и минимумов в массиве, а Вам нужно найти максимальный элемент, НЕ являющийся таковым экстремумом. Решение этой задачи дано ниже, и вот несколько пояснений: 1. Прошу извинить за английский язык: возня с кириллицей для меня - заморочки. Если надо, исправьте. 2. Перестановка действий в строке, задающей элементы массива, связана с тем, что некоторые (не моя!) версии Паскаля не могут справится с ситуацией, когда из беззнакового целого вычитается бОльшая величина. Они приписывают ожидаемому результату тоже беззнаковый целый формат, а, получив отрицательное число, начинают верещать об ошибке. Сталкивался с таким. Такая вот тонкость. 3. Выводить элементы массива лучше с указанием формата, тогда, если там несколько строк, то они всегда расположатся один под другим. Просто красивее. 4. Начальное значение искомого максимума (max) задается любым, МЕНЬШИМ минимального значения элементов массива (у Вас это -25), числом. Вместо -80 можно взять -40, -1046, -513 и т.п. 5. Если Ваш Паскаль не проглотит конструкцию вида not(bla-bla-bla), то замените ее на (not bla-bla-bla), где bla-bla-bla - какое-то булевское выражение. Тоже бывают закидоны разных версий Паскаля. 6. В конце программы, предполагающей вывод результата на экран, очень желательно поставить оператор readln без параметров. Тогда, дойдя до него, программа остановится и позволит полученный результат рассмотреть до нажатия клавиши "Enter". А иначе просто моргнет да и вылетит в Турбо-среду или папку, откуда Вы ее запускали. Ну, вроде, всё. Код:
var a: array [1..100] of integer; i,max,N: integer; begin randomize; write('N (<=100)= '); readln(N); for i:= 1 to n do a[i]:=-25+random(101); writeln('Initial array: '); for i:=1 to N do write(a[i]:4); writeln; max:=-80; for i:=2 to N-1 do if (a[i]>max) and not((a[i]>a[i+1]) and (a[i]>a[i-1])) and not((a[i]<a[i+1]) and (a[i]<a[i-1])) then max:=a[i]; writeln('Result: '); if max=-80 then writeln('No such elements') else writeln('Max= ',max); readln end. |
|
25.10.2012, 18:18 | #5 (permalink) |
Новичок
Регистрация: 21.10.2012
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
спасибо большое, Владимир! uses crt; const size = 10; Var El, MaxEl, iMax, jMax, i, j : integer; lMax, lMin, mtr : Array[1..size,1..size] of integer; Begin ClrScr; Randomize; {формируем матрицу случайным образом} For i:=1 to size do For j:=1 to size do begin mtr[i,j]:=100+ random(300); lMax[i,j]:=0; lMin[i,j]:=0; end; {сначала найдем все локальные минимумы и максимумы} For i:=1 to size do For j:=1 to size do begin El:=mtr[i,j]; If i=1 then {верхняя строка} begin If j=1 then begin If (El<mtr[i ,j+1]) and (El<mtr[i+1,j+1]) and (El<mtr[i+1,j ]) then lMin[i,j]:=1; {пометим локальный минимум} If (El>mtr[i ,j+1]) and (El>mtr[i+1,j+1]) and (El>mtr[i+1,j ]) then lMax[i,j]:=1; {пометим локальный максимум} end Else If j=size then begin If (El<mtr[i ,j-1]) and (El<mtr[i+1,j-1]) and (El<mtr[i+1,j ]) then lMin[i,j]:=1; If (El>mtr[i ,j-1]) and (El>mtr[i+1,j-1]) and (El>mtr[i+1,j ]) then lMax[i,j]:=1; end Else {неугловые элементы верхней строки} begin If (El<mtr[i ,j-1]) and (El<mtr[i+1,j-1]) and (El<mtr[i+1,j ]) and (El<mtr[i+1,j+1]) and (El<mtr[i ,j+1]) then lMin[i,j]:=1; If (El>mtr[i ,j-1]) and (El>mtr[i+1,j-1]) and (El>mtr[i+1,j ]) and (El>mtr[i+1,j+1]) and (El>mtr[i ,j+1]) then lMax[i,j]:=1; end end {========================} Else If i=size then {нижняя строка} begin If j=1 then begin If (El<mtr[i-1,j ]) and (El<mtr[i-1,j+1]) and (El<mtr[i ,j+1]) then lMin[i,j]:=1; If (El>mtr[i-1,j ]) and (El>mtr[i-1,j+1]) and (El>mtr[i ,j+1]) then lMax[i,j]:=1; end Else If j=size then begin If (El<mtr[i ,j-1]) and (El<mtr[i-1,j-1]) and (El<mtr[i-1,j ]) then lMin[i,j]:=1; If (El>mtr[i ,j-1]) and (El>mtr[i-1,j-1]) and (El>mtr[i-1,j ]) then lMax[i,j]:=1; end Else {неугловые элементы нижней строки} begin If (El<mtr[i ,j-1]) and (El<mtr[i-1,j-1]) and (El<mtr[i-1,j ]) and (El<mtr[i-1,j+1]) and (El<mtr[i ,j+1]) then lMin[i,j]:=1; If (El>mtr[i ,j-1]) and (El>mtr[i-1,j-1]) and (El>mtr[i-1,j ]) and (El>mtr[i-1,j+1]) and (El>mtr[i ,j+1]) then lMax[i,j]:=1; end end Else If j=1 then {левый столбец} begin If (El<mtr[i-1,j ]) and (El<mtr[i-1,j+1]) and (El<mtr[i ,j+1]) and (El<mtr[i+1,j+1]) and (El<mtr[i+1,j ]) then lMin[i,j]:=1; If (El>mtr[i-1,j ]) and (El>mtr[i-1,j+1]) and (El>mtr[i ,j+1]) and (El>mtr[i+1,j+1]) and (El>mtr[i+1,j ]) then lMax[i,j]:=1; end Else If j=size then {правый столбец} begin If (El<mtr[i-1,j ]) and (El<mtr[i-1,j-1]) and (El<mtr[i ,j-1]) and (El<mtr[i+1,j-1]) and (El<mtr[i+1,j ]) then lMin[i,j]:=1; If (El>mtr[i-1,j ]) and (El>mtr[i-1,j-1]) and (El>mtr[i ,j-1]) and (El>mtr[i+1,j-1]) and (El>mtr[i+1,j ]) then lMax[i,j]:=1; end Else begin If (El<mtr[i-1,j ]) and {1} (El<mtr[i-1,j-1]) and {2} (El<mtr[i ,j-1]) and {3} (El<mtr[i+1,j-1]) and {4} (El<mtr[i+1,j ]) and {5} (El<mtr[i+1,j+1]) and {6} (El<mtr[i ,j+1]) and {7} (El<mtr[i-1,j+1]) {8} then lMin[i,j]:=1; If (El>mtr[i-1,j ]) and {1} (El>mtr[i-1,j-1]) and {2} (El>mtr[i ,j-1]) and {3} (El>mtr[i+1,j-1]) and {4} (El>mtr[i+1,j ]) and {5} (El>mtr[i+1,j+1]) and {6} (El>mtr[i ,j+1]) and {7} (El>mtr[i-1,j+1]) {8} then lMax[i,j]:=1; end; end; {ищем максимальный элемент, не являющийся ни локальным максимумом, ни локальным минимумом} MaxEl:=-32768; iMax:=0; jMax:=0; For i:=1 to size do For j:=1 to size do If (lMax[i,j]=0) and (lMin[i,j]=0) then If MaxEl<mtr[i,j] then begin MaxEl:=mtr[i,j]; iMax:=i; jMax:=j; end; {выводим результат на экран} For i:=1 to size do Begin For j:=1 to size do begin If lMax[i,j]=1 then TextColor(Red) {красные - локальные максимумы} Else If lMin[i,j]=1 then TextColor(Blue) {синие - локальные минимумы} Else If MaxEl=mtr[i,j] then TextColor(Green) {зеленый - искомый максимум} Else TextColor(DarkGray); Write(mtr[i,j]:4); end; WriteLn; end; ReadLn; End. вот такой вариант еще предлагали, получается он не верен? |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
25.10.2012, 21:38 | #8 (permalink) |
Новичок
Регистрация: 21.10.2012
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
массив одномерный, еще нужно упорядочить положительные элементы второй половины массива по убыванию модулей обратных значений?это совсем меня запутало(
|
26.10.2012, 10:06 | #9 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Тогда выложенный в #5 листинг к задаче отношения не имеет: там идет обработка матрицы, а не вектора.
Цитата:
|
|
26.10.2012, 10:53 | #10 (permalink) |
Новичок
Регистрация: 21.10.2012
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Дан массив размера N.
Найти максимальный из его элементов, не являющихся ни локальным максимумом, ни локальным минимумом(локальный минимум-это элемент, который меньше любого из своих соседей).Если таких элементов в массиве нет, вывести об этом сообщение. упорядочить положительные элементы второй половины массива по убыванию модулей обратных значений. для отладки программы числа последовательности сформировать с помощью генератора случайных чисел. вот это оригинал задания.Извините, что сразу не выложила его( |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|