consolidate all repos to one for archive

This commit is contained in:
2025-01-28 13:46:42 +01:00
commit a6610fbc7a
5350 changed files with 2705721 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
.idea/*
cmake-build-debug/*
CMakeLists.txt

View File

@@ -0,0 +1 @@
Navodila v folder navodila

View File

@@ -0,0 +1,140 @@
#include <iostream>
#include <stack>
#include <fstream>
#define NEPREGLEDANO 0
#define V_OBDELAVI 1
#define RAZVITO 2
struct Vozlisce {
int predhodnik;
int dolzina;
int status;
int indeks;
};
void ISKANJE_V_GLOBINO(int s, int size, const int G[], Vozlisce vozl[]) {
std::stack<int> stack;
for (int i = 0; i < size; i++) {
vozl[i].status = NEPREGLEDANO;
vozl[i].dolzina = -1;
vozl[i].predhodnik = -1;
vozl[i].indeks = i;
}
vozl[s].status = V_OBDELAVI;
vozl[s].dolzina = 0;
vozl[s].predhodnik = -1;
stack.push(s); // vstavi na vrh sklada
while (!stack.empty()) {
int v = stack.top();//vzemi vozlišče iz vrha sklada
stack.pop();
for (int i = 0; i < size; ++i) {
if (G[size * v + i] == 1) {
if (vozl[i].status == NEPREGLEDANO) {
vozl[i].status = V_OBDELAVI;
vozl[i].dolzina = vozl[v].dolzina + 1;
vozl[i].predhodnik = vozl[v].indeks;
stack.push(i); // vstavi na vrh sklada
}
}
}
vozl[v].status = RAZVITO;
}
}
void IZPIS_POTI(int iskano, Vozlisce vozl[]) {
if (vozl[iskano].predhodnik == -1) {
std::cout << vozl[iskano].indeks << " ";
return;
} else {
IZPIS_POTI(vozl[iskano].predhodnik, vozl);
std::cout << vozl[iskano].indeks << " ";
}
}
void IZPIS_SEZNAMA(Vozlisce vozl[], int size) {
for (int i = 0; i < size; i++) {
std::cout << "indeks: " << vozl[i].indeks << "\n";
std::cout << "predhodnik: " << vozl[i].predhodnik << "\n";
std::cout << "dolzina: " << vozl[i].dolzina << "\n\n";
}
}
void menu() {
std::cout << "Iskanje v globino:\n"
"1) Preberi graf\n"
"2) Pozeni iskanje iz vozlisca s\n"
"3) Izpis seznama vozlisc in njihovih podatkov\n"
"4) Izpis poti med vozliscema s in d\n"
"0) Konec\n"
"Vasa izbira: ";
}
int main() {
std::cout << "Hello, World!" << std::endl;
Vozlisce *vozl;
int *G;
int stevilo_vozlisc;
int stevilo_povezav;
std::ifstream f("graf_big.txt");
f >> stevilo_vozlisc;
f >> stevilo_povezav;
vozl = new Vozlisce[stevilo_vozlisc];
G = new int[stevilo_vozlisc * stevilo_vozlisc];
for (int i = 0; i < stevilo_povezav; ++i) {
int v1, v2, cena;
f >> v1 >> v2 >> cena;
v1 = v1 - 1;
v2 = v2 - 1;
G[stevilo_vozlisc * v1 + v2] = 1;
G[stevilo_vozlisc * v2 + v1] = 1;
}
bool running = true;
int selection;
int izbira;
do {
menu();
std::cin >> selection;
std::cout << std::endl;
switch (selection) {
case 1:
std::cout << "Prebrano\n"
"St.vozlisc: " << stevilo_vozlisc << " St.povezav: " << stevilo_povezav << "\n";
break;
case 2:
std::cout << "Izberi vozlisce: ";
std::cin >> izbira;
ISKANJE_V_GLOBINO(izbira, stevilo_vozlisc, G, vozl);
break;
case 3:
IZPIS_SEZNAMA(vozl, stevilo_vozlisc);
break;
case 4:
std::cout << "Izberi vozlisce: ";
std::cin >> izbira;
IZPIS_POTI(izbira, vozl);
break;
case 0:
running = false;
break;
default:
std::cout << "Wrong selection!\n";
break;
}
std::cout << std::endl;
} while (running);
delete[] vozl;
delete[] G;
return 0;
}

View File

@@ -0,0 +1,19 @@
#include <fstream>
using namespace std;
int main(){
....
ifstream f("graf.txt"); // odpremo datoteko (v isti mapi, kot je projekt oziroma exe datoteka)
// če so težave z branjem, zapišite absolutno pot, npr: ifstream f("c:/graf.txt");
f >> stevilo_vozlisc; // v prvi vrstici datoteke imamo stevilo vozlisc
f >> stevilo_povezav; // v drugi vrstici datoteke imamo stevilo povezav oziroma vrstic v nadaljevnaju datoteke
ustvari matriko sosednosti C (2D polje); // priporočamo dinamično alokacijo
ustvari polje V in dodaj vozlišča v V, kjer je ime=indeks;
for(i to stevilo_povezav....){
f >> v1 >> v2 >> cena; // v vsaki vrstici beremo 3 podatke (stevilke)
v matriki C označi vozlišči v1 in v2 kot soseda
}
...
}