Приложение 1. Задачи по программированию на Си



 

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

int series ( int n, int *mas, int *kzero, int *kplus, int *kminus, int k);

2. Составить функцию для слияния двух упорядоченных по возрастанию массивов целых чисел:

int merge (int n, int m, int *mas1, int *mas2, int *res);

3. Составить функцию для построения списка индексов (номеров), строк упорядоченного по возрастанию элементов заданного (k-го) столбца матрицы. Элементы матрицы - целые числа:

void sort (int n, int *mas, int k, int* index);

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

a[k,l] = max min{ a[i,j] } = min max { a[i,j] }    i<=n,j<=m       j<=m,i<=n

Если седловой точки нет, установить k=l=-1

5. Составить функцию для подсчета количества различных чисел в массиве, содержащем n целых чисел.

int count(int *a, int n);

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

int kwords(char* ss, char * sm, int kmax);

ss - исходная строка,

sm - массив строк длиной до 30 литер каждая (для размещения выделенных слов),

kmax - максимальное количество выделенных слов.

Предусмотреть сигнализацию о случаях, когда функция неприменима ( слишком много слов или слишком длинное слово ).

7. Составить функцию для определения

а) наибольшего простого числа, не превосходящего заданное целое n,

б) наименьшего простого числа, превосходящего заданное n.

int simple (int n);

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

 int simplefactor(int n, int *masfactor);

9. Составить функцию для вычисления числа сочетаний из n злементов по m (n и m - целые):

Cnm = n! / ((n-m)! * m!)

Результатом функции должно быть целое число, если Cnm < 32767 и булевское значение true, или вещественное число, если Cnm >=32767 и булевское значение false.

Boolean binom (int n, int m, int *cnm, double *dcnm);

10. Многочлены представляются в памяти ЭВМ целым числом n - степенью многочлена и массивом коэффициентов a[0],a[1],...,a[n].

а) Составить функцию для вычисления значения y=P(x) многочлена для заданного аргумента x.

double valpoly( int n, double *a);

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

int polyprod( int n, double *a, int m, double *b, double *res);

в) Составить функцию для вычисления коэффициентов многочлена-суммы двух других многочленов. Функция возвращает степень многочлена - суммы.

 int polysum ( int n, double *a, int m, double *b, double *res);

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

const int L_cln = 20; /*длина столбца таблицы*/ const int L_tab=30; /*максимальное число столбцов*/ struct COLUM               { char name [ 5 ]; /* имя столбца */            double *adr;     /* указатель на столбец */         }; COLUM Tabl [ L_tab } /*массив сведений о столбцах */

Для обращения к столбцам используются их индексы в массиве Tabl. Если столбец не размещен в памяти, то значение поля adr равно 0.

а) Составить функцию для выполнения поэлементного сложения двух столбцов с образованием столбца сумм. Входные данные - номера (индексы в Tabl ) столбцов слагаемых и столбца результата. Если столбец-результат не размещен в памяти, то разместить его и отметить зто в Tabl.

int sumcol( int k, int l, int r);

Функция возвращает 0 при успешном выполнении операции или 1, если один или оба столбца-слагаемых не размещены в памяти.

б) Составить функцию для вычисления столбца частных от деления элементов одного столбца на элементы другого столбца. Предусмотреть сигнализацию о случае, когда элемент столбца-делителя равен нулю. Остальные условия - как в варианте (а).

int subcol ( int k, int l, int r);

в) Составить функцию для вычисления элементов столбца относительных приростов в процентах di=(ai-bi)/ai*100 для заданного исходного столбца. Остальные условия - как в вариантах (а) и (б).

int relincr ( int k, int r);

Функция возвращает 1, если встретится делитель, равный 0, в остальных случаях возвращает 0.

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

 int tabprint ( int *list, int n);

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

enum tpn = { FUNC, OPER, VAR, CNST}; /*типы узлов*/struct node { enum tpn tp_node; /* тип узла */ int cop; /* тип операции или номер функции, константы, переменной */ node *al, *ar; /* указатели на подчиненные узлы */ } ;

а) Составить функцию для обхода дерева, заданного указателем на его корень, в порядке : левое поддерево, корень, правое поддерево. Выводить на экран (печать) тип узла и значение поля cop в узле.

void lkp ( node *root);

б) В условиях пункта (а) выполнить обход дерева в порядке : корень, левое поддерево, правое поддерево.

void klp ( node *root );

в) В условиях пункта (а) выполнить обход дерева в порядке : левое поддерево, правое поддерево, корень.

void lpk ( node *root);

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

void deltree ( node *root);

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

а)Составить функцию для вывода сообщения об ошибке на экран. Входной параметр код (номер) ошибки. Файл с сообщениями об ошибках открывается в главной программе.

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

14. Составить функцию для решения системы линейных уравнений


Дата добавления: 2019-07-15; просмотров: 207; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!