Т.В. Руденко - Сборник задач и упражнений по языку Си, страница 10
Описание файла
PDF-файл из архива "Т.В. Руденко - Сборник задач и упражнений по языку Си", который расположен в категории "". Всё это находится в предмете "операционные системы" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 10 страницы из PDF
Значения a, b и n вводятся с клавиатуры. Таблица выводится в стандартный потоквывода.8.24. Пусть есть исполняемый файл func со стандартным вводомвыводом, вычисляющий значение функции f в точке x. Результат работы - значения x и f(x). Написать программу, использующую этот файл для нахождениятаблицы значений f(x) на отрезке [a,b] в точках xi =a+i∗h, i = 0,1,...,n; h = ( b-a )/n.Значения a, b и n задаются в командной строке. Таблица записывается в файлf.tab.8.25. Пусть есть исполняемый файл modify, который удаляет в текстовом файле все четные строки (строки нумеруются с единицы; пустые строкитоже анализируются).
Имя файла задается в командной строке при вызовеmodify. Написать программу, использующую modify для обработки файлов,имена которых задаются в командной строке. Если первая строка файла совпадает со второй его строкой, то в файле оставить только нечетные строки; иначефайл не изменять. Анализ файлов выполняет основной процесс, изменения вфоновом режиме осуществляет modify (для каждого файла – свой экземплярmodify).8.26. Пусть есть исполняемый файл modify, который удаляет в текстовом файле все четные строки (строки нумеруются с единицы; пустые строкитоже анализируются). Имя файла задается в командной строке при вызовеmodify.
Написать программу, использующую modify для обработки файлов,45имена которых задаются в командной строке. Если после сортировки файла, состоящего из нечетных строк исходного файла, оказалось, что каждая очереднаястрока начинается со следующей по алфавиту буквы (начиная с буквы ‘a’ до буквы ‘z’ и далее циклически), то имя этого файла выдать на экран, иначе - файлудалить. Для сортировки использовать команду sort.8.27. Написать программу, определяющую количество литер, слов истрок в тексте, состоящем из нечетных N-ок байт заданного файла. Для подсчета количества литер, слов и строк использовать команду wc.
Результаты поместить в файл. Имена файлов и величина N задаются в командной строке.8.28. Написать программу, сортирующую по алфавиту строки текста,состоящего из четных строк данного файла. Для сортировки использовать команду sort. Результаты сортировки поместить в файл. Имена файлов задаются вкомандной строке.8.29. Написать программу, определяющую количество литер, слов истрок в тексте, состоящем из тех строк заданного файла, которые содержат данную строку-шаблон в качестве подстроки. Используйте команды wc и grep.
Результаты поместить в файл. Имена файлов и строка-шаблон задаются в командной строке.8.30. Написать программу, которая выводит на экран имена файлов fk,содержащих не менее nk строк, включающих заданную строку strk в качествеподстроки. Имена файлов fk, величины nk и строки-шаблоны strk задаются в командной строке в виде f1 n1 str1 f2 n2 str2 ... fk nk strk.
Использовать команды grepи wc.8.31. Пусть есть исполняемый файл file_dbl, который удваивает в обрабатываемом файле каждую очередную порцию из 128 байт. Имя файла задаётсяв командной строке при запуске file_dbl. Написать программу, использующуюfile_dbl для обработки файлов, имена которых задаются в командной строке.Если длина файла меньше 1024 байт, то увеличить его размер с помощьюfile_dbl, иначе оставить без изменения.
Анализ файлов выполняет основнойпроцесс, изменения в фоновом режиме осуществляет file_dbl (для каждого файла свой экземпляр file_dbl).8.32. Пусть файл содержит текст и команды форматирования. Эти команды располагаются на отдельных строках и начинаются символами ./. Написать программу для подсчета символов в тексте (без учета символов форматирующих команд). Головной процесс анализирует содержимое файла и передаетвспомогательному процессу текст без форматирующих команд.
Вспомогательный процесс подсчитывает количество символов в получаемом тексте и возвращает полученный результат головному процессу. Имя файла головной процесс получает из командной строки.8.33. Что делает программа?#include <stdio.h>46void Start ( char *name, int in, int out){ if (fork() == 0){ dup2(in,0);dup2(out,1);close(in); close(out);execlp(name,name,0);}}main(int argc, char *argv[]){ int i, fd[2], in=0, out;for ( i = 1; i < argc-1; i++){ pipe(fd); out=fd[1];Start(argv[i], in, out);close(in); close(out);in = fd[0];}out = 1;Start(argv[ i ], in, out);}8.2.2 Сигналы. Фоновые процессы.8.34. Написать программу игры в "пинг-понг" двух процессов через дваканала. Первый процесс посылает второму 1, второй первому – 2, первый второму – 3, второй первому – 4 и т.д.
Игра завершается при нажатии клавишCtrl+C.8.35. Написать программу игры в "пинг-понг" двух процессов (см. предыдущую задачу) через один канал. Для синхронизации использовать сигнал.Игра завершается при нажатии клавиш Ctrl+C.8.36. Написать программу игры в "волейбол" трех процессов: первыйпосылает второму "1", второй третьему - "2", третий первому - "3", первый второму - "4" и т.д.
Игра завершается при нажатии клавиш Ctrl+C. Работу процессов синхронизировать с помощью сигналов.8.37. Написать программу игры в "волейбол" трех процессов (см. предыдущую задачу). Игра завершается при нажатии клавиш Ctrl+C. Работу процессов синхронизировать с помощью канального чтения.8.38. Написать программу игры одного процесса с двумя другими: первый процесс посылает второму 1, затем третьему 'a'; после этого он получает отвторого 2, затем от третьего - 'b.' На следующем шаге первый посылает второму 3, третьему - 'c'; получает от второго 4, от третьего - 'd' и т.д. именно в такойпоследовательности с увеличением числа и изменением символа от 'a' до 'z' циклически.
Игра завершается при нажатии клавиш Ctrl+C. Для синхронизации использовать сигналы.478.39. Написать программу, определяющую самую длинную строку в заданном файле. Если таких строк несколько, то в качестве результата выдатьпервую из них. Обеспечить возможность работы программы в фоновом режимеи в обычном (с обработкой прерываний по Ctrl+C: при каждом нажатии этихклавиш программа должна выдавать промежуточный результат - самую длинную из уже просмотренных строк). Имя файла задается в командной строке.8.40.
Написать программу, заполняющую файл N строками. Аргументы(имя файла, количество строк N и строка-заполнитель) задаются в команднойстроке. Обеспечить возможность работы программы в фоновом режиме и вобычном (с обработкой прерываний по Ctrl+C: при каждом нажатии этих клавиш программа должна выдавать промежуточный результат - количество строк,записанных в файл к этому моменту).8.41.
В файле записана непустая последовательность целых чисел (целое число – это непустая последовательность десятичных цифр, возможно начинающаяся знаком + или - ). Написать программу для нахождения наибольшего из этих чисел. Во время ее работы каждую секунду выдается промежуточныйрезультат - наибольшее из уже просмотренных чисел. Имя файла задается в командной строке.8.42. Даны два файла, строки в которых упорядочены по алфавиту. Написать программу, осуществляющую слияние этих двух файлов в третий, строки которого тоже упорядочены по алфавиту.
Имена всех трех файлов задаются вкомандной строке. Обеспечить возможность работы программы в фоновом и вобычном режиме (с обработкой прерываний по Ctrl+C: первое нажатие этихклавиш не влияет на работу программы; все последующие нажатия вызываютпечать количества литер, слов и строк в частично сформированном файлерезультате. Для подсчета количества литер, слов и строк использовать командуwc).8.43. Написать программу слияния двух файлов в третий. Файл результат формируется чередованием N-ок символов первого и второго файлов(если один из файлов длиннее другого, то его оставшаяся часть приписывается вконец файла-результата).
Имена файлов и величина N задаются в команднойстроке. Исходные файлы читаются разными процессами; эти же процессы поочереди записывают по N байт из обрабатываемых ими файлов в файлрезультат. Синхронизацию их работы организовать с помощью сигналов.8.44. Написать программу нахождения корня уравнения f(x) = 0 с точностью eps > 0 на некотором отрезке [a,b] (любым известным Вам методом: деления отрезка пополам, хорд, касательных, комбинированным), которая послекаждого нажатия клавиш Ctrl+C выдает очередное приближение и запрос одальнейших действиях:C - продолжать вычисления;A - закончить работу программы;R - начать поиск корня этого же уравнения на другом отрезке (новыезначения a и b вводятся с клавиатуры).48Затем выполняет эти действия.