Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
zadacha.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
320.14 Кб
Скачать

ВОЕННАЯ АКАДЕМИЯ РЕСПУБЛИКИ БЕЛАРУСЬ

Кафедра информационно-вычислительных систем

КУРСОВАЯ РАБОТА

по учебной дисциплине

«КОНСТРУИРОВАНИЕ ПРОГРАММ»

ТЕМА РАБОТЫ:

«РАЗРАБОТКА АЛГОРИТМА И ПРОГРАММЫ ПО РАСЧЕТУ ЭЛЕМЕНТОВ ДИНАМИЧЕСКОГО МАССИВА»

РУКОВОДИТЕЛЬ

ИСПОЛНИТЕЛЬ курсант 413 учебной группы

МИНСК

2013

СОДЕРЖАНИЕ

  1. Введение 3

  2. Постановка задачи 4

  3. Схема алгоритма программы 5

  4. Разработки СИ-программы 7

  5. Исходный текст СИ-программы 9

  6. Результат вычислений 11

  7. Заключение 12

  8. Литература 13

ВВЕДЕНИЕ

Первый коммерческий транслятор нового языка, получившего название C++ появился в 1983 году. Он представлял собой препроцессор, транслировавший программу в код на С. Однако фактическим рождением языка можно считать выход в 1985 году книги Страуструпа . Именно с этого момента C++ начинает набирать всемирную популярность.

Главное нововведение C++ - механизм классов, дающий возможность определять и использовать новые типы данных. Программист описывает внутреннее представление объекта класса и набор функций-методов для доступа к этому представлению. Одной из заветных целей при создании C++ было стремление увеличить процент повторного использования уже написанного кода. Концепция классов предлагала для этого механизм наследования. Наследование позволяет создавать новые (производные) классы с расширенным представлением и модифицированными методами, не затрагивая при этом скомпилированный код исходных (базовых) классов. Вместе с тем наследование обеспечивает один из механизмов реализации полиморфизма - базовой концепции объектно-ориентированного программирования, согласно которой, для выполнения однотипной обработки разных типов данных может использоваться один и тот же код. Собственно, полиморфизм - тоже один из методов обеспечения повторного использования кода.

Введение классов не исчерпывает всех новаций языка C++. В нем реализованы полноценный механизм структурной обработки исключений, отсутствие которого в С значительно затрудняло написание надежных программ, механизм шаблонов - изощренный механизм макрогенерации, глубоко встроенный в язык, открывающий еще один путь к повторной используемости кода, и многое другое.

Таким образом, генеральная линия развития языка была направлена на расширение его возможностей путем введения новых высокоуровневых конструкций при сохранении сколь возможно полной совместимости с ANSI С. Конечно, борьба за повышение уровня языка шла и на втором фронте - те же классы позволяют при грамотном подходе упрятывать низкоуровневые операции, так что программист фактически перестает непосредственно работать с памятью и системно-зависимыми сущностями. Однако язык не содержит механизмов, вынуждающих разработчика правильно структурировать программу, а авторы не выпустили никаких систематических рекомендаций по использованию его довольно изощренных конструкций. Не позаботились они своевременно и о создании стандартной библиотеки классов, реализующей наиболее часто встречающиеся структуры данных.

Постановка задачи

Задача 23.

Составить программу формирования двумерных динамических массивов-матриц А и В размерностью m x n. Размерность массивов-матриц X и Y (m=6, n=7) ввести с клавиатуры.

Значение элементов массивов-матриц xij и yij определить с помощью выражений:

xij=F1(i;j)

yij=F2(i;j)

F1(i;j) и F2(i;j) оформить в виде функции в соответствии с выражениями:

, при i=0 ,1,…,m; j=0, 1, …, n

, при i=0 ,1,…,m; j=0, 1, …, n

Сформировать двумерный массив-матрицу Z, каждый элемент которого определить суммой соответствующих элементов исходных массивов-матриц X и Y.

Определить сумму элементов, лежащих на главной и побочной диагоналях массива-матрицы Y.

Сформировать массив-матрицу N на основе массива-матрицы Z, поменяв в нем местами соответствующие элементы первого и седьмого столбцов.

Вывести на экран и в файл полученные массивы в виде матриц и значение суммы.

Разработка си-программы

  1. Считываем данные:

printf("Enter m n\n");

scanf("%d %d",&m, &n);

printf("\n");

  1. Создаём динамические массивы:

double **x= new double*[m];

for(int i=0;i<m;i++)

x[i]=new double[n];

double **y= new double*[m];

for(int i=0;i<m;i++)

y[i]=new double[n];

double **z =new double*[m];

for(int i=0;i<m;i++)

z[i]=new double[n];

double **tn= new double*[m];

for(int i=0;i<m;i++)

tn[i]=new double[n];

  1. Вычисляем элементы массивов X и Y в функциях f1, f2:

void f1(double**x,int m,int n)

{

for(int i=0;i<m;i++)

for(int j=0;j<n;j++)

x[i][j]=double(3*(i+4)*(j+1))/double(2*(i+1)+5*(j+2));

}

void f2(double**y,int m,int n)

{

for(int i=0;i<m;i++)

for(int j=0;j<n;j++)

y[i][j]=double(4*(i+7))/double(i*j+2);

}

  1. Вычисляем массив Z и присваиваем элементам массива tn элементы массива Z:

for(int i=0;i<m;i++)

for(int j=0;j<n;j++)

{

z[i][j]=x[i][j]+y[i][j];

tn[i][j]=z[i][j];}

  1. Находим значение элементов главной и побочной диагоналей массива Y:

for(int i=0;i<m;i++)

Diag=Diag+y[i][i]+y[i][n-i-1];

  1. Меняем местами столбцы в массиве tn:

for(int i=0;i<m;i++)

{

q=tn[i][0];

tn[i][0]=tn[i][0];

tn[0][5]=q;}

  1. Производим вывод в файл и на экран:

FILE *f;

f=fopen("file.txt","w");

fprintf(f,"x=\n");

for(int i=0;i<m;i++)

{

for(int j=0;j<n;j++)

fprintf(f,"%.4f ",x[i][j]);

fprintf(f,"\n");

}

fprintf(f,"y=\n");

for(int i=0;i<m;i++)

{

for(int j=0;j<n;j++)

fprintf(f,"%.4f ",y[i][j]);

fprintf(f,"\n");

}

fprintf(f,"z=\n");

for(int i=0;i<m;i++)

{

for(int j=0;j<n;j++)

fprintf(f,"%.4f ",z[i][j]);

fprintf(f,"\n");

}

fprintf(f,"n=\n");

for(int i=0;i<m;i++)

{

for(int j=0;j<n;j++)

fprintf(f,"%0.2f ",tn[i][j]);

fprintf(f,"\n");

}

fprintf(f,"\n%f",Diag);

fclose(f);

printf("x=\n");

for(int i=0;i<m;i++)

{

for(int j=0;j<n;j++)

printf("%.4f ",x[i][j]);

printf("\n");

}

printf("y=\n");

for(int i=0;i<m;i++)

{

for(int j=0;j<n;j++)

printf("%.4f ",y[i][j]);

printf("\n");

}

printf("z=\n");

for(int i=0;i<m;i++)

{

for(int j=0;j<n;j++)

printf("%.4f ",z[i][j]);

printf("\n");

}

printf("n=\n");

for(int i=0;i<m;i++)

{

for(int j=0;j<n;j++)

printf("%.4f ",tn[i][j]);

printf("\n");

}

printf("\n%f",Diag);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]