Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль АВС (от А до Я).doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
506 Кб
Скачать
☆

Вариант 1

  1. Дана матрица размера 4 на 4 целого типа. Найти сумму положительных элементов главной диагонали матрицы.

  2. Задать матрицу размера 5 на 5 по следующей формуле: . Вывести полученную матрицу.

  3. Дана матрица размера 3 на 3 действительного типа. Найти максимальный элемент матрицы.

  4. Задать матрицу размера 4 на 4 по следующей формуле: . Вывести полученную матрицу. Найти количество отрицательных элементов матрицы.

Вариант 2

  1. Дана матрица размера 3 на 4 действительного типа. Найти сумму отрицательных элементов 3-й строки матрицы.

  2. Задать матрицу размера 5 на 5 по следующей формуле: . Вывести полученную матрицу.

  3. Дана матрица размера 3 на 3 целого типа. Найти минимальный элемент 2-го столбца матрицы.

  4. Задать матрицу размера 4 на 4 по следующей формуле: . Вывести полученную матрицу. Найти количество положительных элементов матрицы.

Вариант 3

  1. Дана матрица размера 4 на 3 действительного типа. Найти количество положительных элементов 2-й строки матрицы.

  2. Задать матрицу размера 5 на 5 по следующей формуле: . Вывести полученную матрицу.

  3. Дана матрица размера 3 на 3 целого типа. Найти минимальный элемент матрицы.

  4. Задать матрицу размера 4 на 4 по следующей формуле: . Вывести полученную матрицу. Найти сумму отрицательных элементов матрицы.

Вариант 4

  1. Дана матрица размера 4 на 4 целого типа. Найти количество отрицательных элементов главной диагонали матрицы.

  2. Задать матрицу размера 5 на 5 по следующей формуле: . Вывести полученную матрицу.

  3. Дана матрица размера 3 на 3 действительного типа. Найти максимальный элемент 2-й строки матрицы.

  4. Задать матрицу размера 4 на 4 по следующей формуле: . Вывести полученную матрицу. Найти сумму положительных элементов матрицы.

Практическая работа №8. Связь одномерных и двумерных массивов с простыми типами.

Примеры задач.

  1. Последовательность задана рекуррентно: a1=6; a2=3; an=2an-1-5an-2; где n=3, 4, … Вычислить первые 10 элементов последовательности. Найти количество элементов последовательности меньше 5.

Program massiv;

Const n=10;

Var a:array[1..n] of integer;

i, j, s:integer;

Begin {вычисление элементов последовательности}

a[1]:=6;

a[2]:=3;

for i:=1 to n do

a[i]:=2*a[i-1]-5*a[i-2];

{нахождение количества элементов меньше 5}

s:=0;

for i:=1 to n do

if a[i]<5

then s:=s+1;

{печать количества}

writeln (‘количество элементов меньше 5=’,s);

end.

  1. Дана матрица размера 4 на 4. Найти произведение элементов первой и третьей строк матрицы. Вывести полученный массив.

Program matrix;

Const n=4;

m=4;

Var a:array[1..n,1..m] of real;

i, j:integer;

b:array[1..m] of real;

Begin {ввод матрицы}

writeln(‘введите матрицу размера ’,n,‘ на ’,m);

for i:=1 to n do

begin

writeln(‘введите элементы ’,i,‘ строки’);

for j:=1 to m do

read(a[i,j]);

end;

{нахождение произведения}

for j:=1 to m do

b[j]:=a[1,j]*a[3,j];

{вывод массива}

writeln(‘массив’);

for j:=1 to m do

writeln(‘b[’,j,‘]=’, b[j]:0:2);

end.

Задания.

Студенты решают задачи на компьютерах по вариантам с помощью среды программирования PascalABC.

Вариант 1

  1. Даны натуральные n и m. Вычислить двойную сумму .

  2. Последовательность задана рекуррентно: a1=0,2; a2=2; an=2an-1-3an-2; где n=3, 4, … Вычислить первые 10 элементов последовательности. Найти сумму отрицательных элементов.

  3. Дана матрица размера 4 на 4 целого типа. Найти сумму элементов в каждой строке матрицы. Вывести полученный массив.

Вариант 2

  1. Дано натуральное число n. Вычислить сумму .

  2. Последовательность задана рекуррентно: a1=1; a2=-2; an=an-1+an-2; где n=3, 4, … Вычислить первые 10 элементов последовательности. Сосчитать количество отрицательных элементов.

  3. Дана матрица размера 4 на 4 целого типа. Умножить элементы 3-го столбца матрицы на 3. Вывести полученный массив.

Вариант 3

  1. Дано натуральное число n. Вычислить сумму .

  2. Последовательность задана рекуррентно: a1=-2; a2=3; an=3an-1-an-2; где n=3, 4, … Вычислить первые 10 элементов последовательности. Найти сумму положительных элементов последовательности.

  3. Дана матрица размера 4 на 4 целого типа. Заменить элементы 2-й строки матрицы на их модуль. Вывести полученный массив.

Вариант 4

  1. Даны натуральные n и m. Вычислить двойную сумму .

  2. Последовательность задана рекуррентно: a1=5; a2=-3; an=an-1-2an-2; где n=3, 4, … Вычислить первые 10 элементов последовательности. Сосчитать количество положительных элементов.

  3. Дана матрица размера 4 на 4 целого типа. Сложить элементы 1-го и 4-го столбцов матрицы. Вывести полученный массив.

Практическая работа №9.

Составление программ с использованием типа “Запись”.

Теория.

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

Комбинированный тип данных – это структурированный тип, состоящий из фиксированного числа компонент (полей) разного типа. Комбинированный тип имеет еще и другое название – запись.

Обычно запись содержит совокупность разнотипных атрибутов, относящихся к одному объекту. Например, анкетные сведения о студенте могут быть представлены в виде информационной структуры.

Анкета студента:

  1. Фамилия, Имя, Отчество;

  2. Пол;

  3. Дата рождения;

  4. Адрес;

  5. Курс;

  6. Группа;

В Паскале эта информация может храниться в одной переменной типа Запись. Задать тип и описать соответствующую переменную можно следующим образом:

Type имя типа=record;

поле 1:тип;

поле 2:тип;

…

поле n:тип;

End;

Пр. Type anketa=Record;

FIO:String[50];

Pol:Char;

Dat:String[16];

Adres:String[50];

Curs:integer;

Grup:string[5];

End;

Var student:anketa;

К каждому элементу записи можно обратится используя составное имя, которое имеет следующую структуру: имя переменной.имя поля

Например: student.fio, student.dat и т.п. Если, например полю курс присвоить значение 3, то это можно сделать следующим образом:

Student.Curs:=3;

Поля записи могут иметь любой тип, в частности сами могут быть записями. Такая возможность используется в том, случае, когда требуется представить многоуровневое дерево (более 2 уровней).

Любая обработка записей, в том числе ввод и вывод, производится поэлементно.

Например, ввод сведений о 500 студентах можно организовать следующим образом:

For i:=1 to 500 do

With Student [i] do

Begin

Write (‘Ф.И.О.’); Readln (FIO);

Write (‘Пол (м/ж)’); Readln (Pol);

Write (‘Дата рождения’); Readln (Dat);

Write (‘Адрес‘); Readln (Adres);

Write (‘Курс‘); Readln (Curs);

Write (‘Группа’); Readln (Grup);

End;

В этом примере использован оператор присоединения, который имеет следующий вид:

With имя переменной типа запись do

Begin

Действия

End;

Он позволяет, один раз указав имя переменной типа запись после слова With, работать в пределах оператора с именами полей как с обычными переменными, т.е. не писать громоздких составных имен.

Примеры задач.

    1. В группе 30 студентов. О каждом студенте известно: фамилия и оценки по 8 предметам. Найти среднюю оценку каждого студента и выдать на экран среднюю оценку и фамилию лучшего студента.

Program zapis;

Const n=30;

Type sved=record;

fio:string[50];

p1, p2, p3, p4, p5, p6, p7, p8:integer;

ocsr:real;

End;

Var s:array[1..n] of sved;

i,k: integer;

max: real;

Begin

writeln(‘введите данные о ’,n,‘ студентах’);

For i:=1 to n do

With spisok [i] do

Begin

Writeln (‘введите фамилию ученика‘);

Readln (famil);

Writeln (‘введите оценки по восьми предметам’);

Readln (p1, p2, p3, p4, p5, p6, p7, p8);

Clrscr;

End;

{нахождение среднего балла }

for i:=1 to n do

with s[i] do

ocsr:=(p1+p2+p3+p4+p5+p6+p7+p8)/8;

{нахождение максимального среднего балла}

max:=s[1].ocsr;

for i:=1 to n do

if s[i].ocsr>max

then

begin

max:=s[i].ocsr;

k:=i

end;

{печать сведений о лучшем ученике}

writeln(‘Лучший ученик’)

writeln (‘ФИО - ’,s[k].fio,‘ средний балл - ’ ,s[k].ocsr);

end.

    1. Составить программу, которая позволит ввести данные о 10 автомобилях предприятия (марка, цвет, пробег, год выпуска, водитель) и выдаст сведения об автомобилях, старше 10 лет.

Program Avto;

Const n=10;

Type mash=record;

marka:string[25];

cvet:string[15];

probeg:real;

god_vip:integer;

voditel:string[25];

End;

Var s:array [1.. n] of mash;

i:integer;

Begin

writeln (‘Введите данные о ’,n,‘ автомобилях’);

for i:=1 to n do

with s[i] do

begin

write(‘введите марку автомобиля‘); readln(marka);

write(‘введите цвет автомобиля’); readln(cvet);

write(‘введите пробег автомобиля’); readln(probeg);

write(‘введите год выпуска’); readln(god_vip);

write(‘введите фамилию водителя’); readln(voditel);

end;

writeln(‘автомобили старше 10 лет’);

for i:=1 to n do

begin

with s[i] do

begin

if 2011-god_vip>10

then

begin

writeln (‘марка машины - ’,marka);

writeln (‘цвет машины - ’,cvet);

writeln (‘пробег - ’,probeg);

writeln (‘водитель - ’,voditel);

end;

end;

end;

End.

    1. Составить программу, которая позволяет ввести данные о 15 деталях, находящихся на складе (название, количество, стоимость одной детали). Вывести название и количество самой дорогой детали.

Program detali;

Const n=15;

Type detal=record;

nazv:string[25];

kol:integer;

cena:real;

End;

Var s:array [1.. n] of detal;

i,k:integer;

max:real;

Begin

writeln (‘Введите данные о ’,n,‘ деталях’);

for i:=1 to n do

with s[i] do

begin

write(‘введите название детали’); readln(nazv);

write(‘введите количество этой детали на складе’); readln(kol);

write(‘введите цену 1-й детали’); readln(cena);

end;

max:=s[1].cena;

k:=1;

for i:=1 to n do

begin

with s[i] do

begin

if cena>max

then

begin

max:=cena;

k:=i

end;

end;

end;

writeln(‘самая дорогая деталь’);

writeln (‘название - ’,s[k].nazv);

writeln (‘количество - ’,s[k].kol);

End.

    1. Составить программу, которая позволяет ввести данные о 20 кубиках (цвет, материал, длина ребра). Сосчитать количество кубиков с длиной ребра меньше 5 см.

Program kubiki;

Const n=20;

Type kub=record;

cvet:string[25];

material:string[25];

dlina_rebra:real;

End;

Var s:array [1.. n] of kub;

i,k:integer;

Begin

writeln (‘Введите данные о ’,n,‘ кубиках’);

for i:=1 to n do

with s[i] do

begin

write(‘введите цвет кубика’); readln(cvet);

write(‘введите материал, из которого изготовлен’); readln(material);

write(‘введите длину ребра’); readln(dlina_rebra);

end;

k:=0;

for i:=1 to n do

with s[i] do

begin

if dlina_rebra<5

then k:=k+1

end;

writeln(‘количество кубиков с длиной ребра меньше 5 см. =’,k);

End.

Задания.

Студенты решают задачи на компьютерах по вариантам с помощью среды программирования PascalABC.