Cvičný zkouškový příklad Zadání Napište program calc, který jako argumenty dostane dva soubory (dále levý a pravý). V levém souboru jsou řádky tvaru x op y , kde x a y jsou čísla, která jsou v rozsahu int u, a op může být + , - , * nebo / . calc vypočítá matematický výraz z každého řádku v levém souboru, výsledky si seřadí od nejmenšího po největší, a zapíše je na konec pravého souboru, každý výsledek na nový řádek. Zároveň na standardní výstup vypíše počet načtených řádků. Pokud calc selže z důvodu nedostatku paměti, nebude mu dovoleno otevřít nějaký ze souborů, nebo bude levý soubor obsahovat řádky v nesprávném formátu, vypíše na standardní chybový výstup relevantní chybovou hlášku, korektně uzavře všechny otevřené soubory, uvolní dynamicky alokovanou paměť a skončí s nenulovou návratovou hodnotou. V případě selhání by calc neměl měnit pravý soubor. Nápověda Můžou se vám hodit funkce fscanf() a qsort() . Příklad chování Mějme soubory input.txt a output.txt . Po zavolání ./calc input.txt output.txt se na standardní výstup vypíše 5, input.txt se nezmění, a output.txt bude vypadat následovně: input.txt 5 + 2 4 – 1 5 * 8 100 / 25 -50 + 4 output.txt A word 156 !ů,§pef output.txt A word 156 !ů,§pef -46 3 4 7 40