top of page

1. Написать программу для приближенного вычисления значений функции exp(x) с некоторой заданной точностью eps с помощью разложения по формуле Тэйлора. Программа должна выводить таблицу, состоящую из следующих столбиков:

 

   1) Количество слагаемых в сумме в формуле Тэйлора

   2) Приближенное значение функции exp(x), вычисленное по формуле Тэйлора с количеством слагаемых, равным значению из первого столбика

   3) Модуль разности приближенного значения exp(x) из второго столбика и значения exp(x), вычисленного с помощью функции exp(x) из стандартной библиотеки языка C.

 

2. Написать программу для решения уравнений f(x) - c = 0 методами деления отрезка пополам и хорд. В программе должны быть использованы следующие функции

 

int solve(int method, double a, double b, double eps, double param);

double solve_bis(double a, double b, double eps, double param);

double solve_chord(double a, double b, double eps, double param);

 

Здесь method - метод для решения уравнения, method == 1 используется метод бисекции, method == 2 используется метод хорд, method == 3 используются последовательно оба метода; a и b - левая и правая границы отрезка, на котором ищется корень; eps - требуемая точность; param - значение параметра c в функции f(x) - c = 0.

 

Функция solve проверяет условие (f(a) - c)*(f(b) - c) < 0, и если оно ложно, возвращает в функцию main значение 1. Если данное условие истинно, то функция solve вызывает в зависимости от значения параметра method соответствующие функции solve_bis, solve_chord либо обе, печатает приближенные значения корня, возвращенные solve_bis и solve_chord и возвращает в main значение 0.

 

3. Написать программу для поиска седловой точки в двумерном массиве. Программа должна также искать минимальный и максимальный элементы в данном массиве. Содержательная часть программы, реализующая алгоритм поиска седловой точки, должна быть оформлена в виде отдельной функции, которая принимает в качестве аргументов указатель на начало массива, количество строк и столбцов в массиве, указатель на переменную, в которую будет записано значение элемента, который есть седловая точка, указатели на переменные, в которые будут записаны значения минимального и максимального элементов массива. Функция должна возвращать 0, если седловая точка найдена, и 1, если в массиве нет седловой точки.

 

Для создания массива, в котором будет седловая точка, можно использовать значения функции x*x - y*y, вычисленные на равномерной сетке в плоскости xy. Для создания массива, в котором не будет седловой точки, можно использовать псевдослучайные числа.

 

4. Написать функции, имитирующие работу функций strlen, strcpy и strstr из стандартной библиотеки языка С:

int my_strlen(char *str);

void my_strcpy(char *source, char *target);

int my_strstr(chat *haystack, char *needle);

 

Функция strstr возвращает смещение относительно начала haystack, начиная с которого встречается needle или -1, если needle в haystack не встерчается.

 

5. Написать программу для разбиения исходного файла на фрагменты заданной длины или на заданное количество фрагментов одинаковой длины (за исключением последнего файла, в котором будет содержаться остаток исходного файла). При запуске программа должна получать из командной строки следующие параметры:

1. Имя исходного файла

2. -s 1024, здесь значение 1024 приведено для примера, оно может быть произвольным и задает размер в байтах одного фрагмента, на которые нужно разбить исходный файл.

3. -n 100 , здесь значение 100 приведено для примера, оно может быть произвольным и задает количество фрагментов одинаковой длины, на которые нужно разбить исходный файл.

4. -b base, здесь base имя "основы" для имен файлов с фрагментами, то есть эти файлы будут иметь имена

base_1.txt, base_2.txt и т. д.

 

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

Параметры -s и -n являются взаимоисключающими, допускается наличие в командной строке только одного из них.

 

Примеры запуска программы:

 

split file_ini.txt -s 2048 -b name

Файл file_ini.txt должен быть разбит на части длиной 2048 байтов, которые будут называться name_1.txt, name_2.txt и т. д.

 

split myfile.dat -n 200 -b base

Файл myfile.dat должен быть разбит на 200 равных частей, которые будут называться base_1.txt, base_2.txt и т. д.

 

Для успешной работы программы под операционными системами семейства MS WINDOWS, необходимо открывать файлы для чтения и записи в "двоичном режиме", т. е. использовать в качестве второго аргумента функции fopen "rb" или "wb".

 

6. Написать программу для вычисления определенных интегралов от функций методом трапеций с использованием указателей на функции.  В программе должна присутствовать функция                                

double find_int(double a, double b, double eps, double (* f) (double x)), где  a и b - левый и правый пределы интегрирования, eps - требуемая точность, f - указатель на подинтегральную функцию. Функция find_int должна возвращать приближенное значение интеграла.

 

7. Написать программу для создания и использования "базы данных" об успеваемости студентов. Данные об одном студенте должны храниться в структуре следующего вида:

 

struct stud

{

   char *first_name, *last_name;

   int year, month, day;

   double av_grade;

   struct stud *next;

};

 

Здесь first_name и last_name - указатели на имя и фамилию студента; year, month, day - год, месяц и день рождения студента, av_grade - текущий средний балл студента, next - указатель на структуру, хранящую информацию о следующем студенте.

 

Программа должна предоставлять пользователю следующие возможности:

 

1. Считывать исходную базу данных из файла, имя файла должно запрашиваться у пользователя,

2. Записывать текущую базу данных в файл, имя файла должно запрашиваться у пользователя,

3. Выводить текущее содержимое базы данных на экран,

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

5. Удалять произвольные записи из базы данных,

6. Искать студентов в базе данных по фамилии.

 

Все записи базы данных должны быть объединены в связный список.

  • b-facebook
  • Twitter Round
  • b-googleplus
bottom of page