Warning
This page is located in archive.

Lab 07 - Dynamická alokace a načítání vstupu

Procvičovaná témata

  • Funkce malloc, realloc, free
  • Dynamická alokace
  • Příprava na hledání textu v souborech

Úkoly

Naimplementujte program, který bude načítat vstupní řetězec ze standardního vstupu, případně ze souboru, pokud je zadán vstupní argument. Vstupní řetězec odpovídá náhodné DNA sekvenci, generované například programem dgen.c. Ve vstupním řetězci detekujte jeden ze zvolených stop codonů TAG, TAA nebo TGA a vstupní řetězec rozdělte na samostatné řádky, které vytiskněte na standardní výstup, případně do souboru, který může být zadán jako druhý argument programu. Detekujte chybové stavy a reportujte chyby na standardní chybový výstup. Postupujte podle následujících kroků.

  1. Identifikujte základní funkce, které v programu budete potřebovat, např. definice chyboých stavů, načítání vstupních argumentů, načítání řetězce, detekci řetězce, reportování chyb, atd.
  2. Zvolte si jeden ze stop codonů.
  3. Definujte si možné chybové stavy a zprávy reportující příslušnou chybu.
  4. Napište funkci pro načítení celého vstuptu s využitím dynamické alokace, např. realloc() a detekujte přidělení paměti.
  5. Navrhněte funkce, které budou v načteném řetězci detekovat zvolený stop codon. Definujte rozhraní a logiku programu. Můžete se například inspirovat funkcí strstr() z knihovny <string.h>. K řešení HW 5 může být výhodnější implementovat vlastní funkci.
  6. Implementujte navržený program s využitím stdin a stdout.
  7. Program otestujte a vyzkoušejte přesměrování výstupu programu dgen, např. ./dgen | ./main.
Inspirujte se případně upravte přiložený program dgen.c.

Rozšíření

  • Program rozšiřte o zpracování argumentů programu specifikující vstupní a výstupní soubory. Detekujte chyby při načítání a zápisu z/do souboru.
  • Rozšiřte program výpis počtů detekovaných stop codonů.
  • Rozšiřte program o uvažování všech tří možných stop codonů TAG, TAA nebo TGA.
  • Můžete ošetřit konce nových řádku na vstupu. V základní zadání je neuvažujeme.
courses/bab36prga/labs/lab07.txt · Last modified: 2024/02/14 00:33 by faiglj