a = a + 1; // теперь a = 5
a++; // теперь a = 6
a--; // теперь a = 5
a = a&&0; // теперь a = 0
a = a||3; // теперь a = 1
Операция условного ветвления if …:
if (/*проверка выражения на неравенство нулю*/)
{
//некоторые действия, если выражение в скобках не равно нулю
}
Операция условного ветвления if … else:
if (/*проверка выражения на неравенство нулю*/)
{
//некоторые действия, если выражение в скобках не равно нулю
}
Else
{
//некоторые действия, если выражение в скобках равно нулю
}
Множественное условие if … else if … else if … else:
if (/*проверка 1 условия на неравенство нулю*/)
{
//некоторые действия, если 1 условие в скобках не равно нулю
}
else if (/*проверка 2 условия, исключающего проверенное ранее 1 условие, на неравенство нулю*/)
{
//некоторые действия, если 1 условие равно нулю, а условие 2 не равно нулю
}
Else
{
//некоторые действия, если 1 и 2 условия равны нулю
}
Оператор цикла for(…;…;…):
for (/*операция, выполняемая до первой итерации цикла/*;
/* условие повторения цикла*/;
/*операция, выполняемая после очередной итерации цикла/*)
{
//тело цикла, выполняемое в том случае, если условие повторение цикла
//выполняется
}
Начиная со стандарта C99 в цикле for можно объявлять переменные, например:
for(int a = 4; a<8; a++)
{
// …
}
В данном случае переменная a будет создана и проинициализирована перед первой итерацией цикла, и будет уничтожена по завершении работы цикла.
Функции
type_R function_name (type_1 arg1, type_2 arg2, type_3 arg3, …)
{
// тело функции с операциями, которые используют
// входные аргументы arg1, arg2, …
// результатом функции является возвращаемое
// значение result типа type_R
return result;
}
type_R – тип возвращаемого значения (int, float, char, short и т.д.)
type_1 – тип первого аргумента
|
type_2 – тип второго аргумента и т.д.
Пример
float sum (float a, float b)
{
float c = 0;
c = a + b;
return c;
}
Практическая часть
В процессе выполнения второй части курсовой работы необходимо рассчитывать следующие статистические характеристики случайных величин.
Математическое ожидание — среднее значение случайной величины при стремлении количества выборок к бесконечности.
N — число отсчётов случайной величины
i — индекс текущего значения случайной величины
хi — текущее значение случайной величины
Вычисление математического ожидание в коде на языке Си.
float MO = 0, sum=0;
int i;
for (i=0; i<N; i++)
sum = sum + x[i];
MO = sum/N;
Дисперсия — мера разброса значений случайной величины относительно её математического ожидания.
— математическое ожидание, вычисленное ранее
Среднеквадратическое отклонение — показатель рассеивания значений случайной величины относительно её математического ожидания.
Вычисление дисперсии и среднеквадратическое отклонение в коде на языке Си:
int i;
float sum = 0, temp = 0, D = 0, CKO = 0;
for (i=0; i<N; i++)
{
temp = (MO - x[i]);
sum = sum + temp*temp;
}
D = sum/N;
CKO = sqrt(D); // sqrt() из библиотеки math.h
Медиана — это такое число выборки, что ровно половина из элементов выборки больше него, а другая половина меньше него. Простейший алгоритм вычисления медианного значения заключается в том, чтобы произвести сортировку значений случайной величины, после чего взять значение, находящееся в середине выборки.
Вычисление медианы в коде на языке Си:
// функция для сравнения двух чисел типа float, нужна для qsort()
|
int compare_float(float* a, float* b)
{
if(*a<*b)
return -1;
if(*a>*b)
return 1;
return 0;
}
//qsort() - функция из библиотеки stdlib.h для сортировки массива
qsort(x, N, sizeof(float), (int(*)(const void *, const void *))compare_float);
// выбор серединного значения
float Median = x[N/2];
Задание
Каждый студент получает уникальный файл с заданием taskN.mai, где номер N соответствует порядковому номеру студента в списке группы. Файлы с заданиями являются сложными. В первых 1024 байтах каждого файла заключено сообщение с параметрами задания. Текст сообщения составлен на русском языке в кодировке Windows-1251, после чего закодирован шифром Цезаря с ключом не выше 4.
Первая часть задания заключена в расшифровке текстовой "шапки" файла и уточнения дальнейшей части.
Вторая часть задания содержит вычисления статистических характеристик случайной величины в соответствии с текстом в шапке файла задания.
В качестве ответа необходимо предоставить код программы, выполняющей задание, а также снимки экрана с корректным консольным выводом результата.
Код программы:
Результат работы программы:
Выводы
Использовав знания и навыки, полученные в курсе теоретических и практических занятий по предмету «Информатика» для решения прикладных задач на языке программирования Си. Я научился объявлять переменные. Работать с файлами и указателями для быстрого доступа к конкретному участку памяти(оперативная, постоянная) повторил постройку базовых конструкций(циклов, функций и операторов ветвления). Продемонстрировал умение работы с зашифрованными файлами и случайными массивами данных на языке Си, а также навык владения средой разработки Dev-C++ для создания, отладки и компиляции.
|