Санкт-Петербургский государственный электротехнический университет «ЛЭТИ»
Имени В.И. Ульянова (Ленина).
Лабораторная работа №3 по дисциплине «Программирование»
Выполнил: Булыгин Н.С.
гр.3308
Факультет КТИ
Преподаватель: Павлов С.М.
Санкт-Петербург
2013
1.Постановка задачи.
Вывести массив чисел с задаваемым количеством элементов и некоторое число. Из массива удалить элементы, номера которых кратны введённому некоторому числу, а затем переставить местами соседние элементы массива в парах, если такая пара имеется.
2.Уточнение задания.
Пользователю должно быть предложено ввести количество элементов массива, введенное число не должно превышать 250000 элементов.
3.Блок-схема алгоритма.
Исходные
данные: A
– массив целочисленных
элементов. X
– количество элементов массива. D
– некоторое число, номера элементов
кратные этому числу должны быть удалены
из массива.
Рабочие
переменные: I
– номер элемента исходного
массива. J
– номер элемента преобразованного
массива массива.
T-
значение копируемого элемента.
Результат: A
– массив целых чисел преобразованный
в соответствии с поставленной задачей.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
4.Таблица проверки алгоритма.
№ блока |
I |
X |
D |
J |
T |
A[I] |
A[I+1] |
A[J] |
I < X |
I < J-1 |
I % D = = 0 |
|
|
Монитор |
1 |
|
5 |
|
|
|
|
|
|
|
|
|
|
|
5 |
2 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
Да |
|
|
|
|
|
4 |
|
|
|
|
|
0 |
|
|
|
|
|
|
|
0 |
5 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
Да |
|
|
|
|
|
4 |
|
|
|
|
|
1 |
|
|
|
|
|
|
|
1 |
5 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
Да |
|
|
|
|
|
4 |
|
|
|
|
|
2 |
|
|
|
|
|
|
|
2 |
5 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
Да |
|
|
|
|
|
4 |
|
|
|
|
|
3 |
|
|
|
|
|
|
|
3 |
5 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
Да |
|
|
|
|
|
4 |
|
|
|
|
|
4 |
|
|
|
|
|
|
|
4 |
5 |
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
Нет |
|
|
|
|
|
6 |
|
|
2 |
|
|
|
|
|
|
|
|
|
|
2 |
7 |
0 |
|
|
0 |
|
|
|
|
|
|
|
|
|
|
8 |
|
|
|
|
|
|
|
|
Да |
|
|
|
|
|
9 |
|
|
|
|
|
|
|
|
|
|
Да |
|
|
|
10 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
|
|
|
|
|
|
|
Да |
|
|
|
|
|
9 |
|
|
|
|
|
|
|
|
|
|
Нет |
|
|
|
11 |
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
19 |
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
10 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
|
|
|
|
|
|
|
Да |
|
|
|
|
|
9 |
|
|
|
|
|
|
|
|
|
|
Да |
|
|
|
10 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
|
|
|
|
|
|
|
Да |
|
|
|
|
|
9 |
|
|
|
|
|
|
|
|
|
|
Нет |
|
|
|
11 |
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
19 |
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
10 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
|
|
|
|
|
|
|
Да |
|
|
|
|
|
9 |
|
|
|
|
|
|
|
|
|
|
Да |
|
|
|
10 |
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
|
|
|
|
|
|
|
Нет |
|
|
|
|
|
12 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
|
|
|
|
|
|
|
|
|
Да |
|
|
|
|
№ блока |
I |
X |
D |
J |
T |
A[I] |
A[I+1] |
A[J] |
I < X |
I < J-1 |
I % D = = 0 |
I < J |
|
Монитор |
14 |
2 |
|
|
|
1 |
3 |
1 |
|
|
|
|
|
|
|
13 |
|
|
|
|
|
|
|
|
|
Нет |
|
|
|
|
15 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
|
|
|
|
|
|
|
|
|
|
|
Да |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5.Текст программы на языке c++:
#include <iostream>
using namespace std;
int main()
{
setlocale(0,"");
int A[250000] = {};
int X, D, J = 0, T;
cout << "Введите количество элементов массива , число должно быть натуральным и не превышать 250000" << endl;
cin >> X;
cout << endl << "Введите элементы массива:" << endl;
for (int I = 0;I < X; I++)
{
cin >> A[I];
}
cout << "Введите некоторое число, число не должно равняться 0 ";
cin >> D;
for(int I = 0;I < X; I++)
{
if ((I % D))
{
A[J] = A[I];
J ++;
}
}
for (int I = 0 ; I < (J-1); I+=2)
{
T = A[I];
A[I] = A[I+1];
A[I+1] = T;
}
cout << endl;
for (int I = 0; I < J; I++)
{
cout << A[I] << ' ';
}
system("pause");
return 0;
}