Git Product home page Git Product logo

idz_1_os's Introduction

ИДЗ 1

Шаповалов Артём Сергеевич | БПИ-217 | Вариант 21

Задание

Разработать программу, осуществляющую нахождение суммы всех цифр в заданной ASCII-строке.

Решение на 4 балла:

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

Код программы с соответствующими комментариями sum_4.c находится в папке "4".

Соблюдение требований:

  1. Общая схема решаемой задачи.

     ┌───────────┐     ┌───────────┐     ┌───────────┐
     │ input.txt ├────>│  Child 1  ├────>│ channel 1 ├────>┐
     └───────────┘     ├───────────┤     ├───────────┤     │
                       │ Read data ├────>│ Write data│     │
                       └───────────┘     └───────────┘     │
                                                           ├────>┌─────────────┐
                                                           │     │ Child 3     │
                       ┌───────────┐     ┌───────────┐     │     ├─────────────┤
                       │           │<────┤ channel 2 │<────┘     │ Write sum to│
                       │  Child 2  │     ├───────────┤           │   output    │
                       │ Sum digits│     │ Write sum │           └─────────────┘
                       └───────────┘     └───────────┘
    
    

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

    Первый дочерний процесс открывает входной файл input.txt и читает из него данные в буфер. Затем он записывает данные в канал 1 и завершает свое выполнение.

    Второй дочерний процесс читает данные из канала 1 и вычисляет сумму цифр в этих данных. Затем он записывает сумму в канал 2 и завершает свое выполнение.

    Третий дочерний процесс читает сумму из канала 2 и записывает ее в выходной файл output.txt. Затем он завершает свое выполнение.

  2. Для задания имен входного и выходного файлов используются аргументы командной строки.

    ./sum_4 input1.txt output1.txt
    
  3. Ввод и вывод данных при работе с файлами осуществляется через системные вызовы read и write.

  4. Размеры буферов для хранения вводимых данных и результатов обработки раны 5000 байт.

  5. Представлен набор (не менее пяти) текстовых файлов, на которых проводилось тестирование программы. Тесты были составлены с учетом того, чтобы проверить не только фактическую точность подсчёта, но и выявить возможные ошибки.

    Файлы с тестами (в соответствующей папке "4"):

  6. Для каждого из тестовых файлов представлен файл, полученный в результате работы программы:

    Файлы с результатами работы программы (в соответствующей папке "4"):

Решение на 5 баллов:

Разработка программы, в которой взаимодействие между тремя дочерними процессами осуществляется через именован- ные каналы.

Код программы с соответствующими комментариями sum_5.c находится в папке "5".

Соблюдение требований:

  1. Общая схема решаемой задачи.

    ┌───────────────┐     ┌───────────────┐     ┌───────────────┐
    │  Parent       ├────►│  Child 1      ├────►│  Pipe 1       │
    │               │     │  (Write)      │     │               │
    └───┬───────────┘     └───────────────┘     └─────┬─────────┘
        │    ┌───────────────┐     ┌───────────────┐  │
        └────┤               │     │               │  │
             │  Child 2      ├────►│  Pipe 2       ├──┘
             │  (Read/Write) │     │               │
             └───────────────┘     └───┬───────────┘
                                       │
                             ┌─────────┴───────────┐
                             │  Child 3            │
                             │  (Read)             │
                             └────────┬────────────┘
                                      │
                                      ▼
                             ┌─────────────────────┐
                             │  Output File        │
                             └─────────────────────┘
    
    

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

  2. Для задания имен входного и выходного файлов используются аргументы командной строки.

    ./sum_5 input1.txt output1.txt
    
  3. Ввод и вывод данных при работе с файлами осуществляется через системные вызовы read и write.

  4. Размеры буферов для хранения вводимых данных и результатов обработки раны 5000 байт.

  5. Представлен набор (не менее пяти) текстовых файлов, на которых проводилось тестирование программы. Тесты были составлены с учетом того, чтобы проверить не только фактическую точность подсчёта, но и выявить возможные ошибки.

    Файлы с тестами (в соответствующей папке "5"):

  6. Для каждого из тестовых файлов представлен файл, полученный в результате работы программы:

    Файлы с результатами работы программы (в соответствующей папке "5"):

Решение на 6 баллов:

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

Код программы с соответствующими комментариями sum_6.c находится в папке "6".

Соблюдение требований:

  1. Общая схема решаемой задачи.

         ┌───────────┐     ┌───────────┐     ┌───────────┐
         │ input.txt ├────>│  Child 1  ├────>│ channel 1 ├────>┐
         └───────────┘     ├───────────┤     ├───────────┤     │
                           │ Read data ├────>│ Write data│     │
                           └───────────┘     └───────────┘     │
                                                               ├────>┌─────────────┐
                                                               │     │ Child 1     │
                           ┌───────────┐     ┌───────────┐     │     ├─────────────┤
                           │           │<────┤ channel 2 │<────┘     │ Write sum to│
                           │  Child 2  │     ├───────────┤           │   output    │
                           │ Sum digits│     │ Write sum │           └─────────────┘
                           └───────────┘     └───────────┘
        
    

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

  2. Для задания имен входного и выходного файлов используются аргументы командной строки.

    ./sum_6 input1.txt output1.txt
    
  3. Ввод и вывод данных при работе с файлами осуществляется через системные вызовы read и write.

  4. Размеры буферов для хранения вводимых данных и результатов обработки раны 5000 байт.

  5. Представлен набор (не менее пяти) текстовых файлов, на которых проводилось тестирование программы. Тесты были составлены с учетом того, чтобы проверить не только фактическую точность подсчёта, но и выявить возможные ошибки.

    Файлы с тестами (в соответствующей папке "6"):

  6. Для каждого из тестовых файлов представлен файл, полученный в результате работы программы:

    Файлы с результатами работы программы (в соответствующей папке "6"):

Решение на 7 баллов:

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

Код программы с соответствующими комментариями sum_7.c находится в папке "7".

Соблюдение требований:

  1. Общая схема решаемой задачи.

         ┌───────────┐     ┌───────────┐     ┌───────────┐
         │ input.txt ├────>│  Child 1  ├────>│ channel 1 ├────>┐
         └───────────┘     ├───────────┤     ├───────────┤     │
                           │ Read data ├────>│ Write data│     │
                           └───────────┘     └───────────┘     │
                                                               ├────>┌─────────────┐
                                                               │     │ Child 1     │
                           ┌───────────┐     ┌───────────┐     │     ├─────────────┤
                           │           │<────┤ channel 2 │<────┘     │ Write sum to│
                           │  Child 2  │     ├───────────┤           │   output    │
                           │ Sum digits│     │ Write sum │           └─────────────┘
                           └───────────┘     └───────────┘
        
    

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

  2. Для задания имен входного и выходного файлов используются аргументы командной строки.

    ./sum_7 input1.txt output1.txt
    
  3. Ввод и вывод данных при работе с файлами осуществляется через системные вызовы read и write.

  4. Размеры буферов для хранения вводимых данных и результатов обработки раны 5000 байт.

  5. Представлен набор (не менее пяти) текстовых файлов, на которых проводилось тестирование программы. Тесты были составлены с учетом того, чтобы проверить не только фактическую точность подсчёта, но и выявить возможные ошибки.

    Файлы с тестами (в соответствующей папке "7"):

  6. Для каждого из тестовых файлов представлен файл, полученный в результате работы программы:

    Файлы с результатами работы программы (в соответствующей папке "7"):

idz_1_os's People

Contributors

shapovv avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.