Nasze zadanie to pracowanie na pliku tekstowym i dalsza obróbka jednak nie wiem dlaczego podany program wyświetla błąd w linijce z ifstream p(sciezkaDoPliku). Pracuję w CodeBlocku bo nie mam dojścia do Visuala ale koleżance w Visualu działa. Czym to może być spowodowane?
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
float* OdczytajMacierzZPliku(std::string sciezkaDoPliku, int& szerokosc, int &wysokosc)
{
szerokosc = 0;
wysokosc = 0;
// otwieramy plik do odczytu ifstream == input
ifstream p(sciezkaDoPliku);
// sprawdzamy czy plik jest otwarty
if (!p.is_open())
return nullptr;
p >> szerokosc;
p >> wysokosc;
int rozmiarTablicy = szerokosc * wysokosc;
float* tab = new float[rozmiarTablicy];
for (int y = 0; y < wysokosc; ++y)
{
for (int x = 0; x < szerokosc; ++x)
{
// musimy przeliczyc indeks w tablicy
int indeks = y * szerokosc + x;
p >> tab[indeks];
}
}
// musimy zamknac plik
p.close();
return tab;
}
int main()
{
string sciezkaDoPliku = "macierz.txt";
int szerokosc = 0, wysokosc = 0;
float* tab = OdczytajMacierzZPliku(sciezkaDoPliku, szerokosc, wysokosc);
// w celach testowych wyswietl zawartosc na ekran
for (int y = 0; y < wysokosc; ++y)
{
for (int x = 0; x < szerokosc; ++x)
{
// musimy przeliczyc indeks w tablicy
int indeks = y * szerokosc + x;
cout << tab[indeks] << "\t";
}
cout << std::endl;
}
// prosze pamietac o usunieciu tablicy !!!
delete[] tab;
}