Студопедия

КАТЕГОРИИ:


Архитектура-(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) описание двумерного массива.


Литература

  1. Васильев П.П. Турбо Паскаль в примерах и задачах./ П.П. Васильев – М.: Финансы и статистика. 2006. – 236с.
  2. Гмурман В.Е. Теория вероятностей и математическая статистика./ В.Е. Гмурман – М.: Высш.шк. 2005. – 479с.
  3. Гмурман В.Е. Руководство к решению задач по теории вероятностей и математической статистике./ В.Е. Гмурман – М.: Высш.шк. 2005. – 400 с.
  4. Ильин В.А.Математический анализ. /Классический университетский учебник. Часть 1. Ильин В.А, Садовничий В.А., Сендов Бл. Х. – М.: ТК Велби. 2004. – 400с.
  5. Культин Н.Б.Программирование в среде Turbo Pascal 7.0. / Н.Б. Культин – BHV – Санкт – Петербург. 2003г. – 234с.
  6. Марченко А.И. Программирование в среде Turbo Pascal 7.0./ А.И. Марченко – М.: Бином универсал. 2004г. – 506с.
  7. Сачков В.Н. Введение в комбинаторные методы дискретной математики./ В.Н. Сачков – М.: МЦНМО. 2004. – 424с.
  8. Стойлова Л.П. Математика: учебник для вузов./ Л.П. Стойлова – М.: Издательский центр «Академия», 2002. – 424с.
  9. Турецкий В.Я. Математика и информатика./ В.Я. Турецкий –3- изд. – М.: ИНФРА – М. 2000. – 560с. – (Серия «Высшее образование»)
  10. Фаронов В.В. Основы Турбо-Паскаля. / В.В. Фаронов; МВТУ – М.: ОМД Группа. 2005.
  11. Фаронов В.В.Практика программирования в среде Turbo Pascal 7.0. / В.В. Фаронов; МВТУ – М.: ОМД Группа. 2004.
  12. Фаронов В.В. Турбо-Паскаль 7.0 Начальный курс. / В.В. Фаронов – М.: ОМД Группа. 2005, 2002. – 132 с.
  13. Теория вероятностей. Математическая статистика: учебное пособие/ Л.И Лазарева [и др.].– Томск: Изд. ТПУ. 2002. – 132 с.




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 686; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.037 сек.