Materials for seminars on the course «Computer Science» based on the study of C. © 2013 80-101b, Department 806, MAI
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
cp01/hints
cp02/hints
cp03
cp04/flt_epsilon
cp06
cp07
cp08
cp09/cppsort
ex01
ex02
ws08
ws09
ws11
ws12
ws13
ws14
ws15
ws21
ws22
ws23/simple-tree
ws24
ws25
.gitignore
README.md

README.md

Что это?

Материалы к семинарам по курсу «Информатика». Преподаются на основе изучения языка Си. © 2013-2014 8О-101Б, кафедра 806, МАИ.

Структура

ws08 (Введение в C)

Материалы для того, чтобы начать программировать на Си.

Примеры

calc-step-by-step

Последовательное написание простого консольного калькулятора.

calc-with-make

Использование подключаемых файлов и сборщика make на примере консольного калькулятора.

eratosthenes

Поиск простых числе через решето Эратосфена.

handle-chars

Пример построчного символьного ввода на примере аналогов cat и wc.

hello-world

Простой Hello World!. В конфигурации Makefile рассмотрены различные варианты компиляции.

indicator

Консольный индикатор выполнения ("палочка" как во FreeBSD).

ws09 (Итеративные алгоритмы)

Итеративные алгоритмы, движение точки. http://k806.ru/infolabs9/?infosub

Задача

Составить и отладить программу на языке Си итеративного характера с целочисленными рекуррентными соотношениями, задающими некоторое регулярное движение точки в целочисленной системе координат (i, j) с дискретным временем k и динамическим параметром движения l. Результатом работы программы выводится в следующем виде: попадание точки в указанную замкнутую область не более чем за 50 шагов (вывести Yes или No); на следующей строке значения координат i, j, значение динамического параметра l на момент окончания движения; время окончания движения (номер шага, на котором движение было прекращено), если точка попала в область, затем перевод строки.

Решение

sc09 (Реализация варианта № 9)

sc26 (Реализация варианта № 26)

Простая реализация двух версий программы — с использованием директив препроцессора (hardfighter.c) и без них (fighter.c).

fighter

Использование подключаемых файлов и сборщика make на примере варианта № 26.

ws11 (Лексический анализ)

Простейшие приемы лексического анализа. http://k806.ru/infolabs11/?infosub

Задача

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

Решение

indentifiers-long

Пример программы, которая считает, количество слов — правильных идентификаторов языков Си.

ws12 (Целые числа)

Техника работы с целыми числами. Системы счисления. http://k806.ru/infolabs12/?infosub

Задача

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

Решение

in-non-decreasing

Программа, проверяет упорядоченность цифр числа по неубыванию.

ws13 (Множества)

http://k806.ru/infolabs13/?infosub

Задача

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

Решение

curr-prev-letters

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

eouy

Пример программы, которая определяет,
есть ли во входном потоке символы 'e', 'o', 'u', 'y'.

ws14 (Линеаризация матрицы)

Вложенные циклы с параметрами. Обход и линеаризация матрицы. http://k806.ru/infolabs14/?infosub

Задача

Составить программу ввода квадратной матрицы и печати в строку всех ее элементов в заданном ниже порядке обхода. Тип элементов матрицы — целый. Решить задачу на языке Си с применением вложенных циклов с переменными границами. На вход подается размерность матрицы — одно число -1 < n < 101, за ним элементы матрицы через пробелы или переводы строк в порядке слева направо сверху вниз.

Пример входных данных:

4
-1  2  3 99
23  1  1 13
14 15 16 17
-9 -7 -5 -3

Выходные данные:

-1 2 3 99 13 17 -3 -5 -7 -9 14 23 1 1 16 15

Решение

wnloops (Без вложенных циклов)

Программа разворачивает матрицу в заданном ниже порядке обхода.

7 13 14 16
6  8 12 15
2  5  9 11
1  3  4 10

ws15 (Обработка матриц)

http://k806.ru/infolabs15/

Задача

Составить программу на языке Си, производящую обработку квадратной матрицы порядка NxN, где -1 < N < 101, из целых чисел, вводимой из стандартного входного текстового файла. Тестирование провести для пакета тестов из нескольких матриц различного порядка.

Решение

deg90back

Поворот матрицы на 90 градусов против часовой стрелки.

fmax2sum

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

unishift

Циклический сдвиг элементов матрицы в строчном представлении на S элементов, S тоже считывает из стандартного входного текстового файла (stdin).