Первый семестр / Лабалаторная работа №4 / Лаболаторная работа №4
.odtМИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра математического обеспечения и применения ЭВМ
отчет
по лабораторной работе №4
по дисциплине «Информационные модели и системы»
Тема: «Массивы »
Студент гр. 8802 |
|
Попов А.П. |
Преподаватель |
|
Сидоров Ю.Н. |
Санкт-Петербург
2018
СОДЕРЖАНИЕ
Содержательная постановка задачи...........................................................................3
Формальная постановка задачи..................................................................................3
Алгоритмизация...........................................................................................................4
Типы структур данных................................................................................................5
Текст программы.........................................................................................................5
Пример исполнения программы................................................................................7
Содержательная постановка задачи
Требуется написать программу, которая формирует вектор B(b₁, b₂, … ,bₙ), из элементов вектора A (a₁, a₂, … ,aₙ), которые удовлетворяют условию с≤aₖ≤d, k ∈ N, n ∈ N, k≤n. Вектор A заполняется случайными значениями (с масштабизацией). Значения c и d задаются пользователем
Формальная постановка задачи.
Дано: Вектор A (a₁, a₂, … ,aₙ). Числа c и d – целые числа, c≤d.
Найти: Вектор B(b₁, b₂, … ,bₘ), где единственный элемент bₖ равен элементу aₗ, если с≤aₗ≤d. k, l, n, m ∈ N, k≤n, l≤m.
Алгоритмизация
Сообщения, выводимые на экран, сокращены.
Типы и структуры данных
A – исходный массив целого типа из N элементов, заполняется случайными числами с масштабированием
B – итоговый массив целого типа из N элементов, заполняется элементами массива A, удовлетворяющих условию с≤a[i]≤d
c, d – переменные целого типа, определяют новые элементы массива B
i, k – переменные целого типа, счетчики.
Текст программы.
program lab4; {программа формирует по вектору A (заполняется случайными целыми числами) вектор B, заполняемый числами в диапазоне, задаваемом пользователем}
const N=20; //N - размер массивов
var
A: array [1..N] of integer; //Начальный массив
B: array [1..N] of integer; //Итоговый массив
i,k,c,d:integer; //i,k - переменные-счетчики. c,d - переменные диапазона
begin
randomize;
//Ввод ограничений для нового вектора
write ('Введите значения c и d для вектора B. Условие: c<=B<=d (целые числа). Введите C->'); readln(c);
write ('Введите d -> '); readln (d);
if (c>d) then //Если диапазон указан неправильно, программа поменяет значения местами
begin
i:=c; c:=d; d:=i;
writeln ('c>d, значения поменяны местами');
end;
//Заполнение массива значениями и вывод их на экран
k:=0;
for i:=1 to N do
begin
A[i]:=5000-random(10000); // рандомизация вводимых значений массива с масштабированием. Массив принимает значения от -5000 до 5000
//Вывод старого массива с табуляцией
write(A[i],#9);
if ((i mod 10)=0) then writeln('');
//Заполнение нового массива
if ((A[i]>=c) AND (A[i]<=d)) then
begin
k:=k+1; B[k]:=A[i];
end;
end;
//Вывод нового массива
writeln('');
Writeln('Вектор, составленный из элементов, удовлетворяющих значению');
if (k=0) then writeln ('Значений, удовлетворяющих условию, нет.')
else
begin
for i:=1 to k do
begin
write(B[i],#9);
if ((i mod 10)=0) then writeln('');
end;
end;
end.
Примеры выполнения программы
Введите значения c и d для вектора B. Условие: c<=B<=d (целые числа).
Введите C->-1000
Введите d -> 1000
-3551 4291 -2342 -3737 4845 132 -2854 1259 1930 -432
-745 -2789 2601 -885 709 -996 2675 -3556 801 1443
Вектор, составленный из элементов, удовлетворяющих значению:
132 -432 -745 -885 709 -996 801
2. Введите значения c и d для вектора B. Условие: c<=B<=d (целые числа). Введите C->-1000
Введите d -> 1000
-3551 4291 -2342 -3737 4845 132 -2854 1259 1930 -432
-745 -2789 2601 -885 709 -996 2675 -3556 801 1443
Вектор, составленный из элементов, удовлетворяющих значению
132 -432 -745 -885 709 -996 801
3. Введите значения c и d для вектора B. Условие: c<=B<=d (целые числа). Введите C->-5000
Введите d -> 5000
-3798 -2373 -4016 2131 1917 3719 -189 -2959 -1913 -4728
2040 4626 -4088 743 -1218 3517 -3744 -1688 479 -2106
Вектор, составленный из элементов, удовлетворяющих значению
-3798 -2373 -4016 2131 1917 3719 -189 -2959 -1913 -4728
2040 4626 -4088 743 -1218 3517 -3744 -1688 479 -2106
4. Введите значения c и d для вектора B. Условие: c<=B<=d (целые числа). Введите C->50
Введите d -> -50
c>d, значения поменяны местами
-4423 -4731 -4148 2448 1838 2004 2731 4614 -1569 -996
1968 4399 1281 3843 2257 -3403 3086 3514 -4475 2423
Вектор, составленный из элементов, удовлетворяющих значению
Значений, удовлетворяющих условию, нет.
5. Введите значения c и d для вектора B. Условие: c<=B<=d (целые числа). Введите C->500
Введите d -> -500
c>d, значения поменяны местами
1581 2146 -152 -389 -1085 -2339 3513 3624 -2835 3441
1564 4114 -2945 3471 -1914 -3720 -4650 -3596 -3229 -2548
Вектор, составленный из элементов, удовлетворяющих значению:
-152 -389