Практика 5 — различия между версиями
Материал из SEWiki
(Новая страница: «Задание выполняется на базе предыдущего Написать программу, которая работает с командно…») |
|||
| Строка 3: | Строка 3: | ||
Написать программу, которая работает с командной строкой (ввод всегда без ошибок) | Написать программу, которая работает с командной строкой (ввод всегда без ошибок) | ||
| − | ./main {loadtxt | loadbin} infile {savetxt | savebin} outfile | + | === Входные параметры === |
| + | ./main {loadtxt | loadbin} infile {savetxt | savebin} outfile | ||
| + | ./main {loadtxt | loadbin} infile print “fmt” | ||
| + | ./main {loadtxt | loadbin} infile count | ||
| − | + | #'''loadtxt''' загрузить из текстового файла | |
| − | + | #'''loadbin''' загрузить из двоичного файла | |
| − | + | #'''savetxt''' записать в текстовый файл | |
| − | + | #'''savebin''' записать в двоичный файл | |
| − | loadtxt загрузить из текстового файла | + | #'''print''' “fmt” вывести список на экран в формате fmt (пример fmt: “(%d %d)”, “[%#x %#x]\n”) |
| − | + | #'''count''' вывести размер списка | |
| − | loadbin загрузить из двоичного файла | + | |
| − | + | ||
| − | savetxt записать в текстовый файл | + | |
| − | + | ||
| − | savebin записать в двоичный файл | + | |
| − | + | ||
| − | print “fmt” вывести список на экран в формате fmt (пример fmt: “(%d %d)”, “[%#x %#x]\n”) | + | |
| − | + | ||
| − | count вывести размер списка | + | |
| + | === Замечания === | ||
Файлы всегда правильного формата | Файлы всегда правильного формата | ||
| Строка 29: | Строка 24: | ||
Hint: в структуре тип int x; при чтение/записи надо работать с битами с помощью &, |, <<, >> | Hint: в структуре тип int x; при чтение/записи надо работать с битами с помощью &, |, <<, >> | ||
| − | Требование по реализации count и print | + | === Требование по реализации count и print === |
| + | Использовать указатель на функцию. | ||
| + | |||
| + | Для этого реализуем вспомогательную функцию: | ||
| + | |||
| + | void applyFunctionToEachNode( intrusive_list_t* l, void (*f)(...), ...) | ||
| − | + | Которая проходит по всему листу и вызывает f для каждого узла. | |
Версия 00:40, 15 октября 2014
Задание выполняется на базе предыдущего
Написать программу, которая работает с командной строкой (ввод всегда без ошибок)
Входные параметры
./main {loadtxt | loadbin} infile {savetxt | savebin} outfile
./main {loadtxt | loadbin} infile print “fmt”
./main {loadtxt | loadbin} infile count
- loadtxt загрузить из текстового файла
- loadbin загрузить из двоичного файла
- savetxt записать в текстовый файл
- savebin записать в двоичный файл
- print “fmt” вывести список на экран в формате fmt (пример fmt: “(%d %d)”, “[%#x %#x]\n”)
- count вывести размер списка
Замечания
Файлы всегда правильного формата
Текстовый файл: каждый элемент списка на новой строке; числа x и y разделены пробелом
Бинарный файл: каждое число занимает не больше 3 байт
Hint: в структуре тип int x; при чтение/записи надо работать с битами с помощью &, |, <<, >>
Требование по реализации count и print
Использовать указатель на функцию.
Для этого реализуем вспомогательную функцию:
void applyFunctionToEachNode( intrusive_list_t* l, void (*f)(...), ...)
Которая проходит по всему листу и вызывает f для каждого узла.