# bpoltosi/projetosc architecture

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

- Interactive diagram: https://gitdiagram.com/bpoltosi/projetosc
- Repository: https://github.com/bpoltosi/projetosc

## Overview

ProjetosC is a collection of standalone C study exercises, not one integrated application. The user workflow is to choose and compile an individual program, provide input where it prompts, and observe its calculated or transformed output. Directory themes cover matrices, strings, pointers, and general logic, with additional random exercises and exam practice. `utils.c` provides reusable string operations, but the supplied source evidence does not show exercises calling it; connections between the utility and exercises are therefore omitted.

Main entry points: [`Prova/exercicio2.c`](https://github.com/bpoltosi/projetosc/blob/main/Prova/exercicio2.c) (Matrix submatrix), [`ListaMatrizes1/matriz3v2.c`](https://github.com/bpoltosi/projetosc/blob/main/ListaMatrizes1/matriz3v2.c) (Row/column sums), [`ListaMatrizes1/matriz9.c`](https://github.com/bpoltosi/projetosc/blob/main/ListaMatrizes1/matriz9.c) (Element classification), [`ListaStrings/Exercicio6.c`](https://github.com/bpoltosi/projetosc/blob/main/ListaStrings/Exercicio6.c) (Interleave strings)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_matrix["Matrix exercises"]
  node_matrix1["Matrix transformations"]
  node_matrix2["Matrix operations"]
  node_matrixexam["Matrix submatrix<br/>[exercicio2.c]"]
  node_matrixsums["Row/column sums<br/>[matriz3v2.c]"]
  node_matrixcounts["Element classification<br/>[matriz9.c]"]
  node_matrixmatch["Matrix membership<br/>[matriz4.c]"]
end

subgraph group_strings["String exercises"]
  node_stringlist["String tasks"]
  node_stringpractice["String practice"]
  node_interleave["Interleave strings<br/>[Exercicio6.c]"]
  node_palindrome["Palindrome and reverse<br/>[Exercicio6.c]"]
  node_utilities["String utilities<br/>[utils.c]"]
end

subgraph group_pointers["Pointer exercises"]
  node_pointerlist["Pointer exercises"]
  node_pointerpractice["Pointer practice"]
  node_pointerstats["Pointer vector stats<br/>[ponteiros3456.c]"]
end

subgraph group_practice["Logic practice"]
  node_general["Random exercises"]
  node_remainder["Remainder search<br/>[calculoResto.c]"]
  node_exampractice["Exam preparation"]
  node_examvector["Vector analysis<br/>[Exercicio1.c]"]
  node_exam["Exam exercises"]
end

node_learner(("Learner"))
node_compile["Compile one program"]

node_learner -->|"chooses program"| node_compile
node_compile -->|"builds and runs"| node_matrix1
node_compile -->|"builds and runs"| node_matrix2
node_compile -->|"builds and runs"| node_matrixexam
node_compile -->|"builds and runs"| node_stringlist
node_compile -->|"builds and runs"| node_stringpractice
node_compile -->|"builds and runs"| node_pointerlist
node_compile -->|"builds and runs"| node_pointerpractice
node_compile -->|"builds and runs"| node_general
node_compile -->|"builds and runs"| node_exampractice
node_compile -->|"builds and runs"| node_exam
node_learner -->|"enters values"| node_matrixsums
node_matrixsums -->|"prints sums"| node_learner
node_learner -->|"enters values"| node_matrixcounts
node_matrixcounts -->|"prints classifications"| node_learner
node_matrixmatch -->|"prints membership matrix"| node_learner
node_learner -->|"enters dimensions and values"| node_matrixexam
node_matrixexam -->|"prints matrices"| node_learner
node_learner -->|"enters strings"| node_interleave
node_interleave -->|"prints interleaving"| node_learner
node_learner -->|"enters word"| node_palindrome
node_palindrome -->|"prints result"| node_learner
node_learner -->|"enters range and remainder"| node_remainder
node_remainder -->|"prints matches"| node_learner
node_learner -->|"enters vector size and target"| node_pointerstats
node_pointerstats -->|"prints vector statistics"| node_learner
node_examvector -->|"prints vector analysis"| node_learner

click node_matrix1 "https://github.com/bpoltosi/projetosc/tree/main/ListaMatrizes1"
click node_matrix2 "https://github.com/bpoltosi/projetosc/tree/main/ListaMatrizes2"
click node_matrixexam "https://github.com/bpoltosi/projetosc/blob/main/Prova/exercicio2.c"
click node_matrixsums "https://github.com/bpoltosi/projetosc/blob/main/ListaMatrizes1/matriz3v2.c"
click node_matrixcounts "https://github.com/bpoltosi/projetosc/blob/main/ListaMatrizes1/matriz9.c"
click node_matrixmatch "https://github.com/bpoltosi/projetosc/blob/main/ListaMatrizes2/matriz4.c"
click node_stringlist "https://github.com/bpoltosi/projetosc/tree/main/ListaStrings"
click node_stringpractice "https://github.com/bpoltosi/projetosc/tree/main/ExerciciosStrings"
click node_interleave "https://github.com/bpoltosi/projetosc/blob/main/ListaStrings/Exercicio6.c"
click node_palindrome "https://github.com/bpoltosi/projetosc/blob/main/ExerciciosStrings/Exercicio6.c"
click node_utilities "https://github.com/bpoltosi/projetosc/blob/main/utils.c"
click node_pointerlist "https://github.com/bpoltosi/projetosc/tree/main/ListaPonteiros"
click node_pointerpractice "https://github.com/bpoltosi/projetosc/tree/main/ExercicioPonteiros"
click node_pointerstats "https://github.com/bpoltosi/projetosc/blob/main/ListaPonteiros/ponteiros3456.c"
click node_general "https://github.com/bpoltosi/projetosc/tree/main/ExerciciosAleatorios"
click node_remainder "https://github.com/bpoltosi/projetosc/blob/main/ExerciciosAleatorios/calculoResto.c"
click node_exampractice "https://github.com/bpoltosi/projetosc/tree/main/ListaPreparatoriaProva"
click node_examvector "https://github.com/bpoltosi/projetosc/blob/main/ListaPreparatoriaProva/Exercicio1.c"
click node_exam "https://github.com/bpoltosi/projetosc/tree/main/Prova"

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_matrix1,node_matrix2,node_matrixexam,node_matrixsums,node_matrixcounts,node_matrixmatch toneBlue
class node_stringlist,node_stringpractice,node_interleave,node_palindrome,node_utilities toneAmber
class node_pointerlist,node_pointerpractice,node_pointerstats toneMint
class node_general,node_remainder,node_exampractice,node_examvector,node_exam toneRose
class node_learner,node_compile toneIndigo
```

## Components

### Matrix exercises

- [Matrix transformations](https://github.com/bpoltosi/projetosc/tree/main/ListaMatrizes1): `ListaMatrizes1`
- [Matrix operations](https://github.com/bpoltosi/projetosc/tree/main/ListaMatrizes2): `ListaMatrizes2`
- [Matrix submatrix](https://github.com/bpoltosi/projetosc/blob/main/Prova/exercicio2.c): `Prova/exercicio2.c`
- [Row/column sums](https://github.com/bpoltosi/projetosc/blob/main/ListaMatrizes1/matriz3v2.c): `ListaMatrizes1/matriz3v2.c`
- [Element classification](https://github.com/bpoltosi/projetosc/blob/main/ListaMatrizes1/matriz9.c): `ListaMatrizes1/matriz9.c`
- [Matrix membership](https://github.com/bpoltosi/projetosc/blob/main/ListaMatrizes2/matriz4.c): `ListaMatrizes2/matriz4.c`

### String exercises

- [String tasks](https://github.com/bpoltosi/projetosc/tree/main/ListaStrings): `ListaStrings`
- [String practice](https://github.com/bpoltosi/projetosc/tree/main/ExerciciosStrings): `ExerciciosStrings`
- [Interleave strings](https://github.com/bpoltosi/projetosc/blob/main/ListaStrings/Exercicio6.c): `ListaStrings/Exercicio6.c`
- [Palindrome and reverse](https://github.com/bpoltosi/projetosc/blob/main/ExerciciosStrings/Exercicio6.c): `ExerciciosStrings/Exercicio6.c`
- [String utilities](https://github.com/bpoltosi/projetosc/blob/main/utils.c): `utils.c`

### Pointer exercises

- [Pointer exercises](https://github.com/bpoltosi/projetosc/tree/main/ListaPonteiros): `ListaPonteiros`
- [Pointer practice](https://github.com/bpoltosi/projetosc/tree/main/ExercicioPonteiros): `ExercicioPonteiros`
- [Pointer vector stats](https://github.com/bpoltosi/projetosc/blob/main/ListaPonteiros/ponteiros3456.c): `ListaPonteiros/ponteiros3456.c`

### Logic practice

- [Random exercises](https://github.com/bpoltosi/projetosc/tree/main/ExerciciosAleatorios): `ExerciciosAleatorios`
- [Remainder search](https://github.com/bpoltosi/projetosc/blob/main/ExerciciosAleatorios/calculoResto.c): `ExerciciosAleatorios/calculoResto.c`
- [Exam preparation](https://github.com/bpoltosi/projetosc/tree/main/ListaPreparatoriaProva): `ListaPreparatoriaProva`
- [Vector analysis](https://github.com/bpoltosi/projetosc/blob/main/ListaPreparatoriaProva/Exercicio1.c): `ListaPreparatoriaProva/Exercicio1.c`
- [Exam exercises](https://github.com/bpoltosi/projetosc/tree/main/Prova): `Prova`

### Other components

- **Learner**
- **Compile one program**

## Connections

- Learner → Compile one program: chooses program (evidence: `README.md`)
- Compile one program → Matrix transformations: builds and runs (evidence: `README.md`)
- Compile one program → Matrix operations: builds and runs (evidence: `README.md`)
- Compile one program → Matrix submatrix: builds and runs (evidence: `README.md`)
- Compile one program → String tasks: builds and runs (evidence: `README.md`)
- Compile one program → String practice: builds and runs (evidence: `README.md`)
- Compile one program → Pointer exercises: builds and runs (evidence: `README.md`)
- Compile one program → Pointer practice: builds and runs (evidence: `README.md`)
- Compile one program → Random exercises: builds and runs (evidence: `README.md`)
- Compile one program → Exam preparation: builds and runs (evidence: `README.md`)
- Compile one program → Exam exercises: builds and runs (evidence: `README.md`)
- Learner → Row/column sums: enters values (evidence: `ListaMatrizes1/matriz3v2.c`)
- Row/column sums → Learner: prints sums (evidence: `ListaMatrizes1/matriz3v2.c`)
- Learner → Element classification: enters values (evidence: `ListaMatrizes1/matriz9.c`)
- Element classification → Learner: prints classifications (evidence: `ListaMatrizes1/matriz9.c`)
- Matrix membership → Learner: prints membership matrix (evidence: `ListaMatrizes2/matriz4.c`)
- Learner → Matrix submatrix: enters dimensions and values (evidence: `Prova/exercicio2.c`)
- Matrix submatrix → Learner: prints matrices (evidence: `Prova/exercicio2.c`)
- Learner → Interleave strings: enters strings (evidence: `ListaStrings/Exercicio6.c`)
- Interleave strings → Learner: prints interleaving (evidence: `ListaStrings/Exercicio6.c`)
- Learner → Palindrome and reverse: enters word (evidence: `ExerciciosStrings/Exercicio6.c`)
- Palindrome and reverse → Learner: prints result (evidence: `ExerciciosStrings/Exercicio6.c`)
- Learner → Remainder search: enters range and remainder (evidence: `ExerciciosAleatorios/calculoResto.c`)
- Remainder search → Learner: prints matches (evidence: `ExerciciosAleatorios/calculoResto.c`)
- Learner → Pointer vector stats: enters vector size and target (evidence: `ListaPonteiros/ponteiros3456.c`)
- Pointer vector stats → Learner: prints vector statistics (evidence: `ListaPonteiros/ponteiros3456.c`)
- Vector analysis → Learner: prints vector analysis (evidence: `ListaPreparatoriaProva/Exercicio1.c`)
