КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Операции с массивами
Ввод и вывод элементов массивов Ввод и вывод массивов осуществляется поэлементно. Часто это делают с помощью циклов (обычно используется цикл FOR). Пример 21. Ввести с клавиатуры значения элементов одномерного массива вещественного типа состоящего из 10 элементов. Вывести на экран массив. Написать программу. program PR22; var A: array[1..10] of real; k: integer; begin for k:=1 to 10 do readln (A[k]); for k:=1 to 10 do writeln (A[k]); end. Двумерные массивы (матрицы) можно вводить по строкам или по столбцам. Пример 22. Пусть требуется ввести массив А (3;4): 2-й столбец а) ввод и вывод по строкам: program PR22; var a:array [1..3, 1..4] of real; i,j:integer; begin for i:=1 то 3 for j:=1 то 4 read (a[i,j]); for i:=1 то 3 for j:=1 то 4 writeln (a[i,j]); end. б) ввод по столбцам begin for i:=1 то 4 for j:=1 то 3 read (а[j,i]); {изменён порядок индексов} Пусть, например, требуется ввести матрицу 1 2 3 4 5 6 7 8 В варианте а) вводим числа в порядке 1,2,3,4,5,6,7,8 (после набора каждого числа нажимаем ENTER, запятые не вводятся) В варианте б) вводим числа так: 1,5,2,6,3,7,4,8. Если этот порядок нарушить, то получатся разные матрицы, что в математических задачах приведет к ошибкам. В Паскале есть лишь одна операция, которую можно делать с массивом целиком – это операция присваивания. Но для этого массивы должны быть совершенно одинаковы, то есть описаны в одной строке VAR или TYPE. Все остальные операции производятся только с отдельными элементами массива. С элементами массива можно делать все операции, которые разрешены для базового типа массива: если массив числовой, то математические, если символьный или строковый, то, соответственно, операции с символьными или строковыми переменными. Пример 23. Требуется найти максимальный и минимальный элементы одномерного массива вещественного типа. Алгоритм поиска минимума: вводим переменную MIN, в которую записываем 1-ый элемент массива. Затем в цикле сравниваем каждый последующий элемент с MIN. Если число, хранящееся в текущем элементе, меньше хранящегося в MIN, то число из текущего элемента записываем в MIN. Аналогичен алгоритм поиска максимума, только вместо «меньше» ставим «больше». Написать программу. program PR23; var z: array[1..100] of real; n,k: integer; max, min: real; Begin Writeln(‘ввести количество элементов массива n’); readln (n); for k:=1 to n do readln (z[k]); max:=z[1];min:=z[1]; for k:=1 to n do if z[k]>max then max:=z[k] else if z[k]<min then min:=z[k]; writeln(’max=’, max:8:3, ’ min=’, min:8:3); end. Пример 24. Для двумерного массива состоящего из N строк и N столбцов: а) найти сумму элементов M-столбца; б) найти произведение элементов K-строки. Значения К и M вводить с клавиатуры program PR24; type mas=array[ 1.. 10, 1..10] of integer; var a:mas; s, p, i, j, n, k, m:integer; begin writeln(’ввести количество строк и столбцов n’); readln(n); for i:= l to n do for j:= l to n do begin writeln(’ввести элемент массива a[’,i,’, ’,j,’]= ’); read (a[i, j]); {ввод элемента массива} writeln(a[i, j]); {вывод элемента массива} end; writeln (’ввести номер строки-k и столбца-m’); read (k, m); s:=0; p:=1; for i:=1 to n do s:=s+a[i, m]; {сумма элементов столбца m} for j:=1 to N do p:=p*a[k, j]; { произведение элементов строки k} writeln(’s=’,s, ’p=’,p)); end. При выполнении операций с фиксированной строкой первый индекс не меняется, при суммировании по столбцу второй индекс не меняется. Пример 25. Сформировать одномерный массив, каждый k-й элемент которого равен произведению элементов соответствующей k-й строки двумерного массива. program PR25; var A: array[1..10,1..10] of integer; B: array[1..10] of integer; N, M, k, j: integer; begin writeln(’введите количество строк N, столбцов M’); readln (N,M); for k:=1 to N do for j:=1 to M do begin writeln(’ввести элемент массива A[‘, k, ‘,’, j,’ ]’); readln (A[k,j]); end; for k:=l to N do begin В[k]:=1; for j:=1 to M do В[k]:=В[k]*A[k,j]; end; for k:=l to N do write(B[k]); end. Пояснение к программе: После ввода массива в следующем цикле накапливается произведение элементов каждой строки во внутреннем цикле оператором: B[k]:=B[k]*A[k,j];. Но перед этим необходимо во внешнем цикле задать начальное значение элемента нового массива оператором B[k]:=1;. 9.10. Вопросы для самоконтроля по теме «Программирование» 1. Укажите правильно записанный оператор присваивания на Паскале: a) z:= cos(x) + ln(y); b) cos(x): = z+ ln(y); c) z =cos(x)+log(y); d) a+b:=c+d. 2. Укажите правильно записанный оператор присваивания на Паскале: a) x+z:= sin(x)+ln(y); b) z+ ln(y):=w; c) w:=sin(x)+sqr(g); d) v-b:=w*d. 3. Укажите правильно записанный оператор присваивания на Паскале: a) v:=e^x+tg(z); b) v:=exp(x)+sin(x)/cos(x); c) v:=exp(x)+sin/cos(x); d) m/b+s:=w*d- ln(y). 4. Укажите правильно записанный оператор ввода: a) WRITE ('Введите Х', X); b) WRITE (X); c) READ (X); d) REAL(X). 5. Вывести на экран число, хранящееся в переменной Х: a) READ (X); b) WRITE (X); c) READ ('Выведите Х=', X); d) REAL(X). 6. Дана функция r=tg x-lnay; которая записана на Паскале. Выбрать строку без ошибок: a) r:=tg(x) –ln(y)/a; b) r:=tan(x) –ln(y)/ln(a); c) r:=sin(x)/cos(x) - ln(y)/ln(a); d) r:= cos(x)/sin(x) - ln(a)/ln(y). 7. В строке представлено: В: ARRAY[1..5,1..5] OF INTEGER; a) ввод массива; b) вывод массива; c) описание одномерного массива; d) описание двумерного массива. 8. Дана функция f=ctg a + ln x; которая записана на Паскале. Выбрать строку без ошибок: a) f:=ctg(a) +ln(x); b) f:=sin(a)/cos(a) + log(x); c) f:=ctg(a)+lg(x); d) f:=cos(a)/sin(a) +ln(x). 9. Выбрать строку, в которой допущена ошибка: a) c:= z mod x +a*f; b) c:=arctan(b) - abs(r); c) c:=sqr(b) + exp(-a*b); d) c:= log(x) +cos(a)/d. 10. Выбрать строку, в которой допущена ошибка: a) q:=tan(x) - ln(c)*z; b) q:=exp(y)+sqr(a)/z; c) q:=arctan(f) +sqrt(h); d) q:=int(K) +round(m). 11. Дана функция r=tg x + ln x, которая записана на Паскале. Выбрать строку без ошибок: a) r:=tg(a) +ln(x); b) r:=sin(a)/cos(a) + ln(x); c) r:=tan(a)+lg(x); d) r:=cos(a)/sin(a) +ln(x). 12. В строке программы на Паскале IF X<0 THEN Y:=sqr(X) ELSE Y:=sqrt(X) рассматривается оператор: a) простой короткий условный; b) простой полный условный; c) составной условный; d) присваивания. 13. В строке программы на Паскале IF X>0 THEN Y:=LN(X); рассматривается оператор: a) простой короткий условный; b) простой полный условный; c) составной; d) присваивания. 14. Выбрать правильно записанный оператор условия: если x<0, тогда y=cos(x):, иначе y=x, x>=0: a) IF X< 0 THEN Y:=cos(X) ELSE Y:=X; b) IF X<0 THEN Y:=cos(X) ELSE X; c) IF Y≤X<0 THEN Y:=X; d) IF X>0 THEN Y=X ELSE cos(X). 15. Дан оператор на Паскале: FOR k:=3 TO m DO S:=S+k;. Для выполнения цикла значение m должно быть: a) m<k; b) m=s; c) m>=k; d) m<=k. 16. Дан оператор на Паскале: FOR k:=1 TO m DO S:=S+k;. Всего циклов будет выполнено: a) k; b) s; c) m; d) 1. 17. Дан оператор на Паскале: FOR k:=1 TO m DO s:=s+k;. Выберите условие выхода из цикла: a) k = 1; b)k = m; c) k ³ m; d) k >m. 18. Строка на Паскале: while k <=m do; относится к операторам: a) условия; b) цикла; c) вывода; d) ввода. 19. В строке представлено: В: ARRAY[1..7] OF INTEGER; a) ввод массива; b) вывод массива; c) описание одномерного массива; d) описание двумерного массива. Литература
Дата добавления: 2014-12-27; Просмотров: 718; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |