Материалы сайта
Это интересно
Вычислительная практика I курс
Смаль Дмитрий, АС-14 Работа №1(2). Тема: “Работа с массивами.” 1. Постановка задачи: Дана квадратная матрица действительных чисел размерности n (n<=16). Найти наибольшее из значений в заштрихованной части матрицы. 2. Тестовые примеры: 1) Пусть квадратная матрица состоит из элементов: 1 2 3 4 5 6 7 8 9 15 1 2 3 4 5 7 8 9 1 3 5 2 3 7 55 Тогда максимальный элемент в заштрихованной части матрицы будет 15. 2) Пусть квадратная матрица состоит из элементов: 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 25 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 Тогда максимальный элемент в заштрихованной части матрицы будет 25. 3) Пусть квадратная матрица состоит из элементов: 7 1 7 8 32 4 5 15 21 3 3 18 7 6 5 3 Тогда максимальный элемент в заштрихованной части матрицы будет 18. 4) Пусть n=2, Введите другое n, т. к. пропадает смысл заштрихованной области матрицы 3. Схема алгоритма: (см. Приложение №1.) 4. Распечатка текста программы: Program Rabota1_1; Uses crt; Var M: Array [1..16,1..16] of INTEGER; i, j, n: BYTE; Max: INTEGER; Begin clrscr; Writeln('Введите размерность матрицы :'); Read(n); If (n<3) or (n>16) then Writeln(‘Введите другое n’); Else begin Write(‘Введите элементы матрицы’); For i:=1 to n do For j:=1 to n do Read (m[i , j]); Max:=m[1,1]; For i:=n downto n+1-i do For j:=n downto(n div 2)+1 do If Max16) Нет Для i от 1 до n Для j от 1 до n Ввод элементов матрицы i Значение Max элемента Для i от n-1 до 2 Для j от n до Цикл для j от n до (n деленного нацело)+2 (n div 2 ) + 2 Нет Max < m[i,j] Да j i 5. Результаты тестирования: 1) Введите размерность матрицы : 5 Введите элементы матрицы: 1 2 3 4 5 6 7 8 9 15 1 2 3 4 5 7 8 9 1 3 5 2 3 7 55 Максимальный элемент в заштрихованной части матрицы 15 2) Введите размерность матрицы : 6 Введите элементы матрицы: 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 25 1 2 3 4 5 6 7 8 91 2 3 4 5 6 7 8 9 Максимальный элемент в заштрихованной части матрицы 25 3) Введите размерность матрицы : 4 Введите элементы матрицы: 7 1 7 8 32 4 5 15 21 3 3 18 7 6 5 3 Максимальный элемент в заштрихованной части матрицы 15 4) Введите размерность матрицы: 2 Введите другое n Работа №1(1). 1. Постановка задачи: Дана последовательность a1,..,a n действительных чисел . Выделить из неё знакопостоянную последовательность наибольшей длины. 2. Тестовые примеры: 1) Пусть дана последовательность : 1 2 3 4 5 6 -9 -8 –4 –3 Тогда знакопостоянная последовательность наибольшей длины будет такова: 1 2 3 4 5 6 2) Пусть дана последовательность : 1 –5 1 –4 2 –7 3 Тогда знакопостоянной последовательности наибольшей длины в ней не будет 3) Пусть дана последовательность : -3 –6 –8 – 7 –7 –5 4 5 6 Тогда знакопостаянная последовательность наибольшей длины будет такова: -3 –6 –8 – 7 –7 –5 4) Если длина последовательности равна –5, то такой послед. не существует. 3. Схема алгоритма (см. Приложение №2) 4. Распечатка текста программы: Program Posledovatelnosti; Uses crt; Var a:Array[1..100] of REAL; v,w:ARRAY[1..100] of INTEGER; n,i,c,l,b,s,m,k,d:Integer; Begin Clrscr; Writeln('Введите n:');Readln(n); If (n<=0) or (n>100) then Writeln('Введите другое n') Else begin Writeln('Введите элементы линейной матрицы:'); For i:=1 to n do Read(a[i]); Writeln; c:=0;i:=1; While i<=n do begin k:=i; While (a[i]>0) and (i<=n) do begin i:=i+1; end; d:=i-k; l:=i; While (a[i]<0) and (i<=n) do begin i:=i+1; end; b:=i-l; If d<>0 then begin c:=c+1; v[c]:=k; w[c]:=d; end; If b<>0 then begin c:=c+1; v[c]:=l; w[c]:=b; end; end; s:=w[1];m:=v[1]; For i:=2 to c do begin If w[i]>s then begin m:=v[i]; s:=w[i]; end; end; If s<>1 Then begin For i:=m to m+s-1 do Write(a[i]:5:3,' '); end else writeln('Такой последовательности нет') end; End. 5. Результаты тестирования : 1) Введите n 10 Введите элементы последовательности : 1 2 3 4 5 6 –9 –8 –4 -3 Последовательность : 1 2 3 4 5 6 2) Введите n 7 Введите элементы последовательности : 1 –5 1 –4 2 –7 3 Такой последовательности нет 3) Введите n 9 Введите элементы последовательности : -3 –6 –8 –7 –7 –5 4 5 6 Последовательность: -3 –6 –8 –7 –7 –5 4) Введите n -5 Введите другое n Приложение №2: Длина последовательности Да Нет Для i от 1 до n i ДА НЕТ ДА НЕТ ДА НЕТ ДА ДА Для i от 2 до c НЕТ ДА i НЕТ ДА Для i от m до m+s-1 Вывод i-ого элемента подпоследовательности i ----------------------- начало Ввод n Введите другое n Max:=m[1,1] Ввод i , j-ого эл. матрицы m[i,j] Max А Конец v [ c ] : =k НАЧАЛО Ввод n (n<0) или (n>100) Ввод i-ого эл. Последов.a[ i ] c=0 i=1 i<=n b<>0 c ; =c +1 d<>0 b : = i - l A A i : = i + 1 a [ i ]<0 и i<=n d : = i – k l : = i i : = i +1 a[ i ]>0 и i<=n k ; = i A Max:=m[ i , j ] “Введите другое n” B w [ c ] : =b C : = C+1 v [ c ] : = l w [ c ] : = b B B D D s : = w[ 1 ] m : = v [ 1 ] w [ i ]>s m : = v [ i ] s : = w [ i ] s <>1 A “Такой послед. нет” A a [ i ] КОНЕЦ