Muszę napisać program analizujący czy podany graf nieskierowany jest dwudzielny czy nie. Problem polega na tym, że program nie jest w stanie otworzyć podanych plików. Próbowałem zapisywać je w folderze projektu jak i w folderze z plikiem exe, ale nic to nie daje. Projekt jest podzielony na pliki Header, funkcje i main. Próbowałem również utworzyć projekt w jednym pliku, na nic sie to zdało. Przypuszczam, że jest to jakiś banalny błąd, aczkolwiek nie jestem w stanie go wychwycić... Program uruchamia się w konsoli w następujący sposób: graf_dwudzielny.exe -i Graf.txt -o Wynik.txt
Oto kod:
#include <iostream>
#include <list>
#include <vector>
#include <sstream>
#include <fstream>
#include <string>
#include <locale.h>;
using namespace std;
struct Parametry {
string Graf, Wynik;
};
bool Parsuj(Parametry& p, const vector<string>& params) {
if (!params.size())
return false;
for (int i = 0; i < params.size() - 1; ++i)
if (params[i] == "-i")
p.Graf = params[++i];
else if (params[i] == "-o")
p.Wynik = params[++i];
return p.Graf != "" && p.Wynik != "";
}
int przepisz(const string& Graf, const string& Wynik, vector<list<int>>& graf) {
ifstream in(Graf);
if (!in)
{
cerr << "Nie mozna otworzyc pliku " << Graf << "\n";
return 1;
}
ofstream out(Wynik);
if (!out)
{
cerr << "Nie mozna otworzyc pliku " << Wynik << "\n";
return 1;
}
}
int main(int argc, char* argv[]) {
setlocale(LC_ALL, "polish");
vector<list<int>> graf;
vector<int> połączone;
vector<string> parametry;
for (int i = 1; i < argc; ++i)
{
parametry.push_back(argv[i]);
}
Parametry p;
if (!Parsuj(p, parametry))
{
cerr << "Bledne parametry\n";
cerr << "Uzyj: " << argv[0] << " -i <plik wejściowy> -o <plik wyjściowy>\n";
return 1;
}
przepisz(p.Graf, p.Wynik, graf);
}