Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Основные теоретические сведения. Приступая к решению задач этого раздела, следует вспомнить, что:




Приступая к решению задач этого раздела, следует вспомнить, что:

- массив — это структура данных, представляющая собой совокупность элементов одного типа;

- массив должен быть объявлен в разделе объявления переменных;

- доступ к элементу массива осуществляется путем указания индекса (номера) элемента, в качестве которого можно использовать выражение целого типа, например, целую константу или переменную типа integer;

- сделав объявление x: array[1..5] of integer: мы получим 5 переменных с именами x[1], x[2], x[3], x[4], x[5] типа integer.

Примеры решения задач

Задача 1. Найти сумму элементов массива x[5].

Решение задачи:

Решение 1: перебор всех элементов в ручную. Program Summa; var x:array[1..5] of real; s:real; begin Writeln(' Введите элементы массива x '); Read(x[1], x[2], x[3], x[4], x[5]); { в память машины} S:= x[1]+ x[2]+ x[3]+ x[4]+ x[5]; write('S= ', s); Readln; end.   Решение 2: использование циклов. Целесообразно в случае массива большой размерности. Program Summa; var x:array[1..5] of real; s:real; i: integer; begin Writeln(' Введите элементы массива x '); for i:=1 to 5 do Read(x[i]); S:=0; for i:=1 to 6 do S:= S+ x[i]; write('S= ', s); Readln; end.  

 

Задача 2. Умножить элементы с четными индексами на число Z.

Система тестов:

Значение массива x Значение z Результаты
  1,2,3,4,5,6   1,4,3,8,5,12
  -1,-2,-3,1,3,2   -1,0,-3,1,3,0

Решение задачи:

Program Chet_Index;

Const n=6;

var

x: array[1..n] of real;

i: integer;

z: real;

begin

Writeln(' Введите элементы массива x ');

for i:=1 to n do {Цикл для ввода элементов массива}

Read(x[i]); { в память машины}

Writeln(' Введите число z ');

Readln(z)

for i:=1 to n do

begin

if i mod 2=0 then

x[i]:= x[i]*z;

end;

for i:=1 to n do {Цикл для вывода элементов массива}

write(x[i], ' '); {на экран монитора}

Readln;

end.

Замечание: выделенные фрагменты кода присутствуют во всех программах, использующих одномерные массивы.

 

Задача 3. В массиве поменять местами наибольший и наименьший элементы массива.

Система тестов:

Значение массива x Результаты
  1,2,3,4,5,6 6,2,3,4,5,1
  -1,-2,-3,1,3,2 -1,-2,3,1,-3,2

Решение задачи:

Program change_max_min;

Const n=6;

var

x:array[1..N] of real;

i:integer;

max, min, Index_min, Index_max:real;

{ максимальное значение и минимальное и их номера}

begin

Writeln(' Введите элементы массива x ');

for i:=1 to n do

Read(x[i]);

max:=x[1];

min:=x[1];

Index_max:=1;

Index_min:=1;

for i:=2 to n do

begin

if x[i]> max then

begin

max:=x[i]; {запомнить элемент}

Index_max:=i; {и его номер}

end;

if x[i]< min then

begin

min:=x[i];

Index_min:=i;

end;

end;

x[Index_min]:=max;

x[Index_max]:=min;

for i:=1 to n do

write(x[i], ' ');

Readln;

end.

Задача 4. Определить, выполняется ли для всех элементов заданного массива m[k] условие m[n+1]=m[n]+1, где n=1,2,…k.

Система тестов:

Значение массива x Результаты
  1,2,3,4,5,6 Массив удовлетворяет условию.
  3,4,5,5,6,7 Массив не удовлетворяет условию.

Решение задачи:

Program Zadacha_N3;

var

x:array[1..6] of real;

i:integer;

Otvet boolean;

begin

Writeln(' Введите элементы массива x ');

for i:=1 to 6 do

Read(x[i]);

Otvet:=true;

i:=1;

repeat

if x[i+1]<>x[i]+1 then

Otvet:=false;

i:=i+1;

until (i=5) or (Otvet=false);

if otvet then

write('Массив удовлетворяет условию. ')

else

write('Массив не удовлетворяет условию. ')

Readln;

end.

 

Задания для самостоятельного выполнения

1. Подсчитать число и сумму положительных и число и произведение отрицательных элементов массива.

2. Написать программу, которая вычисляет среднее арифметическое ненулевых элементов введенного с клавиатуры массива целых чисел.

3. Написать программу, которая вычисляет, сколько раз введенное с клавиатуры число, встречается в массиве.

4. Написать программу, которая определяет количество учеников в классе, чей рост превышает средний.

5. Найти номер первого четного элемента массива из целых чисел.

6. Элементы массива X(n) переписать в массив Y(n) в обратном порядке.

7. Осуществить циклический сдвиг компонентов массива на одну позицию влево.

8. Дан массив из девяти чисел. Вывести его на экран в виде матрицы размером 3 X 3.

9. В заданном массиве определить число соседств:

а) двух положительных чисел;

б) двух чисел разного знака;

в) двух чисел одного знака, причем абсолютная величина первого из них должна быть больше второго.

10. В массиве подсчитать количество отрицательных элементов, предшесвующих максимальному элементу массива и заменить нулями все отрицательные элементы массива.

11. Написать программу, которая выводит минимальный элемент введенного с клавиатуры массива целых чисел.

12. Подсчитать количество элементов массива после последнего положительного элемента.

13. Написать программу, которая проверяет, есть ли во введенном с клавиатуры массиве элементы с одинаковым значением и выводит их на экран.

14. Проверить соблюдается ли для данного массива правило A[i]=A[i-1]+A[i-2]] где i=2,3,..n.

15. Сформировать массив по правилу:

A[i]=A[1]+A[2]+...+A[k] где k < i.


Лабораторная работа № 7. Многомерные массивы

Цель работы: Приобретение навыков обработки двумерных массивов.

 

 

Задачи:

¾ понять, что такое двумерный массив и как он задается;

¾ определить, в каких случаях целесообразно использовать одномерные массивы;

¾ научиться составлять алгоритмы и программы, использующие сложные циклы.

 

Порядок выполнения работы:

1. Перед выполнением работы, обязательно, прочитать конспект лекций по теме «Двумерные массивы».

2. Получить дополнительные теоретические знания из источников: [4: Тема 7.4 – 7.6], [7: Занятие 17, 18].

3. Реализовать на ЭВМ разобранные примеры.

4. Самостоятельно выполнить предложенные задачи.

 

Внимание: переходить к выполнению пунктов 3 и 4 только после тщательной проработки пунктов 1 и 2.

 

 

Примеры решения задач

Задача 1. Вычислить суммы элементов строк заданной матрицы x[n,m].

Система тестов:

Значение массива m Результаты
  1 2 3 2 3 4 2 2 2    
  3 0 -3 -2 -3 -4 0 0 0   -9

Решение задачи:

Program Summa_Columns_of_matrix;

Const

n=3; m=3;

var

x:array[1..n,1..m] of integer;

i, j, s: integer;

begin

Writeln('Введите элементы массива x[3X3] ');

for i:=1 to 3 do

for j:=1 to 3 do

read(x[i,j]);

s:=x[1,1]+ x[1,2]+ x[1,3]; writeln(S); s:=x[2,1]+ x[2,2]+ x[2,3]; writeln(S); s:=x[3,1]+ x[3,2]+ x[3,3]; writeln(S); readln; end.   S:=0; for j:=1 to m do s:=s+x[1,j]; writeln(S); S:=0; for j:=1 to m do s:=s+x[2,j]; writeln(S); S:=0; for j:=1 to m do s:=s+x[3,j]; writeln(S); readln; end.  

for i:=1 to n do

begin

s:=0;

for j:=1 to m do

s:=s+x[i,j];

writeln(S);

end;

readln;

end.

 

1-й выделенный фрагмент кода – объявление двумерного массива x из n строк и m столбцов.

2-й фрагмент – два вложенных цикла для заполнения матрицы числами, введенными с клавиатуры.

 

Задача 2. Возвести в квадрат элементы на диагоналях матрицы x[n,n].

Система тестов:

Значение массива x[n,n]. Результаты
  2 2 2 2 2 2 2 2 2   4 2 4 2 4 2 4 2 4  

Решение задачи:

Program Kvadrat_Diagonals;

const

n=3;

var

x:array[1..n,1..n] of integer;

i, j, centr: integer;

begin

Writeln(' Введите элементы массива x[3X3] ');

for i:=1 to n do

for j:=1 to n do

read(m[i,j]);

centr:=n div 2 + n mod 2; {номер центрального элемента}

x[1,1];=x[1,1]* x[1,1]; x[2,2];=x[2,2]* x[2,2]; x[3,3];=x[3,3]* x[3,3]; x[1,3];=x[1,3]* x[1,3]; x[3,1];=x[3,1]* x[3,1];   for i:=1 to n do x[i,i]:=x[i,i] * x[i,i];   for i:=1 to n do begin if i<> centr then m[i, n+1-i]:= sqr (m[i,n+1-i]); end;  

for i:=1 to n do

begin

m[i,i]:= sqr(m[i,i]);

if i<> centr then

m[I, n+1-i]:=sqr(m[i,n+1-i]);

end;

 

for i:=1 to n do {Распечатка матрицы на экран}

begin

for j:=1 to n do

Write(m[i,j]:3);

writeln;

end;

readln;

readln;

end.

Задача 3. Поменять местами наибольший и наименьший элементы матрицы.

Система тестов:

Значение массива Результаты
  1 2 3 7 3 4 2 2 0   1 2 3 0 3 4 2 2 7  
  3 0 -3 -2 -3 -4 0 0 0   -4 0 -3 -2 -3 3 0 0 0  

Решение задачи:

Program change_max_min;

Const

n=3; m=3;

var

x:array[1..n,1..m] of integer;

i, j, t, i_max, j_max, i_min, j_min: integer;

begin

Writeln(' Введите элементы массива m ');

for i:=1 to n do

for j:=1 to m do

read(x[i,j]);

i_max:=1;

j_max:=1;

i_min:=1;

j_min:=1;

for i:=1 to 3 do {Цикл поиска номеров максимального и}

for j:=1 to 3 do (минимального элементов массива}

begin

if m[i,j] > m[i_max,j_max] then

begin

i_max:=i;

j_max:=j;

end;

if m[i,j] < m[i_min,j_min] then

begin

i_min:=i;

j_min:=j;

end;

end;

t:=m[i_max,j_max]; {Обмен значениями max и min}

m[i_max,j_max]:=m[i_min,j_min];

m[i_min,j_min]:=t;

 

for i:=1 to 3 do {Вывод массива на экран}

begin

for j:=1 to 3 do

Write(m[i,j]:3);

writeln;

end;

readln;

end.

Задания для самостоятельного выполнения

1. Вычислить суммы элементов столбцов заданной матрицы A(n,m).

2. В каждой строке матрицы определить является ли сумма ее отрицательных элементов четным или нечетным числом.

3. Найти наибольший элемент матрицы и номер строки и столбца на пересечении которых он находится.

4. Подсчитать сколько раз встречается в заданной матрице максимальное по величине число.

5. В заданной матрице поменять местами строки с номерами A и Q.

6. Умножить столбец с минимальным элементом на число Z.

7. Сдвинуть циклически элементы в строках матрицы на одну позицию влево.

8. В матрице вычислить две суммы элементов, стоящих над главной диагональю и под ней.

9. Поменять местами элементы на главных диагоналях матрицы.

10. Найти количество элементов матрицы, больших среднего арифметического всех ее элементов.

11. В данной матрице найти минимальный элемент в диагоналях.

12. По трем заданным матрицам A[n,m], B[n,m], C[n,m] построить матрицу X того же размера, каждый элемент которой вычисляется по формуле x[i,j]=max(a[i,j],b[i,j],c[i,j].

13. В матрице поменять местами строку и столбец с номером N.

14. Вычислить матрицу С[i,j], являющуюся суммой матриц a[i,j] и b[i,j].

15. Упорядочить элементы к-й строки по возрастанию.

16. Сдвинуть циклически элементы в столбцах матрицы на одну позицию вверх.

17. Найти максимальную из столбцевых сумм.

18. Найти максимальную из строковых сумм.

19. Разделить все элементы столбца, в котором находится минимальный элемент матрицы на максимальный элемент матрицы.


Лабораторная работа № 8. Обработка символьных строк

Цель работы: изучение принципов работы со строковым типом данных.

 

Задачи:

¾ познакомиться с типом данных String;

¾ изучить способы задания строкового типа и обращения к элементам строки;

¾ изучить основные операции над строками и функции работы с ними.

 

Порядок выполнения работы:

1. Перед выполнением работы, обязательно, прочитать конспект лекций по теме «Строковый тип данных».

2. Ознакомиться с представленными в лабораторной работе теоретическими сведениями.

3. Получить дополнительные теоретические знания из источников: [7: Занятие 14], [10: Глава 4.3].

4. Реализовать на ЭВМ разобранные примеры.

5. Самостоятельно выполнить предложенные задачи.

 

Внимание: переходить к выполнению пунктов 4 и 5 только после тщательной проработки пунктов 1 – 3.

 





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


Дата добавления: 2017-02-28; Мы поможем в написании ваших работ!; просмотров: 264 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Сложнее всего начать действовать, все остальное зависит только от упорства. © Амелия Эрхарт
==> читать все изречения...

2160 - | 2048 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.