Реализация каждой задачи должна удовлетворять общим требованиям, изложенным ранее для задания 1. В частности, программа размещается в нескольких файлах, используется заголовочный файл для прототипов функций, запись кода соответствует общепринятым стилевым требованиям и т.п.
Специфика данного задания. Программа должна считывать исходные данные из файла и далее создавать необходимые для работы массивы в точности на используемое количество элементов, выделяя память с помощью функций типа malloc или оператора new. По окончании решения задачи эти ресурсы (память) должны освобождаться с помощью функций free или оператора delete. Не разрешается захватывать память ``с запасом'', указывая некоторую больщую длину массива.
Как правило (если в условии не указано иначе), вся работа должна происходить на базе единственного массива с исходными данными. Не разрешается создавать дополнительные рабочие массивы, длина которых зависит от количества исходных данных.
Хотя это и не требуется в обязательном порядке, по возможности следует реализовывать эффективные алгоритмы, сложность которых пропорциональна N или N log N, где N - количество чисел в массиве данных.
У каждой задаче должны быть подготовлены тесты, т.е. некоторое количество файлов с данными, на которых
и будет проверяться работоспособность программы. Тестовые данные должны проверять базовые свойства реализации, т.е.
решение задачи в корректном случае и реакции на некорректное состояние исходных данных.
Перед сдачей задания преподавателю студент должен самостоятельно проверить свою программу на
соответствующем наборе тестов. Можно предусмотреть ввод имени файла с данными в начале работы программы, чтобы
иметь возможность быстро запускать тесты для разных заранее подготовленных данных.
FILE *fin;
char filename[256];
printf("data file name >");
sscanf("%s", filename);
fin = fopen(filename, "r");
...