Double mpr(double a,double h,int n)




Void main()

{ // Блок основной программы

int n, mxA, mxB, mxC;

double srMin, srMax;

srMin=(double)(mm(a,&mxA)+mm(b,&mxB)+mm(c,&mxC))/3; // три

обращения к функции

printf("srMin = %g\n",srMin);

srMax=(double)(mxA+mxB+mxC)/3;

printf("srMax = %g\n",srMax);

getch();

}

Пример 2. Заполнить таблицу Пифагора и вычислить сумму ее элементов с использованием передачи в функцию указателя на указатель.

#include <iostream>

using namespace std;

double zapoln(int **M, int m, int n);

void print(int **M, int m, int n);

double S=0;

 

Int main()

{

int m = 10; //Количество строк в массиве

int n = 10; //Количество столбцов в массиве

int **A; //Двумерный массив

//Создание двумерного массива

A = new int*[m]; //Создание массива указателей

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

A[i] = new int[n];

double sum = zapoln(A, m, n); //Заполнение массива

print(A, m, n); //Вывод массива

cout <<"Summ = " << sum << endl;

return 0;

}

 

double zapoln(int **M, int m, int n)

{

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

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

{

M[i][j] = (i+1)*(j+1);

S+=M[i][j];

}

return S; //Возврат суммы элементов

}

 

void print(int **M, int m, int n)

{

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

{

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

{

cout.width(5);

cout << M[i][j];

}

cout << endl;

}

}

Задание (программа 3_1)

Разработать программы из нескольких функций, возвращающих два и более значений, для следующих задач.

1. Составить подпрограмму для перемножения двух квадратных матриц,
с помощью которой вычислить вторую, третью и четвертую степени матрицы
M [1..5,1..5]. Для каждой матрицы вычислить сумму и среднее арифметическое значение элементов.

2. Даны массивы A [1..6], B [1..6], C [1..6], вычислить суммы положительных и отрицательных элементов. Получить А*B, B*С, А*C.

3. Даны две матрицы целых чисел V [1..2,1..3], W [1..3,1..2]. Найти суммы элементов строк и столбцов в этих матрицах. Сравнить общие суммы элементов в соответствующих матрицах, вычисленные через суммы строк и суммы столбцов.

4. По заданным вещественным массивам A [1..6], B [1..6] и C [1..6] вычислить

5. Даны две матрицы целых чисел V [1..2,1..3], W [1..2,1..3]. Найти общие суммы элементов строк, из функции вернуть две суммы.

6. Даны массивы A [1..5], B [1..6]. Получить новые массивы путем сдвига элементов в массивах на два разряда вправо, освободившиеся слева элементы обнулить. Сдвиг элементов в массиве оформить подпрограммой, из подпрограммы вернуть выпавшие справа разряды.

7. Даны две целые квадратные матрицы четного порядка. Элементы массивов с четными номерами строки и столбца заменить нулем (стереть). Напечатать исходные и полученные массивы. Подсчитать количество четных и нечетных чисел в каждом.

8. Вычислить значение функции Z = x1+ex2, где x1, x2 – корни уравнения Aix2 + Bix + Ci= 0, где i = 1, 2,.., N. Коэффициенты уравнения заданы в массивах A [1..N], B [1..n], C [1..N]. Для вычисления корней использовать подпрограмму.

9. Даны две целые квадратные матрицы шестого порядка. Распечатать элементы главных диагоналей каждой из них и вычислить суммы элементов отдельно главных и побочных диагоналей.

10. Даны два одномерных массива А [1..6] и C [1..6]. Получить A2, С2, А*С. Подсчитать число четных и число нечетных чисел в полученных массивах. Перемножение массивов и подсчет выполнить в подпрограмме.

11. Даны массивы A [4][4], B [4][4]. Получить новые массивы путем сдвига элементов в массивах на два разряда вправо, освободившиеся слева элементы обнулить. Сдвиг элементов в массиве оформить подпрограммой, из подпрограммы вернуть суммы элементов выше главной диагонали и отдельно ниже.

12. Даны три одномерных массива вещественных чисел A [1..6], B [1..8] и
С [1..7]. Найти среднее геометрическое значение положительных элементов и номера ближайших к ним элементов для каждого массива.

13. Даны две матрицы целых чисел S [1..3,0..2], К [1..3,0..2], в каждой из которых имеется по два одинаковых числа. Распечатать их значения.

14. Даны массивы A [1..6], B [1..6], C [1..6]. Преобразовать их, каждому элементу массива присваивая значение соседнего с ним справа. Последнему элементу присвоить значение первого. Напечатать исходные, результирующие массивы и отдельно последние два элемента результирующего.

15. По заданным элементам вещественных матриц A, B и С вычислить

16. По заданным вещественным массивам A [1..6], B [1..6] и С [1..6] вычислить (min Ai) / max Ai + (max Ci) / min (Ci) + max (B + C)I / min (B + C)i.

17. Даны две целые квадратные матрицы четного порядка. Напечатать массивы, транспонированные матрицы, количество четных и число нечетных чисел в каждой.

18. Даны массивы A [1..6], B [1..8]. Выбрать из них положительные элементы и записать соответственно в массивы A [1..k] и B [1..k], где k < 6, n < 8;
из отрицательных элементов сформировать массивы A2 [1..6-k], B2 [1..8-n]. Напечатать суммы и произведения элементов для каждого.

19. Даны квадратные матрицы A, С и B размером 4x4 каждая. Напечатать средние арифметические значения в них отдельно для положительных и отрицательных элементов.

20. Даны массивы целых чисел F [8], В [8]. Найти и напечатать значения и индексы минимальных элементов, сколько в каждом массиве таких же.

21. Даны три одномерных массива вещественных чисел A [1..6], B [1..8] и
С [1..7]. Найти среднее геометрическое значение положительных элементов и номера ближайших к ним элементов для каждого массива.

22. Даны две целые квадратные матрицы шестого порядка. Распечатать элементы главных и побочных диагоналей каждой из них, вычислить суммы элементов отдельно главных и побочных диагоналей.

 

Лабораторная работа № 4

Создание проектов из нескольких файлов в Eclipse IDE С/С++

 

Инструкция по работе в Eclipse IDE С/С++

Главное окно (рабочее место) среды разработки программного обеспечения Eclipse IDE представлено на следующем рисунке.

 
 
 
 
 

 

Рабочее место разделено на части (перспективы):

1) обозреватель проекта,

2) редактор исходного кода,

3) обозреватель консоли,

4) файл исходного кода,

5) меню “Project”.

В обозревателе проекта (Project Explorer) создаются проекты. В окне редактирования вводится и редактируется исходный код. Eclipse IDE использует консоль для показа различных сообщений или выходной информации от консольных приложений.

Для создания проекта необходимо выполнить File > New > C Project. Также можно создать проект, используя контекстное меню по клику правой кнопкой мыши на Project Explorer, и выбрать New > C Project во всплывающем окне.

В диалоговом окне необходимо задать имя проекта и нажать кнопку «Finish». При успешном создании проекта он отобразится в Project Explorer.

 

 

Далее необходимо создать файл исходного кода C. Для чего нужно щелкнуть правой кнопкой мыши на проект в Project Explorer и выбрать New > Source file.

 

 

В появившемся диалоговом окне нужно ввести имя исходного файла и задать для него расширение .c. Файл появится в обозревателе проекта (поле 4). Далее в окно редактора исходного кода ввести текст программы.

Для компиляции программы необходимо выбрать в меню «Project» (поле 5) опцию «Build Project» или щелкнуть правой кнопкой мыши на проект в Project Explorer и выбрать ту же опцию «Build Project». Если в проекте нет ошибок, то можно запустить приложение нажатием клавиш <Ctrl + F11>.

При модульном программировании проектируется структура главной программы, затем разрабатываются и программируются модули.

Пример. Найти соотношение между максимальными элементами для массивов А и В.

Выделим вычисление наибольшего элемента в подпрограмму, которую вынесем в отдельный модуль.

#include <stdio.h>

#include <conio.h>

#include "r_pos.h" // подключение модуля из текущего каталога

int i;

Void main()

{

int a[8], b[8];

int s;

printf("Введите массив A из 8 чисел типа int \n");

for (i=0; i<8; ++i)

scanf("%d", &a[i]);

printf("Введите массив B из 8 чисел типа int\n");

for (i=0; i<8; ++i)

scanf("%d",&b[i]);

printf("Сообщение = ");

printf(" max(A)/max(B) = %6.3f \n", (float)max(a)/max(b));

getch();

}

// Интерфейсная часть модуля r_pos

typedef int * mass;

int max(mass d);

extern int i;

// Исполняемая часть модуля

Int max(mass d)

{

int mx;

mx = d[0];

for (i=1; i<8; ++i)

if (mx < d[i]) mx = d[i];

printf(" %d: ", mx);

return mx;

}

Задание (программа 4_1)

Разработать программы, скрыв подпрограммы в отдельном файле (модуле), при этом использоватьпередачупараметров в функции и глобальную переменную, на которую по возможности организовать ссылку из другого файла (модуля).

1. Для матриц целых чисел S [1..3,0..2], K [1..3,0..2], в которых имеется по два одинаковых числа, найти и напечатать их значения и индексы.

2. Даны две матрицы целых чисел M [1..3,0..1], К [1..3,0..2]. Найти средние арифметические значения для каждой из них и индексы ближайших к ним чисел.

3. Для массивов A [1..6], B [1..6], C [1..6], переставить элементы в них таким образом, чтобы слева подряд были записаны отрицательные, а справа положительные числа. Подсчитать количество положительных, отрицательных и нулевых элементов в каждом массиве.

4. Даны одномерные массивы A [1..6], B [1..8], C [1..10]. Записать их в виде матриц AA [1..3,1..2], BB [1..2,1..4], CC [1..5,1..2], найти наименьшие элементы в новых и напечатать их номера.

5. Для заданных матриц целых чисел V (-1..2,0..3), W [1..3,0..2] сформировать одномерные массивы VV и WW, записывая элементы построчно. Напечатать индексы исходных матриц для максимальных значений и сами значения.

6. Дана матрица чисел H [1..5,1..6]. Переставить элементы в строках матрицы таким образом, чтобы они были расположены в порядке возрастания их модулей. Подсчитать, сколько в исходных матрицах положительных, отрицательных чисел и нулей.

7. В матрице чисел G [1..3,1..6] переставить элементы так, чтобы элементы каждого столбца матрицы были смещены циклически вправо. Перестановку элементов в столбце реализовать подпрограммой, напечатать три «выпавших» элемента.

8. Даны массивы A [1..8], B [1..8], C [1..8]. Упорядочить элементы в них в порядке убывания их модулей, напечатать наименьшее и наибольшее значения и их номера.

9. Для заданных массивов A [4][4], B [1][6], C [4][6] вычислить суммы положительных и отдельно отрицательных элементов, число нулей.

10. Даны две матрицы целых чисел V [1..2,1..3], W [1..2,1..3]. Найти общие суммы элементов столбцов, из функции вернуть три суммы.

11. По элементам двух массивов А [5][5] и C [5][5] получить A2, С2, А*С. Подсчитать число положительных, число отрицательных чисел и нулей в полученных массивах. Перемножение массивов и подсчет выполнить в подпрограмме.

12. Даны матрицы целых чисел S [0..3,0..2], K [0..3,0..2]. Найти и напечатать значения и индексы минимальных элементов.

13. Для матриц, состоящих из целых чисел S [3][3], С [3][3], B[3][3], найти и напечатать значения и индексы максимальных элементов.

14. Даны две матрицы целых чисел А [3][2], К [3][2]. Найти средние арифметические значения для каждой из них и индексы ближайших к ним чисел.

15. Для матриц F [4][4], С [4][4] найти и напечатать значения и индексы максимальных по модулю отрицательных элементов и отдельно положительных.

16. Даны одномерные массивы К [1..8], C [1..10]. Записать их в виде матриц КК [1..2,1..4], CC [1..5,1..2], найти наибольшие элементы в каждой и напечатать их индексы.

17. Для трех одномерных массивов целых чисел A [1..9], B [1..8] и С [1..7] подсчитать количество неотрицательных элементов в каждом и найти по два ближайших к ним числа.

18. Даны матрицы целых чисел F [4][4], С [4][4]. Найти и напечатать значения и индексы минимальных по значению положительных элементов, отличных от нуля.

19. Для каждой из трех матриц вещественных чисел найти среднее геометрическое значение положительных элементов и индексы ближайших к ним элементов.

20. Даны квадратные матрицы A и B размером 5х5. Выбрать из них положительные и отрицательные элементы и записать соответственно в массивы Aпол, Аотр и Bпол, Вотр. Подсчитать количество чисел в каждом полученном массиве. Найти средние арифметические и средние геометрические значения элементов для каждого массива.

21. Для квадратных матриц A и B размером 5х5 напечатать средние арифметические значения и ближайшие к ним в каждой матрице.

22. Даны массивы целых чисел К [7], В [7], G [7]. Найти и напечатать значения и индексы максимальных элементов, сколько в каждом массиве элементов, совпадающих с максимальным.

 

 

Лабораторная работа № 5

Программирование с возвратом из функции структур

 

Структуры состоят из ряда полей, поэтому в одной функции можно вычислить несколько значений и поместить в разные поля структуры. Поскольку структура является единым объектом, то ее целиком можно возвратить из функции оператором return.

Пример. Вычислить сумму элементов, максимальное и минимальное значения в массиве с использованием возврата из функции структуры.

 

#include <stdio.h>

typedef struct array_info

{

int max, min, sum;

}

ARRAY_INFO;

ARRAY_INFO GetArrayInfo(int*, int);

ARRAY_INFO GetArrayInfo(int* array, int len)

{

ARRAY_INFO info = {array[0], array[0], array[0]};

int i = 1;

while(i < len)

{

if (array[i] > info.max) info.max = array[i];

if (array[i] < info.min) info.min = array[i];

info.sum += array[i];

i++;

}

return info;

}

Int main()

{

int mass[6] = {1, 22, 3, -4, 5, 6};

int len = 6;

ARRAY_INFO s = GetArrayInfo(mass, len);

printf("min=%d max=%d sum=%d",s.min, s.max, s.sum);

return 0;

}

Задание

Для задач из лабораторных работ 3 и 4 разработать программы, возвращающие несколько значений через поля структуры.

 

Лабораторная работа № 6

Основы программирования в системе Code::Blocks

Инструкция по работе в Code::Blocks

Для реализации лабораторных работ необходима среда разработки Code::Blocks, которая поддерживает языки С и С++. Ее запуск производится через файл codeblocks.exe. При этом откроется окно редактирования с меню.

 

 

Для создания нового проекта необходимо перейти по ссылке Create a new project или File-New-Project. При этом откроется окно создания проекта, в котором нужно выбрать тип нового проекта – Console application (Консольное приложение) и нажать на кнопку « Go » (Перейти).

 

 

Далее при успешном создании приложения откроется окно Console application, в котором необходимо выбрать из списка язык С или С++ (по заданию преподавателя) и нажать на кнопку «Next» (Далее).

 

 

В следующем окне нужно ввести имя проекта и путь для создаваемого проекта и нажать на кнопку «Next» (Далее).

 

Поля следующего окна создания проекта должны быть заполнены так, как показано на рисунке.

 

 

По нажатию кнопки «Finish» в менеджере проектов во вкладке Projects открыть папку Sources, найти файл main.c и открыть его.После чего откроется окно редактирования с заготовкой короткой программы «Hello, world! ».

 

Далее набирается код программы, компилируется и выполняется нажатием клавиши <F9> или иконки, выделенной на следующем рисунке. При наличии ошибок в коде программы сообщения о них выводятся в окне «Build log».

 

 

При компиляции программы в среде Code::Blocks наиболее частыми ошибками являются следующие.

 

1. Компиляция предыдущей программы вместо текущей. Необходимо перезапустить Code::Blocks и еще раз скомпилировать нужную программу.

 

2. " Имя программы - Debug" uses an invalid compiler. Skipping... Необходимо правильно указать среде путь до компилятора (до папки CodeBlocks/MinGW) в меню Settings – Compiler and debugger во вкладке Toolchain executables.

 

Разработка программ из нескольких функций.

Вычисление значения интегралов

Пример. Вычислить значение интеграла двумя методами: методом прямоугольников и методом трапеций. Для каждого метода составить отдельную подпрограмму.

Подынтегральная функция f = pow((x+1),(-1/3)).

# include <stdio.h>

# include <math.h>

double mpr(double a,double h,int n)

{

double s = 0, i2;

int i;

for (i=1; i<(n+1); i++)

s = s + pow(((a+(i-0.5)*h)+1), (-1/3.0));

i2 = h*s;

return i2;

}



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: