# icesun39/lab1_dotnet architecture

> Architecture diagram of the GitHub repository icesun39/lab1_dotnet, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/icesun39/lab1_dotnet
- Repository: https://github.com/icesun39/lab1_dotnet

## Overview

This is a Windows Forms educational application for numerical tabulation and array/math lab exercises. The visible entry point opens the tabulation form; its menu exposes one-dimensional arrays, two-dimensional arrays, and three Lab 2 tasks. The two-dimensional form demonstrably delegates duplicate and minimum calculations to its array helper. Other forms and their event-handler wiring were not sampled, so those interactions are represented as capabilities without inferred call edges.

Main entry points: [`lab1/Program.cs`](https://github.com/icesun39/lab1_dotnet/blob/master/lab1/Program.cs) (Application entry), [`lab1/lab1/twodim_array/Form_twodimen_array.cs`](https://github.com/icesun39/lab1_dotnet/blob/master/lab1/lab1/twodim_array/Form_twodimen_array.cs) (Two-dimensional form), [`lab1/lab1/tabulate/Form_tabulate.cs`](https://github.com/icesun39/lab1_dotnet/blob/master/lab1/lab1/tabulate/Form_tabulate.cs) (Tabulation form), [`lab1/lab1/onedim_array/Form_onedimen_array.cs`](https://github.com/icesun39/lab1_dotnet/blob/master/lab1/lab1/onedim_array/Form_onedimen_array.cs) (One-dimensional form)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application shell"]
  node_program["Application entry<br/>[Program.cs]"]
end

subgraph group_tabulation["Tabulation"]
  node_tabulate_ui["Tabulation form<br/>[Form_tabulate.cs]"]
  node_tabul["Tabulation logic<br/>[Tabul.cs]"]
end

subgraph group_arrays["Array exercises"]
  node_onedim_ui["One-dimensional form"]
  node_free_drop["Free-fall calculation<br/>[CalcFreeDrop.cs]"]
  node_twodim_ui["Two-dimensional form"]
  node_duplicate["Matrix duplicate helper<br/>[findDuplicate.cs]"]
end

subgraph group_lab2["Lab 2 calculations"]
  node_lab2_ui["Lab 2 form<br/>[lab2.cs]"]
  node_task1["Divisibility count"]
  node_task2["Range sum"]
  node_task3["Trapezoid calculations"]
end

node_user(("Learner"))

node_user -->|"launches"| node_program
node_program -->|"opens"| node_tabulate_ui
node_user -->|"uses"| node_tabulate_ui
node_user -->|"opens exercise"| node_onedim_ui
node_user -->|"opens exercise"| node_twodim_ui
node_twodim_ui -->|"calculates duplicates and minimum"| node_duplicate
node_user -->|"opens tasks"| node_lab2_ui

click node_program "https://github.com/icesun39/lab1_dotnet/blob/master/lab1/Program.cs"
click node_tabulate_ui "https://github.com/icesun39/lab1_dotnet/blob/master/lab1/lab1/tabulate/Form_tabulate.cs"
click node_tabul "https://github.com/icesun39/lab1_dotnet/blob/master/lab1/lab1/tabulate/Tabul.cs"
click node_onedim_ui "https://github.com/icesun39/lab1_dotnet/blob/master/lab1/lab1/onedim_array/Form_onedimen_array.cs"
click node_free_drop "https://github.com/icesun39/lab1_dotnet/blob/master/lab1/lab1/onedim_array/CalcFreeDrop.cs"
click node_twodim_ui "https://github.com/icesun39/lab1_dotnet/blob/master/lab1/lab1/twodim_array/Form_twodimen_array.cs"
click node_duplicate "https://github.com/icesun39/lab1_dotnet/blob/master/lab1/lab1/twodim_array/findDuplicate.cs"
click node_lab2_ui "https://github.com/icesun39/lab1_dotnet/blob/master/lab1/lab2/lab2.cs"
click node_task1 "https://github.com/icesun39/lab1_dotnet/blob/master/lab1/lab2/lab2_task1_controller.cs"
click node_task2 "https://github.com/icesun39/lab1_dotnet/blob/master/lab1/lab2/lab2_task2_controller.cs"
click node_task3 "https://github.com/icesun39/lab1_dotnet/blob/master/lab1/lab2/lab2_task3_controller.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_program toneBlue
class node_tabulate_ui,node_tabul toneAmber
class node_onedim_ui,node_free_drop,node_twodim_ui,node_duplicate toneMint
class node_lab2_ui,node_task1,node_task2,node_task3 toneRose
class node_user toneIndigo
```

## Components

### Application shell

- [Application entry](https://github.com/icesun39/lab1_dotnet/blob/master/lab1/Program.cs): `lab1/Program.cs`

### Tabulation

- [Tabulation form](https://github.com/icesun39/lab1_dotnet/blob/master/lab1/lab1/tabulate/Form_tabulate.cs): `lab1/lab1/tabulate/Form_tabulate.cs`
- [Tabulation logic](https://github.com/icesun39/lab1_dotnet/blob/master/lab1/lab1/tabulate/Tabul.cs): `lab1/lab1/tabulate/Tabul.cs`

### Array exercises

- [One-dimensional form](https://github.com/icesun39/lab1_dotnet/blob/master/lab1/lab1/onedim_array/Form_onedimen_array.cs): `lab1/lab1/onedim_array/Form_onedimen_array.cs`
- [Free-fall calculation](https://github.com/icesun39/lab1_dotnet/blob/master/lab1/lab1/onedim_array/CalcFreeDrop.cs): `lab1/lab1/onedim_array/CalcFreeDrop.cs`
- [Two-dimensional form](https://github.com/icesun39/lab1_dotnet/blob/master/lab1/lab1/twodim_array/Form_twodimen_array.cs): `lab1/lab1/twodim_array/Form_twodimen_array.cs`
- [Matrix duplicate helper](https://github.com/icesun39/lab1_dotnet/blob/master/lab1/lab1/twodim_array/findDuplicate.cs): `lab1/lab1/twodim_array/findDuplicate.cs`

### Lab 2 calculations

- [Lab 2 form](https://github.com/icesun39/lab1_dotnet/blob/master/lab1/lab2/lab2.cs): `lab1/lab2/lab2.cs`
- [Divisibility count](https://github.com/icesun39/lab1_dotnet/blob/master/lab1/lab2/lab2_task1_controller.cs): `lab1/lab2/lab2_task1_controller.cs`
- [Range sum](https://github.com/icesun39/lab1_dotnet/blob/master/lab1/lab2/lab2_task2_controller.cs): `lab1/lab2/lab2_task2_controller.cs`
- [Trapezoid calculations](https://github.com/icesun39/lab1_dotnet/blob/master/lab1/lab2/lab2_task3_controller.cs): `lab1/lab2/lab2_task3_controller.cs`

### Other components

- **Learner**

## Connections

- Learner → Application entry: launches
- Application entry → Tabulation form: opens
- Learner → Tabulation form: uses
- Learner → One-dimensional form: opens exercise
- Learner → Two-dimensional form: opens exercise
- Two-dimensional form → Matrix duplicate helper: calculates duplicates and minimum
- Learner → Lab 2 form: opens tasks
