Mam problem z uruchamianiem kodu na Ubuntu, wyrzuca błąd "Naruszenie ochrony pamięci (zrzut pamięci)". Program działa na Windowsie, ale zależy mi na tym żeby na Ubuntu też się uruchamiał.
#include <iostream>
#include <fstream>
using namespace std;
struct SObiektyw {
string rodzaj;
float przeslona;
float ogniskowa;
};
struct SAparat {
string nazwa;
int ilosc;
SObiektyw * obiektyw;
};
void wczytaj( SAparat & aparaty ) {
ifstream plik;
plik.open( "dane.txt" );
plik >> aparaty.nazwa >> aparaty.ilosc;
if( aparaty.ilosc > 0 ) {
aparaty.obiektyw = new SObiektyw[ aparaty.ilosc ];
}
for( int i = 0; i < aparaty.ilosc; ++i ) {
plik >> aparaty.obiektyw[ i ].rodzaj >> aparaty.obiektyw[ i ].przeslona >> aparaty.obiektyw[ i ].ogniskowa;
}
}
void wypisz( SAparat & aparaty ) {
ofstream plik2;
plik2.open( "dane2.txt" );
plik2 << aparaty.nazwa << aparaty.ilosc;
for( int i = 0; i < aparaty.ilosc; ++i ) {
plik2 << aparaty.obiektyw[ i ].rodzaj << aparaty.obiektyw[ i ].przeslona << aparaty.obiektyw[ i ].ogniskowa;
}
}
int zlicz( SAparat & aparaty ) {
int licznik = 0;
for( int i = 0; i < aparaty.ilosc; ++i ) {
if( aparaty.obiektyw[ i ].ogniskowa > 50 ) {
licznik++;
}
}
return licznik;
}
void usun( SAparat & aparaty ) {
delete[ ] aparaty.obiektyw;
}
int main() {
SAparat aparaty;
wczytaj( aparaty );
wypisz( aparaty );
cout << zlicz( aparaty );
usun( aparaty );
return 0;
}