Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Топ:
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Основы обеспечения единства измерений: Обеспечение единства измерений - деятельность метрологических служб, направленная на достижение...
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Интересное:
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Дисциплины:
2017-05-23 | 286 |
5.00
из
|
Заказать работу |
|
|
Цель работы: Выработка навыков разработки функций и компоновки программы из нескольких функций (файлов) на примерах решения типовых задач линейной алгебры (операций с массивами). Знакомство с методами обработки динамических массивов.
Основное задание
Составить текст программы, состоящей из функций, реализующих операции над матрицами произвольного размера, представленных в виде динамических массивов, в соответствии с вашим вариантом задания. Для этого необходимо:
1) Познакомиться с функциями input () и output (), предназначенных для ввода и вывода соответственно элементов матриц произвольного размера.
2) Разработать функции, осуществляющие набор матричных операций в соответствии с вашим вариантом.
3) Дополнить функцию main() необходимыми операторами и операндами.
Рекомендации по программированию
Рассмотрим пример функции, которая вводит с клавиатуры матрицу размером m x n: m – количество строк, n - количество столбцов, выделяет необходимую область памяти для размещения ее элементов и осуществляет ввод их значений в память ПЭВМ.
int ** input(int n, int m)
{
int i,j;
int **a;
//Выделение динамической памяти для элементов матрицы
a= (int**)malloc(n*sizeof(int*));
for(i=0; i<m; i++)
{
a[i]=(int*)malloc(n* sizeof(int*));
for(j=0;j<n;j++)
{
a[i][j]=0; //Обнуление ячеек памяти
}
}
for(i=0; i<m; i++)
for(j=0;j<n; j++)
{
printf(“\nВведите элемент матрицы A(%d,%d) элемент массива:”,i+1,j+1);
scanf(“%d”,&a[i][j]);
}
return a;
}
Для динамического выделения свободной памяти в данном фрагменте программы используется функция malloc(). Она возвращает указатель типа void. Для правильного использования значение этой функции надо преобразовать к указателю на соответствующий тип. При успешном выполнении операции malloc() возвращает указатель на первый байт свободной памяти требуемого размера. Если достаточного количества памяти нет, то возвращается значение 0 (нулевой указатель). Чтобы определить количество байт, необходимых для переменной, используют операцию sizeof.
|
Для освобождения динамической памяти используют функцию free с прототипом void * free(void *p); где *p – указатель на первый байт выделенной памяти. Прототипы обеих функций находятся в заголовочном файле stdlib.h.
Динамическое распределение памяти удобно тогда, когда заранее неизвестно количество используемых переменных (в нашем случае - это m и n).
Для выделения динамической памяти можно так же использовать функцию
new тип [количество элементов].
Рассмотрим теперь функцию, осуществляющую вывод матрицы на экран дисплея.
void output(int **z,int m, int n)
{
int i,j;
printf(“\n Результирующая матрица\n”);
for(i=0; i<m; i++)
{
for(j=0; j<m; j++)
printf(“%8d”,z[I][j]);
printf(“\n”);
}
}
Для того, чтобы начать выполнение работы составьте главную функцию main(), в которую внесите описанные выше функции и функции обработки матриц в соответствии с вашим заданием. В начало программы нужно поместить директивы и декларации.
Примерный вид функции main().
#include<stdio.h>
#include<conio.h>
#include<alloc.h>
int **input (int,int);
//Объявление функций обработки, использующих функцию input
int fproi(int**,int**,int,int);
……………………………
void ouput(int**,int,int);
void main(void)
{
int m,n;
int **p, **q;
clrscr();
puts(“ Введите размер исходной матрицы”);
printf(“число строк=”);
scanf(“%d”,&m);
printf(“число столбцов=”);
scanf(“%d”,&n);
//Вызов функций
p= input (m,n);
output (p,m,n);
q= input (m,n);
output (p,m,n);
fproi(p,q,m,n);
…………………………
}
При составлении программы воспользуйтесь разработками предыдущей лабораторной работы № 5.
Варианты заданий
1. T,U,S В вариантах заданий использованы следующие
2. MQB обозначения:
3. S,M,T Т- транспонирование матрицы.
4. B,U,C С- вычисление следа матрицы.
5. Q,S,N U- умножение матрицы на число.
6. C,Q,T M- перемножение матриц.
7. U,T,N Q- возведение матрицы в квадрат.
|
8. S,N,U S- сложение матриц
9. C,N,T B- вычитание матриц.
10. M,N,Q N- вычисление нормы матрицы.
11. C,N,T
12. B,N,M,
13. C,S,T
14. Q,C,B
15. Сравнить суммы элементов главных диагоналей. Переставить местами два столбца.
16. Сравнить суммы элементов двух столбцов. Переставить местами две строки
17. Сравнить суммы элементов двух строк. Найти наибольшую сумму строк
18. Проверить: является ли матрица магическим квадратом? Найти наибольший элемент в матрице.
Содержание отчета
1.Постановка задачи.
2.Схемы алгоритмов функций.
3.Распечатки текстов программы с комментариями.
Контрольные вопросы
1. В чем состоит отличие объявление функции от ее определения?
2. Как объявить функцию с переменным числом параметров?
3. Какие типы объектов могут быть использованы в качестве формальных параметров?
4. Что такое локальные объекты? Какова их область видимости и «время жизни»?
5. В чем состоит отличие автоматических переменных от статических?
6. Объясните механизм передачи параметров по значению, по указателю, по ссылке.
7. Какой массив называется динамическим?
Работа № 7
|
|
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!