Практика 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
  
./main {loadtxt | loadbin} infile print “fmt”
+
#'''loadtxt''' загрузить из текстового файла
 
+
#'''loadbin''' загрузить из двоичного файла
./main {loadtxt | loadbin} infile count
+
#'''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)(...), ...)
  
void apply( intrusive_list_t* l, void (*f)(XXX))
+
Которая проходит по всему листу и вызывает f для каждого узла.

Версия 00:40, 15 октября 2014

Задание выполняется на базе предыдущего

Написать программу, которая работает с командной строкой (ввод всегда без ошибок)

Входные параметры

./main {loadtxt | loadbin} infile {savetxt | savebin} outfile
./main {loadtxt | loadbin} infile print “fmt”
./main {loadtxt | loadbin} infile count
  1. loadtxt загрузить из текстового файла
  2. loadbin загрузить из двоичного файла
  3. savetxt записать в текстовый файл
  4. savebin записать в двоичный файл
  5. print “fmt” вывести список на экран в формате fmt (пример fmt: “(%d %d)”, “[%#x %#x]\n”)
  6. count вывести размер списка

Замечания

Файлы всегда правильного формата

Текстовый файл: каждый элемент списка на новой строке; числа x и y разделены пробелом

Бинарный файл: каждое число занимает не больше 3 байт

Hint: в структуре тип int x; при чтение/записи надо работать с битами с помощью &, |, <<, >>

Требование по реализации count и print

Использовать указатель на функцию.

Для этого реализуем вспомогательную функцию:

void applyFunctionToEachNode( intrusive_list_t* l, void (*f)(...), ...)

Которая проходит по всему листу и вызывает f для каждого узла.