Динамические переменные в языке программирования С
Автор: lomtik • Апрель 16, 2018 • Лабораторная работа • 1,505 Слов (7 Страниц) • 540 Просмотры
Министерство образования и науки РФ
ФГБОУВПО Тульский государственный университет
КАФЕДРА ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ
Динамические переменные в языке программирования С
Отчет по лабораторной работе № 12
по курсу «Программирование»
Вариант № 11
Выполнила: студент группы 220631 _________ Леонова В. Г.
(подпись)
Проверила: _________ Кушнир О.А.
(подпись)
Тула 2014
Цель работы
Научиться использовать динамические переменные. В данной работе требуется написать программу с использованием динамических переменных, результат выводится на экран и записывается в файл
Задание
Определить, является ли заданная матрица ортогональной, т.е. скалярное произведение каждой пары различный строк(столбцов) равно нулю.
Схема алгоритма
На рисунке 1 представлена схема алгоритма определения ортогональности матрицы
[pic 1]
Рисунок 1 - Схема алгоритма определения ортогональности матрицы
На рисунке 2 представлена схема алгоритма выделения памяти под массив
[pic 2]
Рисунок 2 - Схема алгоритма выделения памяти под массив
На рисунке 3 представлена схема алгоритма освобождения памяти
[pic 3]
Рисунок 3 - Схема алгоритма освобождения памяти
На рисунке 4 представлена схема алгоритма вывода матрицы на экран
[pic 4]
Рисунок 4 - Схема алгоритма вывода матрицы на экран
На рисунке 5 представлена схема алгоритма подсчета суммы парного произведения соответствующих элементов
[pic 5]
Рисунок 5 - Схема алгоритма подсчета суммы парного произведения
соответствующих элементов
На рисунке 6 представлена схема алгоритма определения ортогональности матрицы
[pic 6]
Рисунок 6 - Схема алгоритма определения ортогональности матрицы
На рисунке 7 представлена схема алгоритма для вывода сообщения об ортогональности на экран и в файл
[pic 7]
Рисунок 7 - Схема алгоритма для вывода сообщения об ортогональности
на экран и в файл
Текст программы
Далее приведен текст программы на языке Turbo C, который определяет ортогональность матрицы
#include
#include
int **CreateArray(int N)
{ int i,j;
int **arr = (int**) malloc (N*sizeof(int*));
for (i = 0; i
arr[i] = (int*) malloc (N*sizeof(int));
return arr;
}
void DestroyArray (int **arr, int N)
{ int i;
for(i=0;i
free(arr[i]);
free (arr);
}
void PrintArray (int **arr, int N, FILE*f)
{ int i,j;
for (i = 0; i
{ for (j = 0; j
{
printf("%d\t", arr[i][j]);
fprintf(f,"%d\t",arr[i][j]);
}
printf("\n");
fprintf(f,"\n");
}
printf("\n");
}
int DotProduct (int *a, int *b, int N)
{ int i, sum;
for (i = sum = 0; i
sum += a[i]*b[i];
return sum;
}
int IsOrthogonal (int **arr, int N)
{ int i, j, res = 1;
for (i = 0; i
{ if (DotProduct(arr[i], arr[i], N) != 1)
res = 0;
for (j = i+1; j
if (DotProduct(arr[i], arr[j], N))
res = 0;
}
return res;
}
void Check (int **arr, int N, FILE *f)
{
if (IsOrthogonal (arr, N))
{
printf("Матрица ортогональна \n");
...