Составление и отладка программы на языке Си
Контрольная работа
Составление и отладка программы на
языке Си
Аннотация
Контрольная работа представлена пояснительной запиской объёмом 17 листов,
4 рисунка, с использованием литературных источников.
В контрольной работе представлена программа, написанная по средствам
языка Си.
Для решения данного задания использовались:
функция форматированного ввода\вывода;
условный оператор if;
параметрический оператор for;
В работе получен положительный результат решения данного задания.
Содержание
Введение
. Блок-схема решения задачи
. Текст программы на языке Си
. Результаты тестирования программы
Заключение
Список использованных источников
Введение
В данной работе проходило знакомство со средой программирования языка Си.
Причина актуальности языка Си заключается в том, что
синтаксические конструкции многих других современных языков программирования,
появившихся позднее Си, очень сильно напоминают синтаксис языка Си. Здесь речь
идет о таких языках, как Java, C#, PHP и др. Еще один любимый и используемый
многими язык C++ получен из Си с добавлением к нему средств
объектно-ориентированного программирования. Таким образом, изучение языка Си
может оказаться одной из первых ступенек на пути к постижению искусства
программирования. Освоив его, можно смело приступать к освоению перечисленных
языков, уже имея в запасе многие необходимые знания.
Язык Си среднего уровня, сочетающий в себе как некоторые элементы
высокоуровневых языков, так и низкоуровневые операции. В частности, он
позволяет легко оперировать с байтами и битами, а также работать с памятью
напрямую, используя указатели. Кроме того, язык Си легко переносится, другими
словами, написанный под одну операционную систему код может быть откомпилирован
в другой. Рассмотренные и прочие достоинства делают язык Си подходящим
средством для разработки ряда приложений, например, компиляторов.
1. Блок-схема решения
задачи
2. Текст программы на языке Си
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <locale.h>
#include <vector>
#include <algorithm>namespace std;float pi_max = 3.14;float pi_min
= -3.14;float h = 3.14 / 10;float fx(float & x)
{3 * cos(5 *x) + 2 * sin(x);
}bool Cmp(float &x, float &y)
{x > y;
}fy(float **matrix, int size_matrix, vector<float> & A,
vector<float> &B)
{max_row = -1;sum = 0;(int i = 0; i < size_matrix; i++) {(int j = 0; j
< size_matrix; j++) {[i][j] = pow(A[i], 3) + abs(A[j] - B[j]);
}
}
/* Тут подсчитываем сумму элементов и запоминаем столбец */(int i = 0; i
< size_matrix; i++) {temp = 0;(int j = 0; j < size_matrix; j++) {+=
matrix[j][i];
}(temp > sum){= temp;_row = i;
}
}max_row;
{max_element = matrix[row][0];(int j = 0; j < size_matrix; j++)
{[j][row] = max_element;
}
}main()
{(LC_ALL, "Russian");<float> A,B;<float>::iterator
it;counter = 0;n, y;("%s[%2.2f] [%2.2f]\r\n", "Значение функции
на отрезке : ", pi_min, pi_max
);("%s\r\n","x\ty");(float x = pi_min; x < pi_max; x +=
h) {("[%2.2f]\t",x); = fx(x);("[%2.2f]\r\n", y);(y,
&n); // Извлечем в n целую часть числа((int) n % 3 == 0) A.push_back(y);(y
< 0) {(counter >= 1) {
B.push_back(y); = 0;
}counter++;
}
}("%s\r\n", "Значение элементов массива А (кратных
трем)");(it = A.begin(); it != A.end(); it++)(" [%2.2f] ",
*it);("\r\n");("%s\r\n", "Значение элементов массива B
(каждое 2-ое, отрц.значение)");(it = B.begin(); it != B.end();
it++)("[%2.2f]\t", *it);("\r\n");(int i = 0; i <
B.size() - 1; i += 2) {temp = B[i];[i] = B[i + 1];[i + 1] = temp;
}("%s\r\n", "Значение элементов массива А (кратных
трем)");(it = A.begin(); it != A.end(); it++)(" [%2.2f] ",
*it);("\r\n");("%s\r\n", "Значение элементов массива B
(каждое 2-ое, отрц.значение)");(it = B.begin(); it != B.end();
it++)("[%2.2f]\t", *it);("\r\n");(int i = 0; i <
B.size() - 1; i += 2) {temp = B[i];[i] = B[i + 1];[i + 1] = temp;
}("%s\r\n", "Перестановка массива B (i - элемент с i + 1 -
элементом)");(it = B.begin(); it != B.end(); it++)("[%2.2f]\t",
*it);("\r\n");
//Сортируем массив А, в порядке возвростания (A.begin(), A.end(),
Cmp);("%s\r\n", "Значение элементов массива А
(Сортировка)");(it = A.begin(); it != A.end(); it++)(" [%2.2f]
", *it);("\r\n");("%s\r\n", "Формулирование
квадратной
матрицы из мин.размерностей массивов A и B");array_min_size =
A.size();(B.size() < A.size()){_min_size = B.size();("%s[%d]\r\n",
"Размерность массива меньше A, выбор в пользу B : ", array_min_size);
}("%s[%d]\r\n", "Размерность массива А меньше B,
выбор в пользу A : " ,array_min_size);("%s[%d][%d]\r\n",
"Создание квадратной матрицы, размерностью : ", array_min_size,
array_min_size);**matrix;= new float *[array_min_size];(int i = 0; i <
array_min_size; i++)[i] = new float[array_min_size];("%s\r\n",
"Показ матрицы после вычесления по формуле : S(I,J) = pow(A[i],3) -
|A(J)-B(J)|");max_row = fy(matrix, array_min_size, A, B);(int i = 0; i
< array_min_size; i++) {(int j = 0; j < array_min_size; j++)
{("[%2.2f]\t", matrix[i][j]);
}("\r\n");
}("%s[%d]\r\n", "Столбец с максимальной суммой № ",
max_row);("%s\r\n","Замена элементов данного столбца, на 1ый
элемент");(matrix, array_min_size, max_row);("%s\r\n",
"Показ матрицы после замены");(int i = 0; i < array_min_size; i++)
{(int j = 0; j < array_min_size; j++) {("[%2.2f]\t",
matrix[i][j]);
}("\r\n");
}
/* Освободить память */(int i = 0; i < array_min_size; i++) {[]
matrix[i];
}
3. Результаты
тестирования программы
Протабулировать функцию Y на заданном отрезке и записать в одномерный
массив А те значения функции, целая часть которых кратна 3, а в одномерный
массив B - каждое второе отрицательное число= 3cos5x + 2sinx [-π,π],
h= π/10:
Рисунок 1
В Полученном массиве b поменять местами первый со втромым элементами,
третий с четвертым и т.д
Рисунок 2
Из полученных массивов А и В сформировать квадртаную матрицу S,
размерность которой равна минимуму из рамзерностей A и B, а значение элементов
вычесляется по формуле[i,j] = A[i]3 +|A[i] - B[j]|
Размерность полученной матрицы - минимум из размерностей A и B.
В полученном двумерном массиве S, найти столблец с наибольшим числом
положительных элементов
Рисунок 3
Заменить значение элементов этого столбца на первый элемент
Рисунок 4
Заключение
В результате выполнения контрольной работы по программированию были
изучены различные циклы программирования, исследованы некоторые возможности
языка Си, проанализированы допустимые ошибки в данных программах.
Результаты тестирования программного продукта показали, что язык
программирования Си действительно является, легок в реализации выполнения
данных заданий.
Список использованных источников
1. Павловская Т.А. «С/С++ Программирование на языке высокого
уровня»;
. Подбельский В.В. «Язык С++ : учебное пособие»;
. Скляров В.А. «Программирование на языках С и С++»;
. Шилдт Г. «Программирование на С и С++»;
. Джамса Крис «1001 совет по С/С++»;
. Архангельский А.Я. «Программирование в С++ Builder»;
. Шамис В.А. «С++ Builder: Техника визуального
программирования»;
. Страуструп Б. «Язык программирования С++»;
. Франка П. «С++: учебный курс».