{"id":22375269,"url":"https://github.com/zezav-cz/MatrixCalculator","last_synced_at":"2025-10-15T08:31:00.591Z","repository":{"id":149457664,"uuid":"479729022","full_name":"dvojak-cz/MatrixCalculator","owner":"dvojak-cz","description":"CLI app fro basic matrix operations","archived":false,"fork":false,"pushed_at":"2023-04-13T13:10:57.000Z","size":24,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-12-04T21:20:11.188Z","etag":null,"topics":["cpp","linear-algebra","matrix","matrix-calculations"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dvojak-cz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-09T13:06:47.000Z","updated_at":"2024-08-07T13:08:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"b49328e1-5d85-42ff-8fad-5b969dc14a48","html_url":"https://github.com/dvojak-cz/MatrixCalculator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvojak-cz%2FMatrixCalculator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvojak-cz%2FMatrixCalculator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvojak-cz%2FMatrixCalculator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvojak-cz%2FMatrixCalculator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dvojak-cz","download_url":"https://codeload.github.com/dvojak-cz/MatrixCalculator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":236595168,"owners_count":19174372,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","linear-algebra","matrix","matrix-calculations"],"created_at":"2024-12-04T21:19:55.717Z","updated_at":"2025-10-15T08:31:00.219Z","avatar_url":"https://github.com/dvojak-cz.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Matrix calculator (téma: Maticová kalkulačka)\nAutor: Troják Jan - trojaj12 _\u003ctrojaj12@fit.cvut.cz\u003e_\n## Zadání z progtestu\nVytvořte aplikaci implementující maticovou kalkulačku.\n\nKalkulačka musí implementovat:\n\n    - práci s maticemi různé velikosti\n    - základní operace: sčítání, odčítání, násobení, transpozice\n    - sloučení (3x3 sloučeno s 3x3 =\u003e matice 6x3) a oříznutí (např. pouze levá polovina matice 6x3 =\u003e levá 3x3)\n    - pro čtvertcové matice navíc výpočet inverze\n    - efektivní paměťovou reprezentaci (pro řídké matice se nehodí 2D pole, pro husté matice naopak)\n    - funkce pro výpočet determinantu, určení hodnosti, Gaussova eliminační metoda\n    - proměnné (uložení matice do proměnné, načítání matice ze vstupu, využití proměnné ve výpočtu)\n\n## Vlastní upravené zadání\nVytvořte aplikaci implementující maticovou kalkulačku.\n\nKalkulačka bude zvládat:\n\n    - základní matematické operace (sčítání, odčítání, násobení)\n    - základní práce s maticemi (transpozice, spojení dvou matic, oříznout matice)\n    - výpočet hodnosti, determinantu a inverzní matice (pokud možno)\n    - převádět matice do horního stupňovitého tvaru (HST)\n    - implementace GEMu s komentářem a bez\n    - ukládat matice do proměnných\n    - načítat/ukládat paměť kalkulačky z/do souborů\n\n## Rozvaha implementace\nAplikace bude rozdělena do 3 hlavních částí. Konkrétně do částí:\n\n### UI\nTato část bude implementovat uživatelské rozhraní. Tato část bude obsahovat celkem 2 třídy.\n\n - Třída **CUserInterface** bude zpostředkovávat komunikaci s uživatelem. Bude zpracovávat vstupy a výstupy.\n - Třída **UIText** bude statická třída, která bude uchovávat texty, které bude *CUserInterface* používat.\n\n\n### Calculator\nTato část bude implementovat samotnou kalkulačku. Třída bude obsahovat pouze jednu třídu.\n\n - Třída **CCalculator** bude ukládat samotné matice a pracovat s nimi. Dále bude umožňovat uložit/načíst svou paměť ze/do souboru.\n\n### Matrix\nPoslední část se bude starat o reprezentaci samotných matic a vnitřní počítaní s nimi. Tato část bude obsahovat celkem 4 třídy.\n\n - Abstraktní třída **CMatrix** tato třída se bude navenek chovat jako třída pracující s maticemi.\n - Abstraktní třída **CSparseMatrix** tato třída bude potomkem třídy *CMatrix* a bude reprezentovat tzv. řidké matice.\n   Řidké matice jsou matice, které z velké části obsahují nuly. U těchto matic je zbytečné uchovávat tyto opakující se nuly, proto budou ukládány pouze pozice, které nuly nejsou.\n - Abstraktní třída **CDenseMatrix** tato třída bude potomkem třídy *CMatrix* a bude reprezentovat matice, které nebudou reprezentovány jako *CSparseMatrix*.\n - Třída **CLinear** tato třída bude implementovat složitější operace s maticemi, konkrétně Gem, výpočet determinantu, hodnosti a inverzní matice.\n ll\n\n## Použití polymorfismu\nPolymorfismus bude použit při vývoji *CMatrix*, konkrétně se bude využívat pro implementaci funkcí: (informace o jednotlivých\nfunkcí můžete najít v hlavičkovém souboru)\n\n    - T                             CMatrix::operator ()        ( unsigned row , unsigned col )\n    - std::shared_ptr \u003c CMatrix \u003e   CMatrix::mergeHorizontally  ( const CMatrix \u0026 )\n    - std::shared_ptr \u003c CMatrix \u003e   CMatrix::mergeVertically    ( const CMatrix \u0026 )\n    - std::shared_ptr \u003c CMatrix \u003e   CMatrix::Clone              ( )\n    - std::shared_ptr \u003c CMatrix \u003e   CMatrix::Transpose          ( )\n    - void                          CMatrix::CountNumberOfNulls ( )\n    - std::shared_ptr \u003c CMatrix \u003e   CMatrix::CreateNew          ( std::deque \u003c T \u003e \u0026 )\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzezav-cz%2FMatrixCalculator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzezav-cz%2FMatrixCalculator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzezav-cz%2FMatrixCalculator/lists"}