Добавлен: 07.11.2023
Просмотров: 39
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Федеральное государственное автономное образовательное
учреждение высшего образования "Национальный исследовательский университет
"Высшая школа экономики"
Московский институт электроники и математики им. А.Н. Тихонова НИУ ВШЭ
Департамент компьютерной инженерии (или департамент электронной инженерии)
Курс: Алгоритмизация и программирование
ОТЧЕТ
Раздел | Мах оценка | Итог. оценка |
Постановка | 0,5 | |
Метод | 1 | |
Спецификация | 0,5 | |
Алгоритм | 1,5 | |
Работа программы | 1 | |
Листинг | 0,5 | |
Тесты | 1 | |
Вопросы | 2 | |
Доп. задание | 2 | |
Студент:
Зверев Алексей Денисович
Группа:БИВ221
Вариант: № 10 (4, 1)
Руководитель: Ерохина Елена Альфредовна
Оценка:__________
Дата сдачи__________
МОСКВА 2022
Оглавление
Содержание……………………………………………………………………………………………………………………………………1
Задание………………………………………………………………………………………………………………………..…………………2
Постановка задачи………………………………………………………………………………………………………………………………3
Метод решения……………………………………………………………………………………………………………………………………4
Внешняя спецификация
………………………………………………………………………………………………………………………5
Описание алгоритма на псевдокоде……………………………………………………………………………………………………7
Листинг программы……………………………………………………………………………………………………………………………11
Тесты……………………………………………………………………………………………………………………………………17
Задание
-
Даны целочисленная матрица D[1:n, 1:m]. Удалить путем сдвига все строки матрицы, содержащие только чётные элементы. -
Сформировать новый массив, содержащий суммы цифр каждого элемента исходного массива.
Постановка Задачи
Дано:
-
m, n-цел. , D[1:n, 1:m]-цел. -
n-цел., D[1,n]-цел.
Результат:
-
D[1:k, 1:m]-цел. или “НИ одна строка не была удалена” или “Все строки были удалены” -
R[1,n]-цел.
При:
-
, -
Связь:
Метод решения задачи
Внешняя спецификация
Лабораторная работа № 2
Задание 1
Введите высоту матрицы
Введите длину матрицы
Массив из <
<
Введите <<от 1 до n>> элемент массива
Введите длину массива
Задание 2
При k=n
Ни одна строка не была удалена
Иначе
При k=0
Все строки были удалены
Иначе
Матрица <
<
Введите элемент массива <<от 0 до n>> <<от 0 до m>>
Описание алгоритма на псевдокоде
Алг “Лабораторная работа №2.1”
нач
{Задание 1}
вывод(“Лабораторная работа №2”)
вывод(“Задание 1”)
вывод(“Введите длину матрицы D”)
ввод(n)
вывод(“Введите высоту матрицы D”)
ввод(m)
цикл от i := 0 до n
цикл от j := 0 до m
вывод(“Введите”, I, j, “элемент матрицы”)
ввод(D[i][j])
кц
кц
цикл от i := 0 до n
flag:=0
цикл от j := 0 до m
если D[i][j]%2!=0
flag:=1
все
кц
если flag:=1
цикл от j:=0 до m
R[k][j]=R[i][j]
кц
кц
вывод (“Матрица D из”, k, j,” элементов: ”)
вывод(D[1:k][1:j])
кон
Алг “Лабораторная работа №2.2”
нач
{Задание 2}
вывод(“Лабораторная работа №2”)
вывод(“Задание 2”)
вывод(“Введите длину массива D”)
ввод(n)
цикл от i := 0 до n
вывод(“Введите “,I,”элемент массива”)
ввод(D[i])
кц
цикл от i := 0 до n
a:= D[i]
s:=0
циклпока a>0
s=s+(a%10)
a=a/10
кц
R[i]=s
цикл от i:=0 до n
вывод(“Массив R из “,n,”элементов”)
вывод(R[1:n])
кц
кон
Листинг программы
#include
#include
#include
#include
#define lmax 200
int main()
{
int h, l, n, i, j, range, k, flag;
int D[lmax][lmax];
printf("Лабораторная работа №2\n");
printf("Введите длинну матрицы");
scanf("%d",&l);
printf("Введите высоту матрицы");
scanf("%d",&h);
printf("Введите диапазон");
scanf("%d",&range);
for (i = 0; i < h;i++)
{
for (j = 0; j < l; j++)
{
D[i][j]=rand() % range+1;
}
}
for (i = 0; i < h;i++)
{
for (j = 0; j < l; j++)
{
printf("%8d",D[i][j]);
}
printf("\n");
}
//задание 1
printf("Задание №1\n");
for (i = 0; i < h;i++)
{
flag=0;
for (j = 0; j < l; j++)
{
if (D[i][j]%2!=0)
{
flag=1;
break;
}
}
printf("%d \n",flag);
if (flag==1)
{
for (j = 0; j < l; j++)
{
D[k][j]=D[i][j];
}
k++;
}
}
h=k;
for (i = 0; i < h;i++)
{
for (j = 0; j < l; j++)
{
printf("%8d",D[i][j]);
}
printf("\n");
}
}
#include
#include
#include
#include
#define lmax 200
int main()
{
int h, l, n, i, j, range, k, flag, a, s=0;
int R[lmax],D[lmax];
printf("Лабораторная работа №2\n");
printf("Введите длинну массива");
scanf("%d",&h);
printf("Введите диапазон");
scanf("%d",&range);
for (i = 0; i < h;i++)
{
D[i]=rand() % range+1;
}
for (i = 0; i < h;i++)
{
printf("%8d",D[i]);
}
printf("\n");
for (i = 0; i < h;i++)
{
a = D[i];
s=0;
while (a>0)
{
s=s+(a%10);
a=a/10;
}
R[i]=s;
}
for (i = 0; i < h;i++)
{
printf("%8d",R[i]);
}
}
№ | Исходные данные | Результаты |
1 |
m=3 D=1,2,3 4,5,6 7,8,9
D=[384,887,778,916 794,794,336,387,493] |
|
2 |
m=3 D=1,2,3 4,4,4 7,8,9
D=[384,887,778,916 794,794,336,387,493] |
7,8,9
|
3 |
m=3 D=2,2,2 4,4,4 8,8,8
D=[384,887,778,916 794,794,336,387,493] | 1.Все строки были удалены 2. R=[15,23,22,16,20,12,18,16] |